@kepler.gl/constants 3.3.0-alpha.5 → 3.3.0-alpha.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (44) hide show
  1. package/dist/cjs/annotation.js +45 -0
  2. package/dist/cjs/color-palettes.js +461 -0
  3. package/dist/cjs/colors-by-theme.js +519 -0
  4. package/dist/cjs/dataset.js +82 -0
  5. package/dist/cjs/default-settings.js +1737 -0
  6. package/dist/cjs/gpu-parameters.js +125 -0
  7. package/dist/cjs/index.js +149 -0
  8. package/dist/cjs/keyevent.js +26 -0
  9. package/dist/cjs/layers.js +606 -0
  10. package/dist/{plot.js → cjs/plot.js} +1 -1
  11. package/dist/cjs/time.js +194 -0
  12. package/dist/cjs/tooltip.js +221 -0
  13. package/dist/cjs/user-feedbacks.js +15 -0
  14. package/dist/cjs/user-guides.js +19 -0
  15. package/dist/default-settings.d.ts +16 -0
  16. package/dist/esm/annotation.js +38 -0
  17. package/dist/esm/color-palettes.js +453 -0
  18. package/dist/esm/colors-by-theme.js +513 -0
  19. package/dist/esm/dataset.js +80 -0
  20. package/dist/esm/default-settings.js +1731 -0
  21. package/dist/esm/gpu-parameters.js +119 -0
  22. package/dist/esm/index.js +18 -0
  23. package/dist/esm/keyevent.js +19 -0
  24. package/dist/esm/layers.js +599 -0
  25. package/dist/esm/plot.js +9 -0
  26. package/dist/esm/time.js +190 -0
  27. package/dist/esm/tooltip.js +215 -0
  28. package/dist/esm/user-feedbacks.js +9 -0
  29. package/dist/esm/user-guides.js +13 -0
  30. package/dist/layers.d.ts +1 -0
  31. package/package.json +17 -8
  32. package/dist/annotation.js +0 -45
  33. package/dist/color-palettes.js +0 -461
  34. package/dist/colors-by-theme.js +0 -519
  35. package/dist/dataset.js +0 -82
  36. package/dist/default-settings.js +0 -1729
  37. package/dist/gpu-parameters.js +0 -125
  38. package/dist/index.js +0 -149
  39. package/dist/keyevent.js +0 -26
  40. package/dist/layers.js +0 -605
  41. package/dist/time.js +0 -194
  42. package/dist/tooltip.js +0 -221
  43. package/dist/user-feedbacks.js +0 -15
  44. package/dist/user-guides.js +0 -19
@@ -0,0 +1,1737 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ 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.GLOBE_SUPPORTED_LAYERS = exports.GLOBE_MIN_ZOOM = exports.GLOBE_MAX_ZOOM = exports.GLOBE_MAX_LATITUDE = exports.GEOJSON_FIELDS = exports.GEOCODER_LAYER_ID = exports.GEOCODER_ICON_SIZE = exports.GEOCODER_ICON_COLOR = exports.GEOCODER_GEO_OFFSET = exports.GEOCODER_DATASET_NAME = exports.GEOARROW_METADATA_KEY = exports.GEOARROW_EXTENSIONS = exports.FourByThreeRatioOption = exports.FPS = exports.FILTER_VIEW_TYPES = exports.FILTER_TYPES = exports.FIELD_TYPE_DISPLAY = exports.FIELD_OPTS = exports.FIELD_COLORS = exports.EXPORT_VIDEO_ID = 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.EDITOR_DRAW_MODES = exports.DISTANCE_FOG_TYPE = 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_NO_BASEMAP_STYLE = exports.DEFAULT_NOTIFICATION_TYPES = exports.DEFAULT_NOTIFICATION_TOPICS = exports.DEFAULT_NOTIFICATION_MESSAGE = exports.DEFAULT_MAP_STYLES = exports.DEFAULT_MAPLIBRE_STYLES = exports.DEFAULT_MAPBOX_STYLES = exports.DEFAULT_MAPBOX_SATELITE_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_GLOBE_CONFIG = exports.DEFAULT_FILTER_VIEW_TYPE = exports.DEFAULT_FEATURE_FLAGS = exports.DEFAULT_BLDG_COLOR = exports.DEFAULT_BASE_MAP_STYLE = exports.DEFAULT_BACKGROUND_COLOR = exports.DEFAULT_AGGREGATION = exports.DATA_TABLE_ID = exports.DATASET_FORMATS = exports.CustomRatioOption = exports.CUSTOM_SCENEGRAPH_MODEL_ID = 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_LAYER_SCENEGRAPH_MODELS = 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.SURFACE_FOG_TYPE = 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.Resolution2560x1440Option = exports.Resolution1920x1440Option = exports.Resolution1920x1080Option = exports.Resolution1600x900Option = exports.Resolution1600x1200Option = exports.Resolution1280x960Option = exports.Resolution1280x720Option = exports.Resolution1024x768Option = exports.RESOLUTIONS = exports.PROJECTED_PIXEL_SIZE_MULTIPLIER = exports.POSTPROCESSING_EFFECTS = exports.PLOT_TYPES = 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.MapViewMode = exports.MapSplitMode = exports.MAX_GPU_FILTERS = exports.MAX_DEFAULT_TOOLTIPS = exports.MAP_THUMBNAIL_DIMENSION = exports.MAP_LIB_OPTIONS = exports.MAP_INFO_CHARACTER = exports.MAP_CONTROLS = exports.MAPBOX_MAX_PITCH = exports.LOADING_METHODS = exports.LOADERS_CDN_VERSION = exports.LOADERS_CDN_URL = exports.LIGHT_AND_SHADOW_EFFECT_TIME_MODES = exports.LIGHT_AND_SHADOW_EFFECT = void 0;
9
+ exports.getHTMLMapModeTileUrl = getHTMLMapModeTileUrl;
10
+ exports.ordinalFieldScaleFunctions = exports.ordinalFieldAggrScaleFunctions = exports.notSupportedScaleOpts = exports.notSupportAggrOpts = exports.linearFieldScaleFunctions = exports.linearFieldAggrScaleFunctions = exports.getLoaderOptions = 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 = "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: export video modal
79
+ * @constant
80
+ * @type {string}
81
+ * @public
82
+ */
83
+ var EXPORT_VIDEO_ID = exports.EXPORT_VIDEO_ID = 'exportVideo';
84
+ /**
85
+ * Modal id: save map modal
86
+ * @constant
87
+ * @type {string}
88
+ * @public
89
+ */
90
+ var SAVE_MAP_ID = exports.SAVE_MAP_ID = 'saveMap';
91
+ /**
92
+ * Modal id: confirm to overwrite saved map
93
+ * @constant
94
+ * @type {string}
95
+ * @public
96
+ */
97
+ var OVERWRITE_MAP_ID = exports.OVERWRITE_MAP_ID = 'overwriteMap';
98
+ /**
99
+ * Modal id: share map url modal
100
+ * @constant
101
+ * @type {string}
102
+ * @public
103
+ */
104
+ var SHARE_MAP_ID = exports.SHARE_MAP_ID = 'shareMap';
105
+ var KEPLER_GL_NAME = exports.KEPLER_GL_NAME = 'kepler.gl';
106
+
107
+ // __PACKAGE_VERSION__ is automatically injected by Babel/Esbuild during the build process
108
+ // Since we are injecting this during the build process with babel
109
+ // while developing VERSION is not defined, we capture the exception and return
110
+ // an empty string which will allow us to retrieve the latest umd version
111
+ var KEPLER_GL_VERSION = exports.KEPLER_GL_VERSION = "3.3.0-alpha.7";
112
+ var KEPLER_GL_WEBSITE = exports.KEPLER_GL_WEBSITE = 'http://kepler.gl/';
113
+ var DIMENSIONS = exports.DIMENSIONS = {
114
+ sidePanel: {
115
+ width: 300,
116
+ margin: {
117
+ top: 12,
118
+ left: 12,
119
+ bottom: 12,
120
+ right: 20
121
+ },
122
+ headerHeight: 96
123
+ },
124
+ mapControl: {
125
+ width: 184,
126
+ padding: 12,
127
+ mapLegend: {
128
+ pinned: {
129
+ bottom: 22,
130
+ right: 12
131
+ }
132
+ }
133
+ }
134
+ };
135
+
136
+ /**
137
+ * Theme name that can be passed to `KeplerGl` `prop.theme`.
138
+ * Available themes are `THEME.light` and `THEME.dark`. Default theme is `THEME.dark`
139
+ * @constant
140
+ * @type {object}
141
+ * @public
142
+ * @example
143
+ * ```js
144
+ * const Map = () => <KeplerGl theme={THEME.light} id="map"/>
145
+ * ```
146
+ */
147
+ var THEME = exports.THEME = (0, _keymirror["default"])({
148
+ light: null,
149
+ dark: null,
150
+ base: null
151
+ });
152
+ var SIDEBAR_PANELS = exports.SIDEBAR_PANELS = [{
153
+ id: 'layer',
154
+ label: 'sidebar.panels.layer',
155
+ onClick: null
156
+ }, {
157
+ id: 'filter',
158
+ label: 'sidebar.panels.filter',
159
+ onClick: null
160
+ }, {
161
+ id: 'interaction',
162
+ label: 'sidebar.panels.interaction',
163
+ onClick: null
164
+ }, {
165
+ id: 'map',
166
+ label: 'sidebar.panels.basemap',
167
+ onClick: null
168
+ }];
169
+ var PANEL_VIEW_TOGGLES = exports.PANEL_VIEW_TOGGLES = (0, _keymirror["default"])({
170
+ list: null,
171
+ byDataset: null
172
+ });
173
+
174
+ // backward compatibility
175
+ var PANELS = exports.PANELS = SIDEBAR_PANELS;
176
+
177
+ // MAP STYLES
178
+
179
+ var DEFAULT_BLDG_COLOR = exports.DEFAULT_BLDG_COLOR = '#D1CEC7';
180
+ var DEFAULT_BACKGROUND_COLOR = exports.DEFAULT_BACKGROUND_COLOR = '#000000';
181
+
182
+ // assists in identifying basemap background layers when auto-determining the backgroundColor
183
+ var BASE_MAP_BACKGROUND_LAYER_IDS = exports.BASE_MAP_BACKGROUND_LAYER_IDS = ['background', 'bg', 'land', 'water'];
184
+ var BACKGROUND_LAYER_GROUP_SLUG = exports.BACKGROUND_LAYER_GROUP_SLUG = 'Background';
185
+ var THREE_D_BUILDING_LAYER_GROUP_SLUG = exports.THREE_D_BUILDING_LAYER_GROUP_SLUG = '3d building';
186
+ var BACKGROUND_LAYER_GROUP = exports.BACKGROUND_LAYER_GROUP = {
187
+ slug: BACKGROUND_LAYER_GROUP_SLUG,
188
+ filter: function filter() {
189
+ return false;
190
+ },
191
+ defaultVisibility: false,
192
+ isVisibilityToggleAvailable: false,
193
+ isMoveToTopAvailable: false,
194
+ isColorPickerAvailable: true
195
+ };
196
+ var DEFAULT_LAYER_GROUPS = exports.DEFAULT_LAYER_GROUPS = [{
197
+ slug: 'label',
198
+ filter: function filter(_ref) {
199
+ var id = _ref.id,
200
+ type = _ref.type;
201
+ return id.match(/(?=(label|place-|poi-))/) || (type === null || type === void 0 ? void 0 : type.match(/(?=(symbol))/));
202
+ },
203
+ defaultVisibility: true,
204
+ isVisibilityToggleAvailable: true,
205
+ isMoveToTopAvailable: true,
206
+ isColorPickerAvailable: false
207
+ }, {
208
+ slug: 'road',
209
+ filter: function filter(_ref2) {
210
+ var id = _ref2.id;
211
+ return id.match(/(?=(road|railway|tunnel|street|bridge))(?!.*label)/);
212
+ },
213
+ defaultVisibility: true,
214
+ isVisibilityToggleAvailable: true,
215
+ isMoveToTopAvailable: true,
216
+ isColorPickerAvailable: false
217
+ }, {
218
+ slug: 'border',
219
+ filter: function filter(_ref3) {
220
+ var id = _ref3.id;
221
+ return id.match(/border|boundaries|boundary/);
222
+ },
223
+ defaultVisibility: false,
224
+ isVisibilityToggleAvailable: true,
225
+ isMoveToTopAvailable: true,
226
+ isColorPickerAvailable: false
227
+ }, {
228
+ slug: 'building',
229
+ filter: function filter(_ref4) {
230
+ var id = _ref4.id;
231
+ return id.match(/building/);
232
+ },
233
+ defaultVisibility: true,
234
+ isVisibilityToggleAvailable: true,
235
+ isMoveToTopAvailable: true,
236
+ isColorPickerAvailable: false
237
+ }, {
238
+ slug: 'water',
239
+ filter: function filter(_ref5) {
240
+ var id = _ref5.id;
241
+ return id.match(/(?=(water|stream|ferry))/);
242
+ },
243
+ defaultVisibility: true,
244
+ isVisibilityToggleAvailable: true,
245
+ isMoveToTopAvailable: true,
246
+ isColorPickerAvailable: false
247
+ }, {
248
+ slug: 'land',
249
+ filter: function filter(_ref6) {
250
+ var id = _ref6.id;
251
+ return id.match(/(?=(parks|landcover|industrial|sand|hillshade))/);
252
+ },
253
+ defaultVisibility: true,
254
+ isVisibilityToggleAvailable: true,
255
+ isMoveToTopAvailable: true,
256
+ isColorPickerAvailable: false
257
+ }, {
258
+ slug: THREE_D_BUILDING_LAYER_GROUP_SLUG,
259
+ filter: function filter() {
260
+ return false;
261
+ },
262
+ defaultVisibility: false,
263
+ isVisibilityToggleAvailable: true,
264
+ isMoveToTopAvailable: true,
265
+ isColorPickerAvailable: true
266
+ }];
267
+ var BASE_MAP_COLOR_MODES = exports.BASE_MAP_COLOR_MODES = (0, _keymirror["default"])({
268
+ NONE: null,
269
+ DARK: null,
270
+ LIGHT: null
271
+ });
272
+ var NO_MAP_ID = exports.NO_MAP_ID = 'no_map';
273
+
274
+ // Fallback style to use when styles are being fetched, or when
275
+ // a style fails to fetch
276
+ var EMPTY_MAPBOX_STYLE = exports.EMPTY_MAPBOX_STYLE = {
277
+ version: 8,
278
+ sources: {},
279
+ layers: []
280
+ };
281
+ var MAP_LIB_OPTIONS = exports.MAP_LIB_OPTIONS = {
282
+ MAPBOX: 'mapbox',
283
+ MAPLIBRE: 'maplibre'
284
+ };
285
+
286
+ /** Mapbox GL JS does not support pitch above 60 degrees */
287
+ var MAPBOX_MAX_PITCH = exports.MAPBOX_MAX_PITCH = 60;
288
+ var NO_BASEMAP_ICON = exports.NO_BASEMAP_ICON = "".concat(BASEMAP_ICON_PREFIX, "/NO_BASEMAP.png");
289
+ var DEFAULT_BASE_MAP_STYLE = exports.DEFAULT_BASE_MAP_STYLE = 'dark-matter';
290
+ var DEFAULT_NO_BASEMAP_STYLE = exports.DEFAULT_NO_BASEMAP_STYLE = {
291
+ id: NO_MAP_ID,
292
+ label: 'No Basemap',
293
+ url: '',
294
+ icon: NO_BASEMAP_ICON,
295
+ layerGroups: [BACKGROUND_LAYER_GROUP],
296
+ colorMode: BASE_MAP_COLOR_MODES.NONE,
297
+ style: EMPTY_MAPBOX_STYLE
298
+ };
299
+ var DEFAULT_MAPBOX_STYLES = exports.DEFAULT_MAPBOX_STYLES = [{
300
+ id: 'dark',
301
+ label: 'Dark',
302
+ url: 'mapbox://styles/uberdata/cjoqbbf6l9k302sl96tyvka09',
303
+ icon: "".concat(BASEMAP_ICON_PREFIX, "/UBER_DARK_V2.png"),
304
+ layerGroups: DEFAULT_LAYER_GROUPS,
305
+ colorMode: BASE_MAP_COLOR_MODES.DARK,
306
+ complimentaryStyleId: 'light'
307
+ }, {
308
+ id: 'light',
309
+ label: 'Light',
310
+ url: 'mapbox://styles/uberdata/cjoqb9j339k1f2sl9t5ic5bn4',
311
+ icon: "".concat(BASEMAP_ICON_PREFIX, "/UBER_LIGHT_V2.png"),
312
+ layerGroups: DEFAULT_LAYER_GROUPS,
313
+ colorMode: BASE_MAP_COLOR_MODES.LIGHT,
314
+ complimentaryStyleId: 'dark'
315
+ }, {
316
+ id: 'muted',
317
+ label: 'Muted Light',
318
+ url: 'mapbox://styles/uberdata/cjfyl03kp1tul2smf5v2tbdd4',
319
+ icon: "".concat(BASEMAP_ICON_PREFIX, "/UBER_MUTED_LIGHT.png"),
320
+ layerGroups: DEFAULT_LAYER_GROUPS,
321
+ colorMode: BASE_MAP_COLOR_MODES.LIGHT,
322
+ complimentaryStyleId: 'muted_night'
323
+ }, {
324
+ id: 'muted_night',
325
+ label: 'Muted Night',
326
+ url: 'mapbox://styles/uberdata/cjfxhlikmaj1b2soyzevnywgs',
327
+ icon: "".concat(BASEMAP_ICON_PREFIX, "/UBER_MUTED_NIGHT.png"),
328
+ layerGroups: DEFAULT_LAYER_GROUPS,
329
+ colorMode: BASE_MAP_COLOR_MODES.DARK,
330
+ complimentaryStyleId: 'muted'
331
+ }];
332
+ var DEFAULT_MAPBOX_SATELITE_STYLES = exports.DEFAULT_MAPBOX_SATELITE_STYLES = [{
333
+ id: 'satellite',
334
+ label: 'Satellite with streets',
335
+ url: "mapbox://styles/mapbox/satellite-streets-v11",
336
+ icon: "".concat(BASEMAP_ICON_PREFIX, "/UBER_SATELLITE.png"),
337
+ layerGroups: DEFAULT_LAYER_GROUPS,
338
+ colorMode: BASE_MAP_COLOR_MODES.NONE
339
+ }];
340
+ var DEFAULT_MAPLIBRE_STYLES = exports.DEFAULT_MAPLIBRE_STYLES = [{
341
+ id: 'dark-matter',
342
+ label: 'DarkMatter',
343
+ url: 'https://basemaps.cartocdn.com/gl/dark-matter-gl-style/style.json',
344
+ icon: "".concat(BASEMAP_ICON_PREFIX, "/DARKMATTER.png"),
345
+ layerGroups: DEFAULT_LAYER_GROUPS,
346
+ colorMode: BASE_MAP_COLOR_MODES.DARK,
347
+ complimentaryStyleId: 'positron'
348
+ }, {
349
+ id: 'positron',
350
+ label: 'Positron',
351
+ url: 'https://basemaps.cartocdn.com/gl/positron-gl-style/style.json',
352
+ icon: "".concat(BASEMAP_ICON_PREFIX, "/POSITRON.png"),
353
+ layerGroups: DEFAULT_LAYER_GROUPS,
354
+ colorMode: BASE_MAP_COLOR_MODES.LIGHT,
355
+ complimentaryStyleId: 'dark-matter'
356
+ }, {
357
+ id: 'voyager',
358
+ label: 'Voyager',
359
+ url: 'https://basemaps.cartocdn.com/gl/voyager-gl-style/style.json',
360
+ icon: "".concat(BASEMAP_ICON_PREFIX, "/VOYAGER.png"),
361
+ layerGroups: DEFAULT_LAYER_GROUPS,
362
+ colorMode: BASE_MAP_COLOR_MODES.LIGHT,
363
+ complimentaryStyleId: 'dark-matter'
364
+ }];
365
+ var DEFAULT_MAP_STYLES = exports.DEFAULT_MAP_STYLES = [DEFAULT_NO_BASEMAP_STYLE].concat(DEFAULT_MAPLIBRE_STYLES, DEFAULT_MAPBOX_SATELITE_STYLES, DEFAULT_MAPBOX_STYLES);
366
+ var GEOJSON_FIELDS = exports.GEOJSON_FIELDS = {
367
+ geojson: ['_geojson', 'all_points', 'geojson']
368
+ };
369
+ var ICON_FIELDS = exports.ICON_FIELDS = {
370
+ icon: ['icon']
371
+ };
372
+ var TRIP_POINT_FIELDS = exports.TRIP_POINT_FIELDS = [['lat', 'lng'], ['lat', 'lon'], ['lat', 'long'], ['latitude', 'longitude']];
373
+ var ALTITUDE_FIELDS = exports.ALTITUDE_FIELDS = ['alt', 'altitude'];
374
+ var TRIP_ARC_FIELDS = exports.TRIP_ARC_FIELDS = {
375
+ lat0: 'begintrip',
376
+ lng0: 'begintrip',
377
+ lat1: 'dropoff',
378
+ lng1: 'dropoff'
379
+ };
380
+ var FILTER_TYPES = exports.FILTER_TYPES = (0, _keymirror["default"])({
381
+ range: null,
382
+ select: null,
383
+ input: null,
384
+ timeRange: null,
385
+ multiSelect: null,
386
+ polygon: null
387
+ });
388
+ var FILTER_VIEW_TYPES = exports.FILTER_VIEW_TYPES = (0, _keymirror["default"])({
389
+ side: null,
390
+ enlarged: null,
391
+ minified: null
392
+ });
393
+ var DEFAULT_FILTER_VIEW_TYPE = exports.DEFAULT_FILTER_VIEW_TYPE = FILTER_VIEW_TYPES.side;
394
+ var SCALE_TYPES = exports.SCALE_TYPES = (0, _keymirror["default"])({
395
+ ordinal: null,
396
+ quantile: null,
397
+ quantize: null,
398
+ linear: null,
399
+ sqrt: null,
400
+ log: null,
401
+ threshold: null,
402
+ custom: null,
403
+ customOrdinal: null,
404
+ // ordinal domain to linear range
405
+ point: null
406
+ });
407
+ var SCALE_TYPE_NAMES = exports.SCALE_TYPE_NAMES = {
408
+ ordinal: 'Ordinal',
409
+ quantile: 'Quantile',
410
+ quantize: 'Quantize',
411
+ linear: 'Linear',
412
+ sqrt: 'Sqrt',
413
+ log: 'Log',
414
+ threshold: 'Threshold',
415
+ custom: 'Custom Breaks',
416
+ customOrdinal: 'Custom Ordinal',
417
+ point: 'Point'
418
+ };
419
+ 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"])((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), SCALE_TYPES.customOrdinal, _d3Scale.scaleOrdinal);
420
+ var ALL_FIELD_TYPES = exports.ALL_FIELD_TYPES = (0, _keymirror["default"])({
421
+ "boolean": null,
422
+ date: null,
423
+ geojson: null,
424
+ integer: null,
425
+ real: null,
426
+ string: null,
427
+ timestamp: null,
428
+ point: null,
429
+ array: null,
430
+ object: null,
431
+ geoarrow: null,
432
+ h3: null
433
+ });
434
+
435
+ // Data Table
436
+ var SORT_ORDER = exports.SORT_ORDER = (0, _keymirror["default"])({
437
+ ASCENDING: null,
438
+ DESCENDING: null,
439
+ UNSORT: null
440
+ });
441
+ var TABLE_OPTION = exports.TABLE_OPTION = (0, _keymirror["default"])({
442
+ SORT_ASC: null,
443
+ SORT_DES: null,
444
+ UNSORT: null,
445
+ PIN: null,
446
+ UNPIN: null,
447
+ COPY: null,
448
+ FORMAT_COLUMN: null
449
+ });
450
+ var TABLE_OPTION_LIST = exports.TABLE_OPTION_LIST = [{
451
+ value: TABLE_OPTION.SORT_ASC,
452
+ display: 'Sort Ascending',
453
+ icon: 'ArrowUp',
454
+ condition: function condition(props) {
455
+ return props.sortTableColumn && props.sortMode !== SORT_ORDER.ASCENDING;
456
+ }
457
+ }, {
458
+ value: TABLE_OPTION.SORT_DES,
459
+ display: 'Sort Descending',
460
+ icon: 'ArrowDown',
461
+ condition: function condition(props) {
462
+ return props.sortTableColumn && props.sortMode !== SORT_ORDER.DESCENDING;
463
+ }
464
+ }, {
465
+ value: TABLE_OPTION.UNSORT,
466
+ display: 'Unsort Column',
467
+ icon: 'Cancel',
468
+ condition: function condition(props) {
469
+ return props.isSorted;
470
+ }
471
+ }, {
472
+ value: TABLE_OPTION.PIN,
473
+ display: 'Pin Column',
474
+ icon: 'Pin',
475
+ condition: function condition(props) {
476
+ return !props.isPinned;
477
+ }
478
+ }, {
479
+ value: TABLE_OPTION.UNPIN,
480
+ display: 'Unpin Column',
481
+ icon: 'Cancel',
482
+ condition: function condition(props) {
483
+ return props.isPinned;
484
+ }
485
+ }, {
486
+ value: TABLE_OPTION.COPY,
487
+ display: 'Copy Column',
488
+ icon: 'Clipboard'
489
+ }, {
490
+ value: TABLE_OPTION.FORMAT_COLUMN,
491
+ display: 'Format Column',
492
+ icon: 'Hash',
493
+ condition: function condition(props) {
494
+ return props.setDisplayFormat;
495
+ }
496
+ }];
497
+ var YELLOW = '248, 194, 28';
498
+ var PINK = '242, 152, 163';
499
+ var PURPLE = '160, 106, 206';
500
+ var BLUE = '140, 210, 205';
501
+ var BLUE2 = '106, 160, 206';
502
+ var BLUE3 = '0, 172, 237';
503
+ var GREEN = '106, 160, 56';
504
+ var GREEN2 = '74, 165, 150';
505
+ var RED = '237, 88, 106';
506
+ var ORANGE = '231, 110, 58';
507
+ 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"], {
508
+ label: 'bool',
509
+ color: PINK
510
+ }), ALL_FIELD_TYPES.date, {
511
+ label: 'date',
512
+ color: PURPLE
513
+ }), ALL_FIELD_TYPES.geojson, {
514
+ label: 'geo',
515
+ color: BLUE2
516
+ }), ALL_FIELD_TYPES.geoarrow, {
517
+ label: 'geo',
518
+ color: BLUE2
519
+ }), ALL_FIELD_TYPES.integer, {
520
+ label: 'int',
521
+ color: YELLOW
522
+ }), ALL_FIELD_TYPES.real, {
523
+ label: 'float',
524
+ color: YELLOW
525
+ }), ALL_FIELD_TYPES.string, {
526
+ label: 'string',
527
+ color: BLUE
528
+ }), ALL_FIELD_TYPES.timestamp, {
529
+ label: 'time',
530
+ color: GREEN
531
+ }), ALL_FIELD_TYPES.point, {
532
+ label: 'point',
533
+ color: BLUE3
534
+ }), ALL_FIELD_TYPES.array, {
535
+ label: 'array',
536
+ color: ORANGE
537
+ }), (0, _defineProperty2["default"])((0, _defineProperty2["default"])(_FIELD_TYPE_DISPLAY, ALL_FIELD_TYPES.object, {
538
+ label: 'object',
539
+ color: GREEN2
540
+ }), ALL_FIELD_TYPES.h3, {
541
+ label: 'h3',
542
+ color: BLUE
543
+ }));
544
+ var FIELD_COLORS = exports.FIELD_COLORS = {
545
+ "default": RED
546
+ };
547
+ var HIGHLIGH_COLOR_3D = exports.HIGHLIGH_COLOR_3D = [255, 255, 255, 60];
548
+ var CHANNEL_SCALES = exports.CHANNEL_SCALES = (0, _keymirror["default"])({
549
+ color: null,
550
+ radius: null,
551
+ size: null,
552
+ colorAggr: null,
553
+ sizeAggr: null,
554
+ angle: null
555
+ });
556
+ var AGGREGATION_TYPES = exports.AGGREGATION_TYPES = {
557
+ // default
558
+ count: 'count',
559
+ // linear
560
+ average: 'average',
561
+ maximum: 'maximum',
562
+ minimum: 'minimum',
563
+ median: 'median',
564
+ stdev: 'stdev',
565
+ sum: 'sum',
566
+ variance: 'variance',
567
+ // ordinal
568
+ mode: 'mode',
569
+ countUnique: 'countUnique'
570
+ };
571
+ var AGGREGATION_TYPE_OPTIONS = exports.AGGREGATION_TYPE_OPTIONS = Object.entries(AGGREGATION_TYPES).map(function (_ref7) {
572
+ var _ref8 = (0, _slicedToArray2["default"])(_ref7, 2),
573
+ key = _ref8[0],
574
+ value = _ref8[1];
575
+ return {
576
+ id: key,
577
+ label: key === 'stdev' ? 'Std Deviation' : key === 'countUnique' ? 'Count Unique' : typeof value === 'string' ? value.charAt(0).toUpperCase() + value.slice(1) : value
578
+ };
579
+ });
580
+ var linearFieldScaleFunctions = exports.linearFieldScaleFunctions = (0, _defineProperty2["default"])((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]), CHANNEL_SCALES.angle, [SCALE_TYPES.linear]);
581
+ var DEFAULT_AGGREGATION_COLOR_SCALES = [SCALE_TYPES.quantize, SCALE_TYPES.quantile, SCALE_TYPES.custom];
582
+ var linearFieldAggrScaleFunctions = exports.linearFieldAggrScaleFunctions = (0, _defineProperty2["default"])((0, _defineProperty2["default"])({}, CHANNEL_SCALES.colorAggr, [AGGREGATION_TYPES.average, AGGREGATION_TYPES.maximum, AGGREGATION_TYPES.minimum, AGGREGATION_TYPES.median, AGGREGATION_TYPES.stdev, AGGREGATION_TYPES.sum, AGGREGATION_TYPES.variance, AGGREGATION_TYPES.count].reduce(function (prev, cur) {
583
+ prev[cur] = DEFAULT_AGGREGATION_COLOR_SCALES;
584
+ return prev;
585
+ }, {})), 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]));
586
+ var ordinalFieldScaleFunctions = exports.ordinalFieldScaleFunctions = (0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])({}, CHANNEL_SCALES.color, [SCALE_TYPES.ordinal, SCALE_TYPES.customOrdinal]), CHANNEL_SCALES.radius, [SCALE_TYPES.point]), CHANNEL_SCALES.size, [SCALE_TYPES.point]);
587
+ 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, {});
588
+ var notSupportedScaleOpts = exports.notSupportedScaleOpts = (0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])({}, CHANNEL_SCALES.color, []), CHANNEL_SCALES.radius, []), CHANNEL_SCALES.size, []);
589
+ var notSupportAggrOpts = exports.notSupportAggrOpts = (0, _defineProperty2["default"])((0, _defineProperty2["default"])({}, CHANNEL_SCALES.colorAggr, {}), CHANNEL_SCALES.sizeAggr, {});
590
+
591
+ /**
592
+ * Default aggregation are based on ocunt
593
+ */
594
+ var DEFAULT_AGGREGATION = exports.DEFAULT_AGGREGATION = (0, _defineProperty2["default"])((0, _defineProperty2["default"])({}, CHANNEL_SCALES.colorAggr, (0, _defineProperty2["default"])({}, AGGREGATION_TYPES.count, DEFAULT_AGGREGATION_COLOR_SCALES)), CHANNEL_SCALES.sizeAggr, (0, _defineProperty2["default"])({}, AGGREGATION_TYPES.count, [SCALE_TYPES.linear, SCALE_TYPES.sqrt, SCALE_TYPES.log]));
595
+
596
+ /**
597
+ * Define what type of scale operation is allowed on each type of fields
598
+ */
599
+ 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, {
600
+ type: 'categorical',
601
+ scale: _objectSpread(_objectSpread({}, ordinalFieldScaleFunctions), ordinalFieldAggrScaleFunctions),
602
+ format: {
603
+ legend: function legend(d) {
604
+ return d;
605
+ },
606
+ tooltip: []
607
+ }
608
+ }), ALL_FIELD_TYPES.real, {
609
+ type: 'numerical',
610
+ scale: _objectSpread(_objectSpread({}, linearFieldScaleFunctions), linearFieldAggrScaleFunctions),
611
+ format: {
612
+ legend: function legend(d) {
613
+ return d;
614
+ },
615
+ tooltip: [_tooltip.TOOLTIP_FORMAT_TYPES.NONE, _tooltip.TOOLTIP_FORMAT_TYPES.DECIMAL, _tooltip.TOOLTIP_FORMAT_TYPES.PERCENTAGE]
616
+ }
617
+ }), ALL_FIELD_TYPES.timestamp, {
618
+ type: 'time',
619
+ scale: _objectSpread(_objectSpread({}, linearFieldScaleFunctions), notSupportAggrOpts),
620
+ format: {
621
+ legend: function legend(d) {
622
+ return d;
623
+ },
624
+ tooltip: [_tooltip.TOOLTIP_FORMAT_TYPES.NONE, _tooltip.TOOLTIP_FORMAT_TYPES.DATE, _tooltip.TOOLTIP_FORMAT_TYPES.DATE_TIME]
625
+ }
626
+ }), ALL_FIELD_TYPES.integer, {
627
+ type: 'numerical',
628
+ scale: _objectSpread(_objectSpread({}, _objectSpread(_objectSpread({}, linearFieldScaleFunctions), {}, (0, _defineProperty2["default"])({}, CHANNEL_SCALES.color, [].concat((0, _toConsumableArray2["default"])(linearFieldScaleFunctions[CHANNEL_SCALES.color]), [SCALE_TYPES.customOrdinal])))), linearFieldAggrScaleFunctions),
629
+ format: {
630
+ legend: function legend(d) {
631
+ return d;
632
+ },
633
+ tooltip: [_tooltip.TOOLTIP_FORMAT_TYPES.NONE, _tooltip.TOOLTIP_FORMAT_TYPES.DECIMAL, _tooltip.TOOLTIP_FORMAT_TYPES.PERCENTAGE]
634
+ }
635
+ }), ALL_FIELD_TYPES["boolean"], {
636
+ type: 'boolean',
637
+ scale: _objectSpread(_objectSpread({}, ordinalFieldScaleFunctions), ordinalFieldAggrScaleFunctions),
638
+ format: {
639
+ legend: function legend(d) {
640
+ return d;
641
+ },
642
+ tooltip: [_tooltip.TOOLTIP_FORMAT_TYPES.NONE, _tooltip.TOOLTIP_FORMAT_TYPES.BOOLEAN]
643
+ }
644
+ }), ALL_FIELD_TYPES.date, {
645
+ type: 'time',
646
+ scale: _objectSpread(_objectSpread({}, ordinalFieldScaleFunctions), ordinalFieldAggrScaleFunctions),
647
+ format: {
648
+ legend: function legend(d) {
649
+ return d;
650
+ },
651
+ tooltip: [_tooltip.TOOLTIP_FORMAT_TYPES.NONE, _tooltip.TOOLTIP_FORMAT_TYPES.DATE]
652
+ }
653
+ }), ALL_FIELD_TYPES.geojson, {
654
+ type: 'geometry',
655
+ scale: _objectSpread(_objectSpread({}, notSupportedScaleOpts), notSupportAggrOpts),
656
+ format: {
657
+ legend: function legend() {
658
+ return '...';
659
+ },
660
+ tooltip: []
661
+ }
662
+ }), ALL_FIELD_TYPES.geoarrow, {
663
+ type: 'geometry',
664
+ scale: _objectSpread(_objectSpread({}, notSupportedScaleOpts), notSupportAggrOpts),
665
+ format: {
666
+ legend: function legend() {
667
+ return '...';
668
+ },
669
+ tooltip: []
670
+ }
671
+ }), ALL_FIELD_TYPES.object, {
672
+ type: 'numerical',
673
+ scale: {},
674
+ format: {
675
+ legend: function legend() {
676
+ return '...';
677
+ },
678
+ tooltip: []
679
+ }
680
+ }), ALL_FIELD_TYPES.array, {
681
+ type: 'numerical',
682
+ scale: {},
683
+ format: {
684
+ legend: function legend() {
685
+ return '...';
686
+ },
687
+ tooltip: []
688
+ }
689
+ }), (0, _defineProperty2["default"])(_FIELD_OPTS, ALL_FIELD_TYPES.h3, {
690
+ type: 'h3',
691
+ scale: _objectSpread(_objectSpread({}, notSupportedScaleOpts), notSupportAggrOpts),
692
+ format: {
693
+ legend: function legend() {
694
+ return '...';
695
+ },
696
+ tooltip: []
697
+ }
698
+ }));
699
+ var CHANNEL_SCALE_SUPPORTED_FIELDS = exports.CHANNEL_SCALE_SUPPORTED_FIELDS = Object.keys(CHANNEL_SCALES).reduce(function (accu, key) {
700
+ return _objectSpread(_objectSpread({}, accu), {}, (0, _defineProperty2["default"])({}, key, Object.keys(FIELD_OPTS).filter(function (ft) {
701
+ return FIELD_OPTS[ft].scale[key] && Object.keys(FIELD_OPTS[ft].scale[key]).length;
702
+ })));
703
+ }, {});
704
+ var DEFAULT_LAYER_COLOR = exports.DEFAULT_LAYER_COLOR = {
705
+ tripArc: '#9226C6',
706
+ begintrip_lat: '#1E96BE',
707
+ dropoff_lat: '#FF991F',
708
+ request_lat: '#52A353'
709
+ };
710
+ var DEFAULT_LAYER_COLOR_PALETTE = exports.DEFAULT_LAYER_COLOR_PALETTE = 'Global Warming';
711
+ var DEFAULT_LAYER_COLOR_PALETTE_STEPS = exports.DEFAULT_LAYER_COLOR_PALETTE_STEPS = 6;
712
+
713
+ // let user pass in default tooltip fields
714
+ var DEFAULT_TOOLTIP_FIELDS = exports.DEFAULT_TOOLTIP_FIELDS = [];
715
+ var NO_VALUE_COLOR = exports.NO_VALUE_COLOR = [0, 0, 0, 0];
716
+ var DEFAULT_PICKING_RADIUS = exports.DEFAULT_PICKING_RADIUS = 3;
717
+ var OVERLAY_BLENDINGS = exports.OVERLAY_BLENDINGS = {
718
+ normal: {
719
+ label: 'overlayBlending.normal',
720
+ value: 'normal'
721
+ },
722
+ screen: {
723
+ label: 'overlayBlending.screen',
724
+ value: 'screen'
725
+ },
726
+ darken: {
727
+ label: 'overlayBlending.darken',
728
+ value: 'darken'
729
+ }
730
+ };
731
+ var LAYER_BLENDINGS = exports.LAYER_BLENDINGS = {
732
+ additive: {
733
+ label: 'layerBlending.additive',
734
+ blendFunc: ['SRC_ALPHA', 'DST_ALPHA'],
735
+ blendEquation: 'FUNC_ADD'
736
+ },
737
+ normal: {
738
+ // reference to
739
+ // https://limnu.com/webgl-blending-youre-probably-wrong/
740
+ label: 'layerBlending.normal',
741
+ blendFunc: ['SRC_ALPHA', 'ONE_MINUS_SRC_ALPHA', 'ONE', 'ONE_MINUS_SRC_ALPHA'],
742
+ blendEquation: ['FUNC_ADD', 'FUNC_ADD']
743
+ },
744
+ subtractive: {
745
+ label: 'layerBlending.subtractive',
746
+ blendFunc: ['ONE', 'ONE_MINUS_DST_COLOR', 'SRC_ALPHA', 'DST_ALPHA'],
747
+ blendEquation: ['FUNC_SUBTRACT', 'FUNC_ADD']
748
+ }
749
+ };
750
+ var MAX_DEFAULT_TOOLTIPS = exports.MAX_DEFAULT_TOOLTIPS = 5;
751
+ var RESOLUTIONS = exports.RESOLUTIONS = (0, _keymirror["default"])({
752
+ ONE_X: null,
753
+ TWO_X: null
754
+ });
755
+ var EXPORT_IMG_RATIOS = exports.EXPORT_IMG_RATIOS = (0, _keymirror["default"])({
756
+ SCREEN: null,
757
+ FOUR_BY_THREE: null,
758
+ SIXTEEN_BY_NINE: null,
759
+ CUSTOM: null
760
+ });
761
+ var ScreenRatioOption = exports.ScreenRatioOption = {
762
+ id: EXPORT_IMG_RATIOS.SCREEN,
763
+ label: 'modal.exportImage.ratioOriginalScreen',
764
+ getSize: function getSize(screenW, screenH) {
765
+ return {
766
+ width: screenW,
767
+ height: screenH
768
+ };
769
+ }
770
+ };
771
+ var CustomRatioOption = exports.CustomRatioOption = {
772
+ id: EXPORT_IMG_RATIOS.CUSTOM,
773
+ hidden: true,
774
+ label: 'modal.exportImage.ratioCustom',
775
+ getSize: function getSize(mapW, mapH) {
776
+ return {
777
+ width: mapW,
778
+ height: mapH
779
+ };
780
+ }
781
+ };
782
+ var FourByThreeRatioOption = exports.FourByThreeRatioOption = {
783
+ id: EXPORT_IMG_RATIOS.FOUR_BY_THREE,
784
+ label: 'modal.exportImage.ratio4_3',
785
+ getSize: function getSize(screenW) {
786
+ return {
787
+ width: screenW,
788
+ height: Math.round(screenW * 0.75)
789
+ };
790
+ }
791
+ };
792
+ var SixteenByNineRatioOption = exports.SixteenByNineRatioOption = {
793
+ id: EXPORT_IMG_RATIOS.SIXTEEN_BY_NINE,
794
+ label: 'modal.exportImage.ratio16_9',
795
+ getSize: function getSize(screenW) {
796
+ return {
797
+ width: screenW,
798
+ height: Math.round(screenW * 0.5625)
799
+ };
800
+ }
801
+ };
802
+ var EXPORT_IMG_RATIO_OPTIONS = exports.EXPORT_IMG_RATIO_OPTIONS = [ScreenRatioOption, FourByThreeRatioOption, SixteenByNineRatioOption, CustomRatioOption];
803
+ var OneXResolutionOption = exports.OneXResolutionOption = {
804
+ id: RESOLUTIONS.ONE_X,
805
+ label: '1x',
806
+ available: true,
807
+ scale: 1,
808
+ getSize: function getSize(screenW, screenH) {
809
+ return {
810
+ width: screenW,
811
+ height: screenH
812
+ };
813
+ }
814
+ };
815
+ var TwoXResolutionOption = exports.TwoXResolutionOption = {
816
+ id: RESOLUTIONS.TWO_X,
817
+ label: '2x',
818
+ available: true,
819
+ scale: 2,
820
+ getSize: function getSize(screenW, screenH) {
821
+ return {
822
+ width: screenW * 2,
823
+ height: screenH * 2
824
+ };
825
+ }
826
+ };
827
+
828
+ // Fixed dimension options
829
+ var Resolution1920x1080Option = exports.Resolution1920x1080Option = {
830
+ id: '1920x1080',
831
+ label: '1920 × 1080 (16:9)',
832
+ available: true,
833
+ getSize: function getSize() {
834
+ return {
835
+ width: 1920,
836
+ height: 1080
837
+ };
838
+ }
839
+ };
840
+ var Resolution1280x720Option = exports.Resolution1280x720Option = {
841
+ id: '1280x720',
842
+ label: '1280 × 720 (16:9)',
843
+ available: true,
844
+ getSize: function getSize() {
845
+ return {
846
+ width: 1280,
847
+ height: 720
848
+ };
849
+ }
850
+ };
851
+ var Resolution2560x1440Option = exports.Resolution2560x1440Option = {
852
+ id: '2560x1440',
853
+ label: '2560 × 1440 (16:9)',
854
+ available: true,
855
+ getSize: function getSize() {
856
+ return {
857
+ width: 2560,
858
+ height: 1440
859
+ };
860
+ }
861
+ };
862
+ var Resolution1600x900Option = exports.Resolution1600x900Option = {
863
+ id: '1600x900',
864
+ label: '1600 × 900 (16:9)',
865
+ available: true,
866
+ getSize: function getSize() {
867
+ return {
868
+ width: 1600,
869
+ height: 900
870
+ };
871
+ }
872
+ };
873
+ var Resolution1024x768Option = exports.Resolution1024x768Option = {
874
+ id: '1024x768',
875
+ label: '1024 × 768 (4:3)',
876
+ available: true,
877
+ getSize: function getSize() {
878
+ return {
879
+ width: 1024,
880
+ height: 768
881
+ };
882
+ }
883
+ };
884
+ var Resolution1280x960Option = exports.Resolution1280x960Option = {
885
+ id: '1280x960',
886
+ label: '1280 × 960 (4:3)',
887
+ available: true,
888
+ getSize: function getSize() {
889
+ return {
890
+ width: 1280,
891
+ height: 960
892
+ };
893
+ }
894
+ };
895
+ var Resolution1600x1200Option = exports.Resolution1600x1200Option = {
896
+ id: '1600x1200',
897
+ label: '1600 × 1200 (4:3)',
898
+ available: true,
899
+ getSize: function getSize() {
900
+ return {
901
+ width: 1600,
902
+ height: 1200
903
+ };
904
+ }
905
+ };
906
+ var Resolution1920x1440Option = exports.Resolution1920x1440Option = {
907
+ id: '1920x1440',
908
+ label: '1920 × 1440 (4:3)',
909
+ available: true,
910
+ getSize: function getSize() {
911
+ return {
912
+ width: 1920,
913
+ height: 1440
914
+ };
915
+ }
916
+ };
917
+ var EXPORT_IMG_RESOLUTION_OPTIONS = exports.EXPORT_IMG_RESOLUTION_OPTIONS = [OneXResolutionOption, TwoXResolutionOption, Resolution1280x720Option, Resolution1920x1080Option, Resolution2560x1440Option, Resolution1600x900Option, Resolution1024x768Option, Resolution1280x960Option, Resolution1600x1200Option, Resolution1920x1440Option];
918
+ var EXPORT_DATA_TYPE = exports.EXPORT_DATA_TYPE = (0, _keymirror["default"])({
919
+ CSV: null
920
+ // SHAPEFILE: null,
921
+ // JSON: null,
922
+ // GEOJSON: null,
923
+ // TOPOJSON: null
924
+ });
925
+ var EXPORT_DATA_TYPE_OPTIONS = exports.EXPORT_DATA_TYPE_OPTIONS = [{
926
+ id: EXPORT_DATA_TYPE.CSV,
927
+ label: EXPORT_DATA_TYPE.CSV.toLowerCase(),
928
+ available: true
929
+ }
930
+ // {
931
+ // id: EXPORT_DATA_TYPE.SHAPEFILE,
932
+ // label: 'shapefile',
933
+ // available: false
934
+ // },
935
+ // {
936
+ // id: EXPORT_DATA_TYPE.JSON,
937
+ // label: 'json',
938
+ // available: false
939
+ // },
940
+ // {
941
+ // id: EXPORT_DATA_TYPE.GEOJSON,
942
+ // label: 'geojson',
943
+ // available: false
944
+ // },
945
+ // {
946
+ // id: EXPORT_DATA_TYPE.TOPOJSON,
947
+ // label: 'topojson',
948
+ // available: false
949
+ // }
950
+ ];
951
+
952
+ // Export map types
953
+ var EXPORT_MAP_FORMATS = exports.EXPORT_MAP_FORMATS = (0, _keymirror["default"])({
954
+ HTML: null,
955
+ JSON: null
956
+ });
957
+ var EXPORT_HTML_MAP_MODES = exports.EXPORT_HTML_MAP_MODES = (0, _keymirror["default"])({
958
+ READ: null,
959
+ EDIT: null
960
+ });
961
+
962
+ // Export map options
963
+ var EXPORT_MAP_FORMAT_OPTIONS = exports.EXPORT_MAP_FORMAT_OPTIONS = Object.entries(EXPORT_MAP_FORMATS).map(function (entry) {
964
+ return {
965
+ id: entry[0],
966
+ label: entry[1].toLowerCase(),
967
+ available: true
968
+ };
969
+ });
970
+ function getHTMLMapModeTileUrl(mode) {
971
+ return "https://d1a3f4spazzrp4.cloudfront.net/kepler.gl/documentation/map-".concat(mode.toLowerCase(), "-mode.png");
972
+ }
973
+ var EXPORT_HTML_MAP_MODE_OPTIONS = exports.EXPORT_HTML_MAP_MODE_OPTIONS = Object.entries(EXPORT_HTML_MAP_MODES).map(function (entry) {
974
+ return {
975
+ id: entry[0],
976
+ label: "modal.exportMap.html.".concat(entry[1].toLowerCase()),
977
+ available: true,
978
+ url: getHTMLMapModeTileUrl(entry[1])
979
+ };
980
+ });
981
+ var DEFAULT_UUID_COUNT = exports.DEFAULT_UUID_COUNT = 6;
982
+ var DEFAULT_NOTIFICATION_MESSAGE = exports.DEFAULT_NOTIFICATION_MESSAGE = 'MESSAGE_NOT_PROVIDED';
983
+ var DEFAULT_NOTIFICATION_TYPES = exports.DEFAULT_NOTIFICATION_TYPES = (0, _keymirror["default"])({
984
+ info: null,
985
+ error: null,
986
+ warning: null,
987
+ success: null
988
+ });
989
+ var DEFAULT_NOTIFICATION_TOPICS = exports.DEFAULT_NOTIFICATION_TOPICS = (0, _keymirror["default"])({
990
+ global: null,
991
+ file: null
992
+ });
993
+
994
+ // Minimum time between identical notifications about deck.gl errors
995
+ var THROTTLE_NOTIFICATION_TIME = exports.THROTTLE_NOTIFICATION_TIME = 330;
996
+
997
+ // Animation
998
+ var BASE_SPEED = exports.BASE_SPEED = 600;
999
+ var FPS = exports.FPS = 60;
1000
+
1001
+ /**
1002
+ * 4 Animation Window Types
1003
+ * 1. free
1004
+ * |-> |->
1005
+ * Current time is a fixed range, animation controller calls next animation frames continuously to animation a moving window
1006
+ * The increment id based on domain / BASE_SPEED * SPEED
1007
+ *
1008
+ * 2. incremental
1009
+ * | |->
1010
+ * Same as free, current time is a growing range, only the max value of range increment during animation.
1011
+ * The increment is also based on domain / BASE_SPEED * SPEED
1012
+ *
1013
+ * 3. point
1014
+ * o -> o
1015
+ * Current time is a point, animation controller calls next animation frame continuously to animation a moving point
1016
+ * The increment is based on domain / BASE_SPEED * SPEED
1017
+ *
1018
+ * 4. interval
1019
+ * o ~> o
1020
+ * Current time is a point. An array of sorted time steps need to be provided.
1021
+ * animation controller calls next animation at a interval when the point jumps to the next step
1022
+ */
1023
+ var ANIMATION_WINDOW = exports.ANIMATION_WINDOW = (0, _keymirror["default"])({
1024
+ free: null,
1025
+ incremental: null,
1026
+ point: null,
1027
+ interval: null
1028
+ });
1029
+ var DEFAULT_TIME_FORMAT = exports.DEFAULT_TIME_FORMAT = 'MM/DD/YY HH:mm:ssa';
1030
+ var SPEED_CONTROL_RANGE = exports.SPEED_CONTROL_RANGE = [0, 10];
1031
+ var SPEED_CONTROL_STEP = exports.SPEED_CONTROL_STEP = 0.001;
1032
+
1033
+ // Geocoder
1034
+ var GEOCODER_DATASET_NAME = exports.GEOCODER_DATASET_NAME = 'geocoder_dataset';
1035
+ var GEOCODER_LAYER_ID = exports.GEOCODER_LAYER_ID = 'geocoder_layer';
1036
+ var GEOCODER_GEO_OFFSET = exports.GEOCODER_GEO_OFFSET = 0.05;
1037
+ var GEOCODER_ICON_COLOR = exports.GEOCODER_ICON_COLOR = [255, 0, 0];
1038
+ // Base icon size before anchor normalization. The geocoder pin icon is bottom-anchored
1039
+ // and scaled to fit the ScatterplotLayer unit circle (~0.5x), so the rendered size is
1040
+ // compensated here (80 * 2 = 160).
1041
+ var GEOCODER_ICON_SIZE = exports.GEOCODER_ICON_SIZE = 160;
1042
+
1043
+ // Editor
1044
+ var EDITOR_LAYER_ID = exports.EDITOR_LAYER_ID = 'kepler_editor_layer';
1045
+ var EDITOR_LAYER_PICKING_RADIUS = exports.EDITOR_LAYER_PICKING_RADIUS = 6;
1046
+ var EDITOR_MODES = exports.EDITOR_MODES = {
1047
+ DRAW_POLYGON: 'DRAW_POLYGON',
1048
+ DRAW_RECTANGLE: 'DRAW_RECTANGLE',
1049
+ DRAW_LINESTRING: 'DRAW_LINESTRING',
1050
+ DRAW_POINT: 'DRAW_POINT',
1051
+ EDIT: 'EDIT_VERTEX'
1052
+ };
1053
+ var EDITOR_DRAW_MODES = exports.EDITOR_DRAW_MODES = [EDITOR_MODES.DRAW_POLYGON, EDITOR_MODES.DRAW_RECTANGLE, EDITOR_MODES.DRAW_LINESTRING, EDITOR_MODES.DRAW_POINT];
1054
+ var PLOT_TYPES = exports.PLOT_TYPES = (0, _keymirror["default"])({
1055
+ histogram: null,
1056
+ lineChart: null
1057
+ });
1058
+
1059
+ // Filter
1060
+ var INIT_FILTER_ITEMS_IN_DROPDOWN = exports.INIT_FILTER_ITEMS_IN_DROPDOWN = 100;
1061
+
1062
+ // GPU Filtering
1063
+ /**
1064
+ * Max number of filter value buffers that deck.gl provides
1065
+ */
1066
+ var MAX_GPU_FILTERS = exports.MAX_GPU_FILTERS = 4;
1067
+ var MAP_THUMBNAIL_DIMENSION = exports.MAP_THUMBNAIL_DIMENSION = {
1068
+ width: 300,
1069
+ height: 200
1070
+ };
1071
+ var MAP_INFO_CHARACTER = exports.MAP_INFO_CHARACTER = {
1072
+ title: 100,
1073
+ description: 100
1074
+ };
1075
+
1076
+ // Load data
1077
+ var LOADING_METHODS = exports.LOADING_METHODS = (0, _keymirror["default"])({
1078
+ upload: null,
1079
+ storage: null,
1080
+ tileset: null
1081
+ });
1082
+ var DEFAULT_FEATURE_FLAGS = exports.DEFAULT_FEATURE_FLAGS = {};
1083
+ var DATASET_FORMATS = exports.DATASET_FORMATS = (0, _keymirror["default"])({
1084
+ row: null,
1085
+ geojson: null,
1086
+ csv: null,
1087
+ keplergl: null,
1088
+ arrow: null,
1089
+ duckdb: null
1090
+ });
1091
+ var MAP_CONTROLS = exports.MAP_CONTROLS = (0, _keymirror["default"])({
1092
+ visibleLayers: null,
1093
+ mapLegend: null,
1094
+ toggle3d: null,
1095
+ splitMap: null,
1096
+ mapDraw: null,
1097
+ mapLocale: null,
1098
+ mapTheme: null,
1099
+ effect: null,
1100
+ annotation: null,
1101
+ aiAssistant: null
1102
+ });
1103
+ var MapViewMode = exports.MapViewMode = /*#__PURE__*/function (MapViewMode) {
1104
+ MapViewMode["MODE_2D"] = "MODE_2D";
1105
+ MapViewMode["MODE_3D"] = "MODE_3D";
1106
+ MapViewMode["MODE_GLOBE"] = "MODE_GLOBE";
1107
+ return MapViewMode;
1108
+ }({});
1109
+ /**
1110
+ * Minimum zoom level allowed in globe mode. Negative values let the user zoom
1111
+ * out further than the web-mercator default of 0, so the whole globe can be
1112
+ * pulled back to appear smaller on screen.
1113
+ */
1114
+ var GLOBE_MIN_ZOOM = exports.GLOBE_MIN_ZOOM = 2;
1115
+
1116
+ /**
1117
+ * Maximum zoom in globe mode.
1118
+ *
1119
+ * The previous "empty rectangles" at high zoom were caused by the vector basemap
1120
+ * layer declaring `maxZoom: 23` while the raw tile endpoints only have data to
1121
+ * z16 (mapbox-streets-v8) / z14 (CARTO) — deck then requested non-existent tiles
1122
+ * that 404. That is fixed in `getGlobeBaseLayers` by setting `maxZoom` to each
1123
+ * source's true data max so deck overzooms instead.
1124
+ *
1125
+ * The remaining practical ceiling is float32 precision: deck's globe places
1126
+ * geometry in common space on a sphere of radius 256 with no fp64/relative-to-
1127
+ * center trick, so beyond ~visual-zoom 16 (roughly this mapState zoom minus
1128
+ * `zoomAdjust(lat)` ≈ 1.65 at the equator) geometry starts to jitter/drift.
1129
+ */
1130
+ var GLOBE_MAX_ZOOM = exports.GLOBE_MAX_ZOOM = 16;
1131
+
1132
+ /**
1133
+ * Maximum absolute center latitude allowed in globe mode. Constrains the camera
1134
+ * target to a band around the equator so the view can't be centered on the
1135
+ * poles (deck.gl's default clamps to ~85°, which lets the camera stare straight
1136
+ * down at a pole). Applies symmetrically to the northern and southern hemisphere.
1137
+ */
1138
+ var GLOBE_MAX_LATITUDE = exports.GLOBE_MAX_LATITUDE = 75;
1139
+ var DEFAULT_GLOBE_CONFIG = exports.DEFAULT_GLOBE_CONFIG = {
1140
+ atmosphere: true,
1141
+ hugeHalo: true,
1142
+ hugeHaloRadius: 3.5,
1143
+ hugeHaloOpacity: 0.2,
1144
+ azimuth: false,
1145
+ azimuthAngle: 45,
1146
+ terminator: true,
1147
+ terminatorOpacity: 0.35,
1148
+ basemap: true,
1149
+ labels: false,
1150
+ labelsColor: [114.75, 114.75, 114.75],
1151
+ adminLines: true,
1152
+ adminLinesColor: [40, 63, 93],
1153
+ water: true,
1154
+ waterColor: [17, 35, 48],
1155
+ surface: true,
1156
+ surfaceColor: [9, 16, 29],
1157
+ // Color of the empty space rendered around the globe (deck.gl clear color).
1158
+ // Matches the previous hardcoded clear color [0.015, 0.035, 0.065] in 0-1 space.
1159
+ backgroundColor: [4, 9, 17],
1160
+ // Starfield behind the globe is on by default in globe view.
1161
+ stars: true
1162
+ };
1163
+ var GLOBE_SUPPORTED_LAYERS = exports.GLOBE_SUPPORTED_LAYERS = {
1164
+ point: true,
1165
+ arc: true,
1166
+ grid: true,
1167
+ hexagon: true,
1168
+ geojson: true,
1169
+ cluster: true,
1170
+ icon: true,
1171
+ hexagonId: true,
1172
+ '3D': true,
1173
+ vectorTile: true,
1174
+ hexTile: true,
1175
+ line: true,
1176
+ trip: true,
1177
+ rasterTile: true,
1178
+ heatmap: true,
1179
+ s2: false,
1180
+ tile3d: false,
1181
+ // Flow arrows are flat quads in common space (equatorial plane) and collapse when
1182
+ // viewed edge-on on the globe, so the flow layer is not supported in Globe mode.
1183
+ flow: false
1184
+ };
1185
+ var MapSplitMode = exports.MapSplitMode = /*#__PURE__*/function (MapSplitMode) {
1186
+ MapSplitMode["SINGLE_MAP"] = "SINGLE_MAP";
1187
+ MapSplitMode["DUAL_MAP"] = "DUAL_MAP";
1188
+ MapSplitMode["SWIPE_COMPARE"] = "SWIPE_COMPARE";
1189
+ return MapSplitMode;
1190
+ }({});
1191
+ /**
1192
+ * A multiplier for screen-space width/scale for Arc, Line, Icon and Text layers.
1193
+ * Required in order to maintain the same appearance after upgrading to deck.gl v8.5.
1194
+ * https://github.com/visgl/deck.gl/blob/master/docs/upgrade-guide.md
1195
+ */
1196
+ var PROJECTED_PIXEL_SIZE_MULTIPLIER = exports.PROJECTED_PIXEL_SIZE_MULTIPLIER = 2 / 3;
1197
+
1198
+ /**
1199
+ * Maximum value for text outline width
1200
+ */
1201
+ var TEXT_OUTLINE_MULTIPLIER = exports.TEXT_OUTLINE_MULTIPLIER = 5;
1202
+ var dataTestIds = exports.dataTestIds = {
1203
+ infoIcon: 'info-icon',
1204
+ warningIcon: 'warning-icon',
1205
+ errorIcon: 'error-icon',
1206
+ successIcon: 'success-icon',
1207
+ checkmarkIcon: 'checkmark-icon',
1208
+ sortableLayerItem: 'sortable-layer-item',
1209
+ staticLayerItem: 'static-layer-item',
1210
+ layerTitleEditor: 'layer__title__editor',
1211
+ removeLayerAction: 'remove-layer-action',
1212
+ layerPanel: 'layer-panel',
1213
+ sortableEffectItem: 'sortable-effect-item',
1214
+ staticEffectItem: 'static-effect-item',
1215
+ providerLoading: 'provider-loading',
1216
+ providerMapInfoPanel: 'provider-map-info-panel',
1217
+ providerSelect: 'provider-select',
1218
+ cloudHeader: 'cloud-header',
1219
+ providerShareMap: 'provider-share-map'
1220
+ };
1221
+
1222
+ // Effects
1223
+ var DEFAULT_TIMEZONE = exports.DEFAULT_TIMEZONE = 'UTC';
1224
+ var DEFAULT_POST_PROCESSING_EFFECT_TYPE = exports.DEFAULT_POST_PROCESSING_EFFECT_TYPE = 'ink';
1225
+ var DEFAULT_LIGHT_COLOR = exports.DEFAULT_LIGHT_COLOR = [255, 255, 255];
1226
+ var DEFAULT_LIGHT_INTENSITY = exports.DEFAULT_LIGHT_INTENSITY = 1;
1227
+ var DEFAULT_SHADOW_INTENSITY = exports.DEFAULT_SHADOW_INTENSITY = 0.5;
1228
+ var DEFAULT_SHADOW_COLOR = exports.DEFAULT_SHADOW_COLOR = [0, 0, 0];
1229
+ var LIGHT_AND_SHADOW_EFFECT_TIME_MODES = exports.LIGHT_AND_SHADOW_EFFECT_TIME_MODES = {
1230
+ pick: 'pick',
1231
+ current: 'current',
1232
+ animation: 'animation'
1233
+ };
1234
+ var DEFAULT_LIGHT_AND_SHADOW_PROPS = exports.DEFAULT_LIGHT_AND_SHADOW_PROPS = {
1235
+ timestamp: Date.now(),
1236
+ timeMode: LIGHT_AND_SHADOW_EFFECT_TIME_MODES.pick,
1237
+ shadowIntensity: DEFAULT_SHADOW_INTENSITY,
1238
+ shadowColor: [].concat(DEFAULT_SHADOW_COLOR),
1239
+ sunLightColor: [].concat(DEFAULT_LIGHT_COLOR),
1240
+ sunLightIntensity: DEFAULT_LIGHT_INTENSITY,
1241
+ ambientLightColor: [].concat(DEFAULT_LIGHT_COLOR),
1242
+ ambientLightIntensity: DEFAULT_LIGHT_INTENSITY
1243
+ };
1244
+ var LIGHT_AND_SHADOW_EFFECT = exports.LIGHT_AND_SHADOW_EFFECT = {
1245
+ type: 'lightAndShadow',
1246
+ name: 'Light & Shadow',
1247
+ description: 'effectDescription.lightAndShadow',
1248
+ parameters: [{
1249
+ name: 'timestamp',
1250
+ min: 0,
1251
+ max: Number.MAX_SAFE_INTEGER
1252
+ }, {
1253
+ name: 'shadowIntensity',
1254
+ min: 0,
1255
+ max: 1,
1256
+ defaultValue: DEFAULT_SHADOW_INTENSITY
1257
+ }, {
1258
+ name: 'sunLightIntensity',
1259
+ min: 0,
1260
+ max: 5,
1261
+ defaultValue: DEFAULT_LIGHT_INTENSITY
1262
+ }, {
1263
+ name: 'ambientLightIntensity',
1264
+ min: 0,
1265
+ max: 5,
1266
+ defaultValue: DEFAULT_LIGHT_INTENSITY
1267
+ }, {
1268
+ name: 'shadowColor',
1269
+ type: 'color',
1270
+ min: 0,
1271
+ max: 255,
1272
+ defaultValue: DEFAULT_SHADOW_COLOR
1273
+ }, {
1274
+ name: 'sunLightColor',
1275
+ type: 'color',
1276
+ min: 0,
1277
+ max: 255,
1278
+ defaultValue: DEFAULT_LIGHT_COLOR
1279
+ }, {
1280
+ name: 'ambientLightColor',
1281
+ type: 'color',
1282
+ min: 0,
1283
+ max: 255,
1284
+ defaultValue: DEFAULT_LIGHT_COLOR
1285
+ }]
1286
+ };
1287
+ var DISTANCE_FOG_TYPE = exports.DISTANCE_FOG_TYPE = 'distanceFog';
1288
+ var SURFACE_FOG_TYPE = exports.SURFACE_FOG_TYPE = 'surfaceFog';
1289
+ var POSTPROCESSING_EFFECTS = exports.POSTPROCESSING_EFFECTS = {
1290
+ ink: {
1291
+ type: 'ink',
1292
+ name: 'Ink',
1293
+ description: 'effectDescription.ink',
1294
+ parameters: [{
1295
+ name: 'strength',
1296
+ min: 0,
1297
+ max: 1
1298
+ }]
1299
+ },
1300
+ brightnessContrast: {
1301
+ type: 'brightnessContrast',
1302
+ name: 'Brightness & Contrast',
1303
+ description: 'effectDescription.brightnessContrast',
1304
+ parameters: [{
1305
+ name: 'brightness',
1306
+ min: -1,
1307
+ max: 1
1308
+ }, {
1309
+ name: 'contrast',
1310
+ min: -1,
1311
+ max: 1
1312
+ }]
1313
+ },
1314
+ hueSaturation: {
1315
+ type: 'hueSaturation',
1316
+ name: 'Hue & Saturation',
1317
+ description: 'effectDescription.hueSaturation',
1318
+ parameters: [{
1319
+ name: 'hue',
1320
+ min: -1,
1321
+ max: 1
1322
+ }, {
1323
+ name: 'saturation',
1324
+ defaultValue: 0.25,
1325
+ min: -1,
1326
+ max: 1
1327
+ }]
1328
+ },
1329
+ vibrance: {
1330
+ type: 'vibrance',
1331
+ name: 'Vibrance',
1332
+ description: 'effectDescription.vibrance',
1333
+ parameters: [{
1334
+ name: 'amount',
1335
+ defaultValue: 0.5,
1336
+ min: -1,
1337
+ max: 1
1338
+ }]
1339
+ },
1340
+ sepia: {
1341
+ type: 'sepia',
1342
+ name: 'Sepia',
1343
+ description: 'effectDescription.sepia',
1344
+ parameters: [{
1345
+ name: 'amount',
1346
+ min: 0,
1347
+ max: 1
1348
+ }]
1349
+ },
1350
+ dotScreen: {
1351
+ type: 'dotScreen',
1352
+ name: 'Dot Screen',
1353
+ description: 'effectDescription.dotScreen',
1354
+ parameters: [{
1355
+ name: 'angle',
1356
+ min: 0,
1357
+ max: Math.PI / 2
1358
+ }, {
1359
+ name: 'size',
1360
+ min: 1,
1361
+ max: 20
1362
+ }, {
1363
+ name: 'center',
1364
+ type: 'array',
1365
+ label: ['Center X', 'Center Y'],
1366
+ defaultValue: [0.5, 0.5],
1367
+ min: 0,
1368
+ max: 1
1369
+ }]
1370
+ },
1371
+ colorHalftone: {
1372
+ type: 'colorHalftone',
1373
+ name: 'Color Halftone',
1374
+ description: 'effectDescription.colorHalftone',
1375
+ parameters: [{
1376
+ name: 'angle',
1377
+ min: 0,
1378
+ max: Math.PI / 2
1379
+ }, {
1380
+ name: 'size',
1381
+ min: 1,
1382
+ max: 20
1383
+ }, {
1384
+ name: 'center',
1385
+ type: 'array',
1386
+ label: ['Center X', 'Center Y'],
1387
+ defaultValue: [0.5, 0.5],
1388
+ min: 0,
1389
+ max: 1
1390
+ }]
1391
+ },
1392
+ noise: {
1393
+ type: 'noise',
1394
+ name: 'Noise',
1395
+ description: 'effectDescription.noise',
1396
+ parameters: [{
1397
+ name: 'amount',
1398
+ min: 0,
1399
+ max: 1
1400
+ }]
1401
+ },
1402
+ triangleBlur: {
1403
+ type: 'triangleBlur',
1404
+ name: 'Blur (Triangle)',
1405
+ description: 'effectDescription.triangleBlur',
1406
+ parameters: [{
1407
+ name: 'radius',
1408
+ min: 0,
1409
+ max: 100
1410
+ }]
1411
+ },
1412
+ zoomBlur: {
1413
+ type: 'zoomBlur',
1414
+ name: 'Blur (Zoom)',
1415
+ description: 'effectDescription.zoomBlur',
1416
+ parameters: [{
1417
+ name: 'strength',
1418
+ defaultValue: 0.05,
1419
+ min: 0,
1420
+ max: 1
1421
+ }, {
1422
+ name: 'center',
1423
+ type: 'array',
1424
+ label: ['Center X', 'Center Y'],
1425
+ defaultValue: [0.5, 0.5],
1426
+ min: 0,
1427
+ max: 1
1428
+ }]
1429
+ },
1430
+ tiltShift: {
1431
+ type: 'tiltShift',
1432
+ name: 'Blur (Tilt Shift)',
1433
+ description: 'effectDescription.tiltShift',
1434
+ parameters: [{
1435
+ name: 'blurRadius',
1436
+ label: 'Blur',
1437
+ min: 0,
1438
+ max: 50
1439
+ }, {
1440
+ name: 'gradientRadius',
1441
+ label: 'Gradient',
1442
+ min: 0,
1443
+ max: 400
1444
+ }, {
1445
+ name: 'start',
1446
+ type: 'array',
1447
+ label: ['Start', false],
1448
+ defaultValue: [0.0, 0.0],
1449
+ min: 0,
1450
+ max: 1
1451
+ }, {
1452
+ name: 'end',
1453
+ type: 'array',
1454
+ label: ['End', false],
1455
+ defaultValue: [1, 1],
1456
+ min: 0,
1457
+ max: 1
1458
+ }]
1459
+ },
1460
+ edgeWork: {
1461
+ type: 'edgeWork',
1462
+ name: 'Edge work',
1463
+ description: 'effectDescription.edgeWork',
1464
+ parameters: [{
1465
+ name: 'radius',
1466
+ min: 1,
1467
+ max: 50
1468
+ }]
1469
+ },
1470
+ vignette: {
1471
+ type: 'vignette',
1472
+ name: 'Vignette',
1473
+ description: 'effectDescription.vignette',
1474
+ parameters: [{
1475
+ name: 'amount',
1476
+ min: 0,
1477
+ max: 1
1478
+ }, {
1479
+ name: 'radius',
1480
+ min: 0,
1481
+ max: 1
1482
+ }]
1483
+ },
1484
+ magnify: {
1485
+ type: 'magnify',
1486
+ name: 'Magnify',
1487
+ description: 'effectDescription.magnify',
1488
+ parameters: [{
1489
+ name: 'screenXY',
1490
+ type: 'array',
1491
+ label: ['Position X', 'Position Y'],
1492
+ defaultValue: [0.5, 0.5],
1493
+ min: 0,
1494
+ max: 1
1495
+ }, {
1496
+ name: 'radiusPixels',
1497
+ label: 'Size',
1498
+ min: 10,
1499
+ max: 500
1500
+ }, {
1501
+ name: 'zoom',
1502
+ min: 0.5,
1503
+ max: 50
1504
+ }, {
1505
+ name: 'borderWidthPixels',
1506
+ label: 'Border Width',
1507
+ defaultValue: 3,
1508
+ min: 0,
1509
+ max: 50
1510
+ }]
1511
+ },
1512
+ hexagonalPixelate: {
1513
+ type: 'hexagonalPixelate',
1514
+ name: 'Hexagonal Pixelate',
1515
+ description: 'effectDescription.hexagonalPixelate',
1516
+ parameters: [{
1517
+ name: 'scale',
1518
+ defaultValue: 20,
1519
+ min: 1,
1520
+ max: 50
1521
+ }]
1522
+ },
1523
+ distanceFog: {
1524
+ type: DISTANCE_FOG_TYPE,
1525
+ name: 'Distance Fog',
1526
+ description: 'effectDescription.distanceFog',
1527
+ parameters: [{
1528
+ name: 'density',
1529
+ defaultValue: 0.5,
1530
+ min: 0,
1531
+ max: 1
1532
+ }, {
1533
+ name: 'fogStart',
1534
+ label: 'Start',
1535
+ defaultValue: 0.3,
1536
+ min: 0,
1537
+ max: 1
1538
+ }, {
1539
+ name: 'fogRange',
1540
+ label: 'Range',
1541
+ defaultValue: 0.5,
1542
+ min: 0.01,
1543
+ max: 1
1544
+ }, {
1545
+ name: 'fogColor',
1546
+ type: 'color',
1547
+ min: 0,
1548
+ max: 255,
1549
+ defaultValue: [217, 222, 230]
1550
+ }]
1551
+ },
1552
+ surfaceFog: {
1553
+ type: SURFACE_FOG_TYPE,
1554
+ name: 'Surface Fog',
1555
+ description: 'effectDescription.surfaceFog',
1556
+ parameters: [{
1557
+ name: 'density',
1558
+ defaultValue: 0.6,
1559
+ min: 0,
1560
+ max: 1
1561
+ }, {
1562
+ name: 'height',
1563
+ label: 'Elevation (m)',
1564
+ defaultValue: 50,
1565
+ min: -200,
1566
+ max: 6000
1567
+ }, {
1568
+ name: 'animateHeight',
1569
+ type: 'checkbox',
1570
+ label: 'Animate Elevation',
1571
+ tooltip: 'Animates elevation from start to end value during video export preview and recording.',
1572
+ defaultValue: false,
1573
+ min: 0,
1574
+ max: 1
1575
+ }, {
1576
+ name: 'heightEnd',
1577
+ label: 'End Elevation (m)',
1578
+ defaultValue: 100,
1579
+ min: -200,
1580
+ max: 6000
1581
+ }, {
1582
+ name: 'linearEasing',
1583
+ type: 'checkbox',
1584
+ label: 'Linear Easing',
1585
+ tooltip: 'Uses constant speed instead of smooth ease-in / ease-out during elevation animation.',
1586
+ defaultValue: false,
1587
+ min: 0,
1588
+ max: 1
1589
+ }, {
1590
+ name: 'thickness',
1591
+ label: 'Transition (m)',
1592
+ defaultValue: 50,
1593
+ min: 0,
1594
+ max: 1000
1595
+ }, {
1596
+ name: 'fogColor',
1597
+ type: 'color',
1598
+ label: 'Fog Color',
1599
+ min: 0,
1600
+ max: 255,
1601
+ defaultValue: [230, 235, 242]
1602
+ }, {
1603
+ name: 'pattern',
1604
+ type: 'checkbox',
1605
+ label: 'Pattern',
1606
+ tooltip: 'Adds a noise pattern to the fog for a more natural, volumetric look.',
1607
+ defaultValue: false,
1608
+ min: 0,
1609
+ max: 1
1610
+ }]
1611
+ }
1612
+ };
1613
+ var EFFECT_DESCRIPTIONS = exports.EFFECT_DESCRIPTIONS = [LIGHT_AND_SHADOW_EFFECT].concat((0, _toConsumableArray2["default"])(Object.keys(POSTPROCESSING_EFFECTS).map(function (keyName) {
1614
+ return POSTPROCESSING_EFFECTS[keyName];
1615
+ })));
1616
+ var SYNC_TIMELINE_MODES = exports.SYNC_TIMELINE_MODES = {
1617
+ start: 0,
1618
+ end: 1
1619
+ };
1620
+ var GEOARROW_METADATA_KEY = exports.GEOARROW_METADATA_KEY = 'ARROW:extension:name';
1621
+
1622
+ /**
1623
+ * Enum holding GeoArrow extension type names
1624
+ */
1625
+ var GEOARROW_EXTENSIONS = exports.GEOARROW_EXTENSIONS = /*#__PURE__*/function (GEOARROW_EXTENSIONS) {
1626
+ GEOARROW_EXTENSIONS["POINT"] = "geoarrow.point";
1627
+ GEOARROW_EXTENSIONS["LINESTRING"] = "geoarrow.linestring";
1628
+ GEOARROW_EXTENSIONS["POLYGON"] = "geoarrow.polygon";
1629
+ GEOARROW_EXTENSIONS["MULTIPOINT"] = "geoarrow.multipoint";
1630
+ GEOARROW_EXTENSIONS["MULTILINESTRING"] = "geoarrow.multilinestring";
1631
+ GEOARROW_EXTENSIONS["MULTIPOLYGON"] = "geoarrow.multipolygon";
1632
+ GEOARROW_EXTENSIONS["WKB"] = "geoarrow.wkb";
1633
+ return GEOARROW_EXTENSIONS;
1634
+ }({});
1635
+ var LOADERS_CDN_VERSION = exports.LOADERS_CDN_VERSION = '4.3.2';
1636
+ var LOADERS_CDN_URL = exports.LOADERS_CDN_URL = 'https://unpkg.com/@loaders.gl';
1637
+ var getLoaderOptions = exports.getLoaderOptions = function getLoaderOptions() {
1638
+ return {
1639
+ mvt: {
1640
+ workerUrl: "".concat(LOADERS_CDN_URL, "/mvt@").concat(LOADERS_CDN_VERSION, "/dist/mvt-worker.js")
1641
+ },
1642
+ 'quantized-mesh': {
1643
+ workerUrl: "".concat(LOADERS_CDN_URL, "/terrain@").concat(LOADERS_CDN_VERSION, "/dist/quantized-mesh-worker.js")
1644
+ },
1645
+ npy: {
1646
+ workerUrl: "".concat(LOADERS_CDN_URL, "/textures@").concat(LOADERS_CDN_VERSION, "/dist/npy-worker.js")
1647
+ }
1648
+ };
1649
+ };
1650
+ var CUSTOM_SCENEGRAPH_MODEL_ID = exports.CUSTOM_SCENEGRAPH_MODEL_ID = 'custom';
1651
+ var MODELS_BASE_URL = 'https://studio-public-data.foursquare.com/statics/keplergl/3d-models.2022-06-13';
1652
+ var TRIP_LAYER_SCENEGRAPH_MODELS = exports.TRIP_LAYER_SCENEGRAPH_MODELS = [{
1653
+ id: 'airplane',
1654
+ label: 'Airplane',
1655
+ icon: null,
1656
+ url: "".concat(MODELS_BASE_URL, "/Plane.glb"),
1657
+ angles: [0, 0, 0],
1658
+ scale: 1.0
1659
+ }, {
1660
+ id: 'boeing777',
1661
+ label: 'Airliner',
1662
+ icon: null,
1663
+ url: "".concat(MODELS_BASE_URL, "/Airliner.glb"),
1664
+ angles: [0, 0, 0],
1665
+ scale: 1.0
1666
+ }, {
1667
+ id: 'uber-evtol',
1668
+ label: 'VTOL',
1669
+ icon: null,
1670
+ url: "".concat(MODELS_BASE_URL, "/evtol.glb"),
1671
+ angles: [0, 0, 0],
1672
+ scale: 1.0
1673
+ }, {
1674
+ id: 'hang-glider',
1675
+ label: 'Glider',
1676
+ icon: null,
1677
+ url: "".concat(MODELS_BASE_URL, "/Hangglider.glb"),
1678
+ angles: [0, 0, 0],
1679
+ scale: 1.0
1680
+ }, {
1681
+ id: 'helicopter',
1682
+ label: 'Helicopter',
1683
+ icon: null,
1684
+ url: "".concat(MODELS_BASE_URL, "/Helicopter.glb"),
1685
+ angles: [0, 0, 0],
1686
+ scale: 1.0
1687
+ }, {
1688
+ id: 'bicycle',
1689
+ label: 'Bicycle',
1690
+ icon: null,
1691
+ url: "".concat(MODELS_BASE_URL, "/Bicycle.glb"),
1692
+ angles: [0, 0, 0],
1693
+ scale: 1.0
1694
+ }, {
1695
+ id: 'scooter',
1696
+ label: 'Scooter',
1697
+ icon: null,
1698
+ url: "".concat(MODELS_BASE_URL, "/Scooter.glb"),
1699
+ angles: [0, 0, 0],
1700
+ scale: 1.0
1701
+ }, {
1702
+ id: 'car',
1703
+ label: 'Car',
1704
+ icon: null,
1705
+ url: "".concat(MODELS_BASE_URL, "/Car.glb"),
1706
+ angles: [0, 0, 0],
1707
+ scale: 1.0
1708
+ }, {
1709
+ id: 'truck',
1710
+ label: 'Truck',
1711
+ icon: null,
1712
+ url: "".concat(MODELS_BASE_URL, "/Truck.glb"),
1713
+ angles: [0, 0, 0],
1714
+ scale: 1.0
1715
+ }, {
1716
+ id: 'semitruck',
1717
+ label: 'Semitruck',
1718
+ icon: null,
1719
+ url: "".concat(MODELS_BASE_URL, "/Semitruck.glb"),
1720
+ angles: [0, 0, 0],
1721
+ scale: 1.0
1722
+ }, {
1723
+ id: 'cargoship',
1724
+ label: 'Cargoship',
1725
+ icon: null,
1726
+ url: "".concat(MODELS_BASE_URL, "/Cargoship.glb"),
1727
+ angles: [0, 0, 0],
1728
+ scale: 1.0
1729
+ }, {
1730
+ id: CUSTOM_SCENEGRAPH_MODEL_ID,
1731
+ label: 'Custom',
1732
+ icon: null,
1733
+ url: null,
1734
+ angles: [0, 0, 0],
1735
+ scale: 1.0
1736
+ }];
1737
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfa2V5bWlycm9yIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfZDNTY2FsZSIsIl90b29sdGlwIiwiX0ZJRUxEX1RZUEVfRElTUExBWSIsIl9GSUVMRF9PUFRTIiwib3duS2V5cyIsImUiLCJyIiwidCIsIk9iamVjdCIsImtleXMiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJvIiwiZmlsdGVyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiZW51bWVyYWJsZSIsInB1c2giLCJhcHBseSIsIl9vYmplY3RTcHJlYWQiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJmb3JFYWNoIiwiX2RlZmluZVByb3BlcnR5MiIsImdldE93blByb3BlcnR5RGVzY3JpcHRvcnMiLCJkZWZpbmVQcm9wZXJ0aWVzIiwiZGVmaW5lUHJvcGVydHkiLCJBQ1RJT05fUFJFRklYIiwiZXhwb3J0cyIsIktFUExFUl9VTkZPTERFRF9CVUNLRVQiLCJCQVNFTUFQX0lDT05fUFJFRklYIiwiREVGQVVMVF9NQVBCT1hfQVBJX1VSTCIsIlRSQU5TSVRJT05fRFVSQVRJT04iLCJEQVRBX1RBQkxFX0lEIiwiREVMRVRFX0RBVEFfSUQiLCJBRERfREFUQV9JRCIsIkVYUE9SVF9JTUFHRV9JRCIsIkVYUE9SVF9EQVRBX0lEIiwiQUREX01BUF9TVFlMRV9JRCIsIkVYUE9SVF9NQVBfSUQiLCJFWFBPUlRfVklERU9fSUQiLCJTQVZFX01BUF9JRCIsIk9WRVJXUklURV9NQVBfSUQiLCJTSEFSRV9NQVBfSUQiLCJLRVBMRVJfR0xfTkFNRSIsIktFUExFUl9HTF9WRVJTSU9OIiwiS0VQTEVSX0dMX1dFQlNJVEUiLCJESU1FTlNJT05TIiwic2lkZVBhbmVsIiwid2lkdGgiLCJtYXJnaW4iLCJ0b3AiLCJsZWZ0IiwiYm90dG9tIiwicmlnaHQiLCJoZWFkZXJIZWlnaHQiLCJtYXBDb250cm9sIiwicGFkZGluZyIsIm1hcExlZ2VuZCIsInBpbm5lZCIsIlRIRU1FIiwia2V5TWlycm9yIiwibGlnaHQiLCJkYXJrIiwiYmFzZSIsIlNJREVCQVJfUEFORUxTIiwiaWQiLCJsYWJlbCIsIm9uQ2xpY2siLCJQQU5FTF9WSUVXX1RPR0dMRVMiLCJsaXN0IiwiYnlEYXRhc2V0IiwiUEFORUxTIiwiREVGQVVMVF9CTERHX0NPTE9SIiwiREVGQVVMVF9CQUNLR1JPVU5EX0NPTE9SIiwiQkFTRV9NQVBfQkFDS0dST1VORF9MQVlFUl9JRFMiLCJCQUNLR1JPVU5EX0xBWUVSX0dST1VQX1NMVUciLCJUSFJFRV9EX0JVSUxESU5HX0xBWUVSX0dST1VQX1NMVUciLCJCQUNLR1JPVU5EX0xBWUVSX0dST1VQIiwic2x1ZyIsImRlZmF1bHRWaXNpYmlsaXR5IiwiaXNWaXNpYmlsaXR5VG9nZ2xlQXZhaWxhYmxlIiwiaXNNb3ZlVG9Ub3BBdmFpbGFibGUiLCJpc0NvbG9yUGlja2VyQXZhaWxhYmxlIiwiREVGQVVMVF9MQVlFUl9HUk9VUFMiLCJfcmVmIiwidHlwZSIsIm1hdGNoIiwiX3JlZjIiLCJfcmVmMyIsIl9yZWY0IiwiX3JlZjUiLCJfcmVmNiIsIkJBU0VfTUFQX0NPTE9SX01PREVTIiwiTk9ORSIsIkRBUksiLCJMSUdIVCIsIk5PX01BUF9JRCIsIkVNUFRZX01BUEJPWF9TVFlMRSIsInZlcnNpb24iLCJzb3VyY2VzIiwibGF5ZXJzIiwiTUFQX0xJQl9PUFRJT05TIiwiTUFQQk9YIiwiTUFQTElCUkUiLCJNQVBCT1hfTUFYX1BJVENIIiwiTk9fQkFTRU1BUF9JQ09OIiwiY29uY2F0IiwiREVGQVVMVF9CQVNFX01BUF9TVFlMRSIsIkRFRkFVTFRfTk9fQkFTRU1BUF9TVFlMRSIsInVybCIsImljb24iLCJsYXllckdyb3VwcyIsImNvbG9yTW9kZSIsInN0eWxlIiwiREVGQVVMVF9NQVBCT1hfU1RZTEVTIiwiY29tcGxpbWVudGFyeVN0eWxlSWQiLCJERUZBVUxUX01BUEJPWF9TQVRFTElURV9TVFlMRVMiLCJERUZBVUxUX01BUExJQlJFX1NUWUxFUyIsIkRFRkFVTFRfTUFQX1NUWUxFUyIsIkdFT0pTT05fRklFTERTIiwiZ2VvanNvbiIsIklDT05fRklFTERTIiwiVFJJUF9QT0lOVF9GSUVMRFMiLCJBTFRJVFVERV9GSUVMRFMiLCJUUklQX0FSQ19GSUVMRFMiLCJsYXQwIiwibG5nMCIsImxhdDEiLCJsbmcxIiwiRklMVEVSX1RZUEVTIiwicmFuZ2UiLCJzZWxlY3QiLCJpbnB1dCIsInRpbWVSYW5nZSIsIm11bHRpU2VsZWN0IiwicG9seWdvbiIsIkZJTFRFUl9WSUVXX1RZUEVTIiwic2lkZSIsImVubGFyZ2VkIiwibWluaWZpZWQiLCJERUZBVUxUX0ZJTFRFUl9WSUVXX1RZUEUiLCJTQ0FMRV9UWVBFUyIsIm9yZGluYWwiLCJxdWFudGlsZSIsInF1YW50aXplIiwibGluZWFyIiwic3FydCIsImxvZyIsInRocmVzaG9sZCIsImN1c3RvbSIsImN1c3RvbU9yZGluYWwiLCJwb2ludCIsIlNDQUxFX1RZUEVfTkFNRVMiLCJTQ0FMRV9GVU5DIiwic2NhbGVMaW5lYXIiLCJzY2FsZVF1YW50aXplIiwic2NhbGVRdWFudGlsZSIsInNjYWxlT3JkaW5hbCIsInNjYWxlU3FydCIsInNjYWxlTG9nIiwic2NhbGVQb2ludCIsInNjYWxlVGhyZXNob2xkIiwiQUxMX0ZJRUxEX1RZUEVTIiwiZGF0ZSIsImludGVnZXIiLCJyZWFsIiwic3RyaW5nIiwidGltZXN0YW1wIiwiYXJyYXkiLCJvYmplY3QiLCJnZW9hcnJvdyIsImgzIiwiU09SVF9PUkRFUiIsIkFTQ0VORElORyIsIkRFU0NFTkRJTkciLCJVTlNPUlQiLCJUQUJMRV9PUFRJT04iLCJTT1JUX0FTQyIsIlNPUlRfREVTIiwiUElOIiwiVU5QSU4iLCJDT1BZIiwiRk9STUFUX0NPTFVNTiIsIlRBQkxFX09QVElPTl9MSVNUIiwidmFsdWUiLCJkaXNwbGF5IiwiY29uZGl0aW9uIiwicHJvcHMiLCJzb3J0VGFibGVDb2x1bW4iLCJzb3J0TW9kZSIsImlzU29ydGVkIiwiaXNQaW5uZWQiLCJzZXREaXNwbGF5Rm9ybWF0IiwiWUVMTE9XIiwiUElOSyIsIlBVUlBMRSIsIkJMVUUiLCJCTFVFMiIsIkJMVUUzIiwiR1JFRU4iLCJHUkVFTjIiLCJSRUQiLCJPUkFOR0UiLCJGSUVMRF9UWVBFX0RJU1BMQVkiLCJjb2xvciIsIkZJRUxEX0NPTE9SUyIsIkhJR0hMSUdIX0NPTE9SXzNEIiwiQ0hBTk5FTF9TQ0FMRVMiLCJyYWRpdXMiLCJzaXplIiwiY29sb3JBZ2dyIiwic2l6ZUFnZ3IiLCJhbmdsZSIsIkFHR1JFR0FUSU9OX1RZUEVTIiwiY291bnQiLCJhdmVyYWdlIiwibWF4aW11bSIsIm1pbmltdW0iLCJtZWRpYW4iLCJzdGRldiIsInN1bSIsInZhcmlhbmNlIiwibW9kZSIsImNvdW50VW5pcXVlIiwiQUdHUkVHQVRJT05fVFlQRV9PUFRJT05TIiwiZW50cmllcyIsIm1hcCIsIl9yZWY3IiwiX3JlZjgiLCJfc2xpY2VkVG9BcnJheTIiLCJrZXkiLCJjaGFyQXQiLCJ0b1VwcGVyQ2FzZSIsInNsaWNlIiwibGluZWFyRmllbGRTY2FsZUZ1bmN0aW9ucyIsIkRFRkFVTFRfQUdHUkVHQVRJT05fQ09MT1JfU0NBTEVTIiwibGluZWFyRmllbGRBZ2dyU2NhbGVGdW5jdGlvbnMiLCJyZWR1Y2UiLCJwcmV2IiwiY3VyIiwib3JkaW5hbEZpZWxkU2NhbGVGdW5jdGlvbnMiLCJvcmRpbmFsRmllbGRBZ2dyU2NhbGVGdW5jdGlvbnMiLCJub3RTdXBwb3J0ZWRTY2FsZU9wdHMiLCJub3RTdXBwb3J0QWdnck9wdHMiLCJERUZBVUxUX0FHR1JFR0FUSU9OIiwiRklFTERfT1BUUyIsInNjYWxlIiwiZm9ybWF0IiwibGVnZW5kIiwiZCIsInRvb2x0aXAiLCJUT09MVElQX0ZPUk1BVF9UWVBFUyIsIkRFQ0lNQUwiLCJQRVJDRU5UQUdFIiwiREFURSIsIkRBVEVfVElNRSIsIl90b0NvbnN1bWFibGVBcnJheTIiLCJCT09MRUFOIiwiQ0hBTk5FTF9TQ0FMRV9TVVBQT1JURURfRklFTERTIiwiYWNjdSIsImZ0IiwiREVGQVVMVF9MQVlFUl9DT0xPUiIsInRyaXBBcmMiLCJiZWdpbnRyaXBfbGF0IiwiZHJvcG9mZl9sYXQiLCJyZXF1ZXN0X2xhdCIsIkRFRkFVTFRfTEFZRVJfQ09MT1JfUEFMRVRURSIsIkRFRkFVTFRfTEFZRVJfQ09MT1JfUEFMRVRURV9TVEVQUyIsIkRFRkFVTFRfVE9PTFRJUF9GSUVMRFMiLCJOT19WQUxVRV9DT0xPUiIsIkRFRkFVTFRfUElDS0lOR19SQURJVVMiLCJPVkVSTEFZX0JMRU5ESU5HUyIsIm5vcm1hbCIsInNjcmVlbiIsImRhcmtlbiIsIkxBWUVSX0JMRU5ESU5HUyIsImFkZGl0aXZlIiwiYmxlbmRGdW5jIiwiYmxlbmRFcXVhdGlvbiIsInN1YnRyYWN0aXZlIiwiTUFYX0RFRkFVTFRfVE9PTFRJUFMiLCJSRVNPTFVUSU9OUyIsIk9ORV9YIiwiVFdPX1giLCJFWFBPUlRfSU1HX1JBVElPUyIsIlNDUkVFTiIsIkZPVVJfQllfVEhSRUUiLCJTSVhURUVOX0JZX05JTkUiLCJDVVNUT00iLCJTY3JlZW5SYXRpb09wdGlvbiIsImdldFNpemUiLCJzY3JlZW5XIiwic2NyZWVuSCIsImhlaWdodCIsIkN1c3RvbVJhdGlvT3B0aW9uIiwiaGlkZGVuIiwibWFwVyIsIm1hcEgiLCJGb3VyQnlUaHJlZVJhdGlvT3B0aW9uIiwiTWF0aCIsInJvdW5kIiwiU2l4dGVlbkJ5TmluZVJhdGlvT3B0aW9uIiwiRVhQT1JUX0lNR19SQVRJT19PUFRJT05TIiwiT25lWFJlc29sdXRpb25PcHRpb24iLCJhdmFpbGFibGUiLCJUd29YUmVzb2x1dGlvbk9wdGlvbiIsIlJlc29sdXRpb24xOTIweDEwODBPcHRpb24iLCJSZXNvbHV0aW9uMTI4MHg3MjBPcHRpb24iLCJSZXNvbHV0aW9uMjU2MHgxNDQwT3B0aW9uIiwiUmVzb2x1dGlvbjE2MDB4OTAwT3B0aW9uIiwiUmVzb2x1dGlvbjEwMjR4NzY4T3B0aW9uIiwiUmVzb2x1dGlvbjEyODB4OTYwT3B0aW9uIiwiUmVzb2x1dGlvbjE2MDB4MTIwME9wdGlvbiIsIlJlc29sdXRpb24xOTIweDE0NDBPcHRpb24iLCJFWFBPUlRfSU1HX1JFU09MVVRJT05fT1BUSU9OUyIsIkVYUE9SVF9EQVRBX1RZUEUiLCJDU1YiLCJFWFBPUlRfREFUQV9UWVBFX09QVElPTlMiLCJ0b0xvd2VyQ2FzZSIsIkVYUE9SVF9NQVBfRk9STUFUUyIsIkhUTUwiLCJKU09OIiwiRVhQT1JUX0hUTUxfTUFQX01PREVTIiwiUkVBRCIsIkVESVQiLCJFWFBPUlRfTUFQX0ZPUk1BVF9PUFRJT05TIiwiZW50cnkiLCJnZXRIVE1MTWFwTW9kZVRpbGVVcmwiLCJFWFBPUlRfSFRNTF9NQVBfTU9ERV9PUFRJT05TIiwiREVGQVVMVF9VVUlEX0NPVU5UIiwiREVGQVVMVF9OT1RJRklDQVRJT05fTUVTU0FHRSIsIkRFRkFVTFRfTk9USUZJQ0FUSU9OX1RZUEVTIiwiaW5mbyIsImVycm9yIiwid2FybmluZyIsInN1Y2Nlc3MiLCJERUZBVUxUX05PVElGSUNBVElPTl9UT1BJQ1MiLCJnbG9iYWwiLCJmaWxlIiwiVEhST1RUTEVfTk9USUZJQ0FUSU9OX1RJTUUiLCJCQVNFX1NQRUVEIiwiRlBTIiwiQU5JTUFUSU9OX1dJTkRPVyIsImZyZWUiLCJpbmNyZW1lbnRhbCIsImludGVydmFsIiwiREVGQVVMVF9USU1FX0ZPUk1BVCIsIlNQRUVEX0NPTlRST0xfUkFOR0UiLCJTUEVFRF9DT05UUk9MX1NURVAiLCJHRU9DT0RFUl9EQVRBU0VUX05BTUUiLCJHRU9DT0RFUl9MQVlFUl9JRCIsIkdFT0NPREVSX0dFT19PRkZTRVQiLCJHRU9DT0RFUl9JQ09OX0NPTE9SIiwiR0VPQ09ERVJfSUNPTl9TSVpFIiwiRURJVE9SX0xBWUVSX0lEIiwiRURJVE9SX0xBWUVSX1BJQ0tJTkdfUkFESVVTIiwiRURJVE9SX01PREVTIiwiRFJBV19QT0xZR09OIiwiRFJBV19SRUNUQU5HTEUiLCJEUkFXX0xJTkVTVFJJTkciLCJEUkFXX1BPSU5UIiwiRURJVE9SX0RSQVdfTU9ERVMiLCJQTE9UX1RZUEVTIiwiaGlzdG9ncmFtIiwibGluZUNoYXJ0IiwiSU5JVF9GSUxURVJfSVRFTVNfSU5fRFJPUERPV04iLCJNQVhfR1BVX0ZJTFRFUlMiLCJNQVBfVEhVTUJOQUlMX0RJTUVOU0lPTiIsIk1BUF9JTkZPX0NIQVJBQ1RFUiIsInRpdGxlIiwiZGVzY3JpcHRpb24iLCJMT0FESU5HX01FVEhPRFMiLCJ1cGxvYWQiLCJzdG9yYWdlIiwidGlsZXNldCIsIkRFRkFVTFRfRkVBVFVSRV9GTEFHUyIsIkRBVEFTRVRfRk9STUFUUyIsInJvdyIsImNzdiIsImtlcGxlcmdsIiwiYXJyb3ciLCJkdWNrZGIiLCJNQVBfQ09OVFJPTFMiLCJ2aXNpYmxlTGF5ZXJzIiwidG9nZ2xlM2QiLCJzcGxpdE1hcCIsIm1hcERyYXciLCJtYXBMb2NhbGUiLCJtYXBUaGVtZSIsImVmZmVjdCIsImFubm90YXRpb24iLCJhaUFzc2lzdGFudCIsIk1hcFZpZXdNb2RlIiwiR0xPQkVfTUlOX1pPT00iLCJHTE9CRV9NQVhfWk9PTSIsIkdMT0JFX01BWF9MQVRJVFVERSIsIkRFRkFVTFRfR0xPQkVfQ09ORklHIiwiYXRtb3NwaGVyZSIsImh1Z2VIYWxvIiwiaHVnZUhhbG9SYWRpdXMiLCJodWdlSGFsb09wYWNpdHkiLCJhemltdXRoIiwiYXppbXV0aEFuZ2xlIiwidGVybWluYXRvciIsInRlcm1pbmF0b3JPcGFjaXR5IiwiYmFzZW1hcCIsImxhYmVscyIsImxhYmVsc0NvbG9yIiwiYWRtaW5MaW5lcyIsImFkbWluTGluZXNDb2xvciIsIndhdGVyIiwid2F0ZXJDb2xvciIsInN1cmZhY2UiLCJzdXJmYWNlQ29sb3IiLCJiYWNrZ3JvdW5kQ29sb3IiLCJzdGFycyIsIkdMT0JFX1NVUFBPUlRFRF9MQVlFUlMiLCJhcmMiLCJncmlkIiwiaGV4YWdvbiIsImNsdXN0ZXIiLCJoZXhhZ29uSWQiLCJ2ZWN0b3JUaWxlIiwiaGV4VGlsZSIsImxpbmUiLCJ0cmlwIiwicmFzdGVyVGlsZSIsImhlYXRtYXAiLCJzMiIsInRpbGUzZCIsImZsb3ciLCJNYXBTcGxpdE1vZGUiLCJQUk9KRUNURURfUElYRUxfU0laRV9NVUxUSVBMSUVSIiwiVEVYVF9PVVRMSU5FX01VTFRJUExJRVIiLCJkYXRhVGVzdElkcyIsImluZm9JY29uIiwid2FybmluZ0ljb24iLCJlcnJvckljb24iLCJzdWNjZXNzSWNvbiIsImNoZWNrbWFya0ljb24iLCJzb3J0YWJsZUxheWVySXRlbSIsInN0YXRpY0xheWVySXRlbSIsImxheWVyVGl0bGVFZGl0b3IiLCJyZW1vdmVMYXllckFjdGlvbiIsImxheWVyUGFuZWwiLCJzb3J0YWJsZUVmZmVjdEl0ZW0iLCJzdGF0aWNFZmZlY3RJdGVtIiwicHJvdmlkZXJMb2FkaW5nIiwicHJvdmlkZXJNYXBJbmZvUGFuZWwiLCJwcm92aWRlclNlbGVjdCIsImNsb3VkSGVhZGVyIiwicHJvdmlkZXJTaGFyZU1hcCIsIkRFRkFVTFRfVElNRVpPTkUiLCJERUZBVUxUX1BPU1RfUFJPQ0VTU0lOR19FRkZFQ1RfVFlQRSIsIkRFRkFVTFRfTElHSFRfQ09MT1IiLCJERUZBVUxUX0xJR0hUX0lOVEVOU0lUWSIsIkRFRkFVTFRfU0hBRE9XX0lOVEVOU0lUWSIsIkRFRkFVTFRfU0hBRE9XX0NPTE9SIiwiTElHSFRfQU5EX1NIQURPV19FRkZFQ1RfVElNRV9NT0RFUyIsInBpY2siLCJjdXJyZW50IiwiYW5pbWF0aW9uIiwiREVGQVVMVF9MSUdIVF9BTkRfU0hBRE9XX1BST1BTIiwiRGF0ZSIsIm5vdyIsInRpbWVNb2RlIiwic2hhZG93SW50ZW5zaXR5Iiwic2hhZG93Q29sb3IiLCJzdW5MaWdodENvbG9yIiwic3VuTGlnaHRJbnRlbnNpdHkiLCJhbWJpZW50TGlnaHRDb2xvciIsImFtYmllbnRMaWdodEludGVuc2l0eSIsIkxJR0hUX0FORF9TSEFET1dfRUZGRUNUIiwibmFtZSIsInBhcmFtZXRlcnMiLCJtaW4iLCJtYXgiLCJOdW1iZXIiLCJNQVhfU0FGRV9JTlRFR0VSIiwiZGVmYXVsdFZhbHVlIiwiRElTVEFOQ0VfRk9HX1RZUEUiLCJTVVJGQUNFX0ZPR19UWVBFIiwiUE9TVFBST0NFU1NJTkdfRUZGRUNUUyIsImluayIsImJyaWdodG5lc3NDb250cmFzdCIsImh1ZVNhdHVyYXRpb24iLCJ2aWJyYW5jZSIsInNlcGlhIiwiZG90U2NyZWVuIiwiUEkiLCJjb2xvckhhbGZ0b25lIiwibm9pc2UiLCJ0cmlhbmdsZUJsdXIiLCJ6b29tQmx1ciIsInRpbHRTaGlmdCIsImVkZ2VXb3JrIiwidmlnbmV0dGUiLCJtYWduaWZ5IiwiaGV4YWdvbmFsUGl4ZWxhdGUiLCJkaXN0YW5jZUZvZyIsInN1cmZhY2VGb2ciLCJFRkZFQ1RfREVTQ1JJUFRJT05TIiwia2V5TmFtZSIsIlNZTkNfVElNRUxJTkVfTU9ERVMiLCJzdGFydCIsImVuZCIsIkdFT0FSUk9XX01FVEFEQVRBX0tFWSIsIkdFT0FSUk9XX0VYVEVOU0lPTlMiLCJMT0FERVJTX0NETl9WRVJTSU9OIiwiTE9BREVSU19DRE5fVVJMIiwiZ2V0TG9hZGVyT3B0aW9ucyIsIm12dCIsIndvcmtlclVybCIsIm5weSIsIkNVU1RPTV9TQ0VORUdSQVBIX01PREVMX0lEIiwiTU9ERUxTX0JBU0VfVVJMIiwiVFJJUF9MQVlFUl9TQ0VORUdSQVBIX01PREVMUyIsImFuZ2xlcyJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kZWZhdWx0LXNldHRpbmdzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVRcbi8vIENvcHlyaWdodCBjb250cmlidXRvcnMgdG8gdGhlIGtlcGxlci5nbCBwcm9qZWN0XG5cbmltcG9ydCBrZXlNaXJyb3IgZnJvbSAna2V5bWlycm9yJztcblxuaW1wb3J0IHtcbiAgQmFzZU1hcFN0eWxlLFxuICBFZmZlY3REZXNjcmlwdGlvbixcbiAgUkdCQUNvbG9yLFxuICBTeW5jVGltZWxpbmVNb2RlLFxuICBCYXNlTWFwQ29sb3JNb2RlcyxcbiAgTWVyZ2Vcbn0gZnJvbSAnQGtlcGxlci5nbC90eXBlcyc7XG5pbXBvcnQge1xuICBzY2FsZUxpbmVhcixcbiAgc2NhbGVMb2csXG4gIHNjYWxlT3JkaW5hbCxcbiAgc2NhbGVQb2ludCxcbiAgc2NhbGVRdWFudGlsZSxcbiAgc2NhbGVRdWFudGl6ZSxcbiAgc2NhbGVTcXJ0LFxuICBzY2FsZVRocmVzaG9sZFxufSBmcm9tICdkMy1zY2FsZSc7XG5pbXBvcnQge1RPT0xUSVBfRk9STUFUX1RZUEVTfSBmcm9tICcuL3Rvb2x0aXAnO1xuXG5leHBvcnQgY29uc3QgQUNUSU9OX1BSRUZJWCA9ICdAQGtlcGxlci5nbC8nO1xuZXhwb3J0IGNvbnN0IEtFUExFUl9VTkZPTERFRF9CVUNLRVQgPSAnaHR0cHM6Ly9zdHVkaW8tcHVibGljLWRhdGEuZm91cnNxdWFyZS5jb20vc3RhdGljcy9rZXBsZXJnbCc7XG5leHBvcnQgY29uc3QgQkFTRU1BUF9JQ09OX1BSRUZJWCA9IGBnZW9kdWRlYDtcbmV4cG9ydCBjb25zdCBERUZBVUxUX01BUEJPWF9BUElfVVJMID0gJ2h0dHBzOi8vYXBpLm1hcGJveC5jb20nO1xuZXhwb3J0IGNvbnN0IFRSQU5TSVRJT05fRFVSQVRJT04gPSAwO1xuXG4vLyBNb2RhbCBJZHNcbi8qKlxuICogTW9kYWwgaWQ6IGRhdGEgdGFibGVcbiAqIEBjb25zdGFudFxuICogQHR5cGUge3N0cmluZ31cbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IERBVEFfVEFCTEVfSUQgPSAnZGF0YVRhYmxlJztcbi8qKlxuICogTW9kYWwgaWQ6IGRlbGV0ZSBkYXRhc2V0IGNvbmZpcm0gZGlhbG9nXG4gKiBAY29uc3RhbnRcbiAqIEB0eXBlIHtzdHJpbmd9XG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBERUxFVEVfREFUQV9JRCA9ICdkZWxldGVEYXRhJztcbi8qKlxuICogTW9kYWwgaWQ6IGFkZCBkYXRhIG1vZGFsXG4gKiBAY29uc3RhbnRcbiAqIEB0eXBlIHtzdHJpbmd9XG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBBRERfREFUQV9JRCA9ICdhZGREYXRhJztcbi8qKlxuICogTW9kYWwgaWQ6IGV4cG9ydCBpbWFnZSBtb2RhbFxuICogQGNvbnN0YW50XG4gKiBAdHlwZSB7c3RyaW5nfVxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgRVhQT1JUX0lNQUdFX0lEID0gJ2V4cG9ydEltYWdlJztcbi8qKlxuICogTW9kYWwgaWQ6IGV4cG9ydCBkYXRhIG1vZGFsXG4gKiBAY29uc3RhbnRcbiAqIEB0eXBlIHtzdHJpbmd9XG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBFWFBPUlRfREFUQV9JRCA9ICdleHBvcnREYXRhJztcbi8qKlxuICogTW9kYWwgaWQ6IGFkZCBjdXN0b20gbWFwIHN0eWxlIG1vZGFsXG4gKiBAY29uc3RhbnRcbiAqIEB0eXBlIHtzdHJpbmd9XG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBBRERfTUFQX1NUWUxFX0lEID0gJ2FkZE1hcFN0eWxlJztcbi8qKlxuICogTW9kYWwgaWQ6IGV4cG9ydCBtYXAgbW9kYWxcbiAqIEBjb25zdGFudFxuICogQHR5cGUge3N0cmluZ31cbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IEVYUE9SVF9NQVBfSUQgPSAnZXhwb3J0TWFwJztcbi8qKlxuICogTW9kYWwgaWQ6IGV4cG9ydCB2aWRlbyBtb2RhbFxuICogQGNvbnN0YW50XG4gKiBAdHlwZSB7c3RyaW5nfVxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgRVhQT1JUX1ZJREVPX0lEID0gJ2V4cG9ydFZpZGVvJztcbi8qKlxuICogTW9kYWwgaWQ6IHNhdmUgbWFwIG1vZGFsXG4gKiBAY29uc3RhbnRcbiAqIEB0eXBlIHtzdHJpbmd9XG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBTQVZFX01BUF9JRCA9ICdzYXZlTWFwJztcbi8qKlxuICogTW9kYWwgaWQ6IGNvbmZpcm0gdG8gb3ZlcndyaXRlIHNhdmVkIG1hcFxuICogQGNvbnN0YW50XG4gKiBAdHlwZSB7c3RyaW5nfVxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgT1ZFUldSSVRFX01BUF9JRCA9ICdvdmVyd3JpdGVNYXAnO1xuLyoqXG4gKiBNb2RhbCBpZDogc2hhcmUgbWFwIHVybCBtb2RhbFxuICogQGNvbnN0YW50XG4gKiBAdHlwZSB7c3RyaW5nfVxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgU0hBUkVfTUFQX0lEID0gJ3NoYXJlTWFwJztcblxuZXhwb3J0IGNvbnN0IEtFUExFUl9HTF9OQU1FID0gJ2tlcGxlci5nbCc7XG5cbi8vIF9fUEFDS0FHRV9WRVJTSU9OX18gaXMgYXV0b21hdGljYWxseSBpbmplY3RlZCBieSBCYWJlbC9Fc2J1aWxkIGR1cmluZyB0aGUgYnVpbGQgcHJvY2Vzc1xuLy8gU2luY2Ugd2UgYXJlIGluamVjdGluZyB0aGlzIGR1cmluZyB0aGUgYnVpbGQgcHJvY2VzcyB3aXRoIGJhYmVsXG4vLyB3aGlsZSBkZXZlbG9waW5nIFZFUlNJT04gaXMgbm90IGRlZmluZWQsIHdlIGNhcHR1cmUgdGhlIGV4Y2VwdGlvbiBhbmQgcmV0dXJuXG4vLyBhbiBlbXB0eSBzdHJpbmcgd2hpY2ggd2lsbCBhbGxvdyB1cyB0byByZXRyaWV2ZSB0aGUgbGF0ZXN0IHVtZCB2ZXJzaW9uXG5leHBvcnQgY29uc3QgS0VQTEVSX0dMX1ZFUlNJT04gPSAnX19QQUNLQUdFX1ZFUlNJT05fXyc7XG5leHBvcnQgY29uc3QgS0VQTEVSX0dMX1dFQlNJVEUgPSAnaHR0cDovL2tlcGxlci5nbC8nO1xuXG5leHBvcnQgY29uc3QgRElNRU5TSU9OUyA9IHtcbiAgc2lkZVBhbmVsOiB7XG4gICAgd2lkdGg6IDMwMCxcbiAgICBtYXJnaW46IHt0b3A6IDEyLCBsZWZ0OiAxMiwgYm90dG9tOiAxMiwgcmlnaHQ6IDIwfSxcbiAgICBoZWFkZXJIZWlnaHQ6IDk2XG4gIH0sXG4gIG1hcENvbnRyb2w6IHtcbiAgICB3aWR0aDogMTg0LFxuICAgIHBhZGRpbmc6IDEyLFxuICAgIG1hcExlZ2VuZDoge1xuICAgICAgcGlubmVkOiB7XG4gICAgICAgIGJvdHRvbTogMjIsXG4gICAgICAgIHJpZ2h0OiAxMlxuICAgICAgfVxuICAgIH1cbiAgfVxufTtcblxuLyoqXG4gKiBUaGVtZSBuYW1lIHRoYXQgY2FuIGJlIHBhc3NlZCB0byBgS2VwbGVyR2xgIGBwcm9wLnRoZW1lYC5cbiAqIEF2YWlsYWJsZSB0aGVtZXMgYXJlIGBUSEVNRS5saWdodGAgYW5kIGBUSEVNRS5kYXJrYC4gRGVmYXVsdCB0aGVtZSBpcyBgVEhFTUUuZGFya2BcbiAqIEBjb25zdGFudFxuICogQHR5cGUge29iamVjdH1cbiAqIEBwdWJsaWNcbiAqIEBleGFtcGxlXG4gKiBgYGBqc1xuICogY29uc3QgTWFwID0gKCkgPT4gPEtlcGxlckdsIHRoZW1lPXtUSEVNRS5saWdodH0gaWQ9XCJtYXBcIi8+XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGNvbnN0IFRIRU1FID0ga2V5TWlycm9yKHtcbiAgbGlnaHQ6IG51bGwsXG4gIGRhcms6IG51bGwsXG4gIGJhc2U6IG51bGxcbn0pO1xuXG5leHBvcnQgY29uc3QgU0lERUJBUl9QQU5FTFMgPSBbXG4gIHtcbiAgICBpZDogJ2xheWVyJyxcbiAgICBsYWJlbDogJ3NpZGViYXIucGFuZWxzLmxheWVyJyxcbiAgICBvbkNsaWNrOiBudWxsXG4gIH0sXG4gIHtcbiAgICBpZDogJ2ZpbHRlcicsXG4gICAgbGFiZWw6ICdzaWRlYmFyLnBhbmVscy5maWx0ZXInLFxuICAgIG9uQ2xpY2s6IG51bGxcbiAgfSxcbiAge1xuICAgIGlkOiAnaW50ZXJhY3Rpb24nLFxuICAgIGxhYmVsOiAnc2lkZWJhci5wYW5lbHMuaW50ZXJhY3Rpb24nLFxuICAgIG9uQ2xpY2s6IG51bGxcbiAgfSxcbiAge1xuICAgIGlkOiAnbWFwJyxcbiAgICBsYWJlbDogJ3NpZGViYXIucGFuZWxzLmJhc2VtYXAnLFxuICAgIG9uQ2xpY2s6IG51bGxcbiAgfVxuXTtcblxuZXhwb3J0IGNvbnN0IFBBTkVMX1ZJRVdfVE9HR0xFUyA9IGtleU1pcnJvcih7XG4gIGxpc3Q6IG51bGwsXG4gIGJ5RGF0YXNldDogbnVsbFxufSk7XG5cbi8vIGJhY2t3YXJkIGNvbXBhdGliaWxpdHlcbmV4cG9ydCBjb25zdCBQQU5FTFMgPSBTSURFQkFSX1BBTkVMUztcblxuLy8gTUFQIFNUWUxFU1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9CTERHX0NPTE9SID0gJyNEMUNFQzcnO1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9CQUNLR1JPVU5EX0NPTE9SID0gJyMwMDAwMDAnO1xuXG4vLyBhc3Npc3RzIGluIGlkZW50aWZ5aW5nIGJhc2VtYXAgYmFja2dyb3VuZCBsYXllcnMgd2hlbiBhdXRvLWRldGVybWluaW5nIHRoZSBiYWNrZ3JvdW5kQ29sb3JcbmV4cG9ydCBjb25zdCBCQVNFX01BUF9CQUNLR1JPVU5EX0xBWUVSX0lEUyA9IFsnYmFja2dyb3VuZCcsICdiZycsICdsYW5kJywgJ3dhdGVyJ107XG5cbmV4cG9ydCBjb25zdCBCQUNLR1JPVU5EX0xBWUVSX0dST1VQX1NMVUcgPSAnQmFja2dyb3VuZCc7XG5cbmV4cG9ydCBjb25zdCBUSFJFRV9EX0JVSUxESU5HX0xBWUVSX0dST1VQX1NMVUcgPSAnM2QgYnVpbGRpbmcnO1xuXG5leHBvcnQgdHlwZSBERUZBVUxUX0xBWUVSX0dST1VQID0ge1xuICBzbHVnOiBzdHJpbmc7XG4gIGZpbHRlcjogKHZhbHVlKSA9PiBib29sZWFuO1xuICBkZWZhdWx0VmlzaWJpbGl0eTogYm9vbGVhbjtcbiAgaXNWaXNpYmlsaXR5VG9nZ2xlQXZhaWxhYmxlPzogYm9vbGVhbjtcbiAgaXNNb3ZlVG9Ub3BBdmFpbGFibGU/OiBib29sZWFuO1xuICBpc0NvbG9yUGlja2VyQXZhaWxhYmxlPzogYm9vbGVhbjtcbn07XG5cbmV4cG9ydCBjb25zdCBCQUNLR1JPVU5EX0xBWUVSX0dST1VQOiBERUZBVUxUX0xBWUVSX0dST1VQID0ge1xuICBzbHVnOiBCQUNLR1JPVU5EX0xBWUVSX0dST1VQX1NMVUcsXG4gIGZpbHRlcjogKCkgPT4gZmFsc2UsXG4gIGRlZmF1bHRWaXNpYmlsaXR5OiBmYWxzZSxcbiAgaXNWaXNpYmlsaXR5VG9nZ2xlQXZhaWxhYmxlOiBmYWxzZSxcbiAgaXNNb3ZlVG9Ub3BBdmFpbGFibGU6IGZhbHNlLFxuICBpc0NvbG9yUGlja2VyQXZhaWxhYmxlOiB0cnVlXG59O1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9MQVlFUl9HUk9VUFM6IERFRkFVTFRfTEFZRVJfR1JPVVBbXSA9IFtcbiAge1xuICAgIHNsdWc6ICdsYWJlbCcsXG4gICAgZmlsdGVyOiAoe2lkLCB0eXBlfSkgPT4gaWQubWF0Y2goLyg/PShsYWJlbHxwbGFjZS18cG9pLSkpLykgfHwgdHlwZT8ubWF0Y2goLyg/PShzeW1ib2wpKS8pLFxuICAgIGRlZmF1bHRWaXNpYmlsaXR5OiB0cnVlLFxuICAgIGlzVmlzaWJpbGl0eVRvZ2dsZUF2YWlsYWJsZTogdHJ1ZSxcbiAgICBpc01vdmVUb1RvcEF2YWlsYWJsZTogdHJ1ZSxcbiAgICBpc0NvbG9yUGlja2VyQXZhaWxhYmxlOiBmYWxzZVxuICB9LFxuICB7XG4gICAgc2x1ZzogJ3JvYWQnLFxuICAgIGZpbHRlcjogKHtpZH0pID0+IGlkLm1hdGNoKC8oPz0ocm9hZHxyYWlsd2F5fHR1bm5lbHxzdHJlZXR8YnJpZGdlKSkoPyEuKmxhYmVsKS8pLFxuICAgIGRlZmF1bHRWaXNpYmlsaXR5OiB0cnVlLFxuICAgIGlzVmlzaWJpbGl0eVRvZ2dsZUF2YWlsYWJsZTogdHJ1ZSxcbiAgICBpc01vdmVUb1RvcEF2YWlsYWJsZTogdHJ1ZSxcbiAgICBpc0NvbG9yUGlja2VyQXZhaWxhYmxlOiBmYWxzZVxuICB9LFxuICB7XG4gICAgc2x1ZzogJ2JvcmRlcicsXG4gICAgZmlsdGVyOiAoe2lkfSkgPT4gaWQubWF0Y2goL2JvcmRlcnxib3VuZGFyaWVzfGJvdW5kYXJ5LyksXG4gICAgZGVmYXVsdFZpc2liaWxpdHk6IGZhbHNlLFxuICAgIGlzVmlzaWJpbGl0eVRvZ2dsZUF2YWlsYWJsZTogdHJ1ZSxcbiAgICBpc01vdmVUb1RvcEF2YWlsYWJsZTogdHJ1ZSxcbiAgICBpc0NvbG9yUGlja2VyQXZhaWxhYmxlOiBmYWxzZVxuICB9LFxuICB7XG4gICAgc2x1ZzogJ2J1aWxkaW5nJyxcbiAgICBmaWx0ZXI6ICh7aWR9KSA9PiBpZC5tYXRjaCgvYnVpbGRpbmcvKSxcbiAgICBkZWZhdWx0VmlzaWJpbGl0eTogdHJ1ZSxcbiAgICBpc1Zpc2liaWxpdHlUb2dnbGVBdmFpbGFibGU6IHRydWUsXG4gICAgaXNNb3ZlVG9Ub3BBdmFpbGFibGU6IHRydWUsXG4gICAgaXNDb2xvclBpY2tlckF2YWlsYWJsZTogZmFsc2VcbiAgfSxcbiAge1xuICAgIHNsdWc6ICd3YXRlcicsXG4gICAgZmlsdGVyOiAoe2lkfSkgPT4gaWQubWF0Y2goLyg/PSh3YXRlcnxzdHJlYW18ZmVycnkpKS8pLFxuICAgIGRlZmF1bHRWaXNpYmlsaXR5OiB0cnVlLFxuICAgIGlzVmlzaWJpbGl0eVRvZ2dsZUF2YWlsYWJsZTogdHJ1ZSxcbiAgICBpc01vdmVUb1RvcEF2YWlsYWJsZTogdHJ1ZSxcbiAgICBpc0NvbG9yUGlja2VyQXZhaWxhYmxlOiBmYWxzZVxuICB9LFxuICB7XG4gICAgc2x1ZzogJ2xhbmQnLFxuICAgIGZpbHRlcjogKHtpZH0pID0+IGlkLm1hdGNoKC8oPz0ocGFya3N8bGFuZGNvdmVyfGluZHVzdHJpYWx8c2FuZHxoaWxsc2hhZGUpKS8pLFxuICAgIGRlZmF1bHRWaXNpYmlsaXR5OiB0cnVlLFxuICAgIGlzVmlzaWJpbGl0eVRvZ2dsZUF2YWlsYWJsZTogdHJ1ZSxcbiAgICBpc01vdmVUb1RvcEF2YWlsYWJsZTogdHJ1ZSxcbiAgICBpc0NvbG9yUGlja2VyQXZhaWxhYmxlOiBmYWxzZVxuICB9LFxuICB7XG4gICAgc2x1ZzogVEhSRUVfRF9CVUlMRElOR19MQVlFUl9HUk9VUF9TTFVHLFxuICAgIGZpbHRlcjogKCkgPT4gZmFsc2UsXG4gICAgZGVmYXVsdFZpc2liaWxpdHk6IGZhbHNlLFxuICAgIGlzVmlzaWJpbGl0eVRvZ2dsZUF2YWlsYWJsZTogdHJ1ZSxcbiAgICBpc01vdmVUb1RvcEF2YWlsYWJsZTogdHJ1ZSxcbiAgICBpc0NvbG9yUGlja2VyQXZhaWxhYmxlOiB0cnVlXG4gIH1cbl07XG5cbmV4cG9ydCBjb25zdCBCQVNFX01BUF9DT0xPUl9NT0RFUyA9IGtleU1pcnJvcih7XG4gIE5PTkU6IG51bGwsXG4gIERBUks6IG51bGwsXG4gIExJR0hUOiBudWxsXG59KTtcblxuZXhwb3J0IGNvbnN0IE5PX01BUF9JRCA9ICdub19tYXAnO1xuXG4vLyBGYWxsYmFjayBzdHlsZSB0byB1c2Ugd2hlbiBzdHlsZXMgYXJlIGJlaW5nIGZldGNoZWQsIG9yIHdoZW5cbi8vIGEgc3R5bGUgZmFpbHMgdG8gZmV0Y2hcbmV4cG9ydCBjb25zdCBFTVBUWV9NQVBCT1hfU1RZTEUgPSB7XG4gIHZlcnNpb246IDgsXG4gIHNvdXJjZXM6IHt9LFxuICBsYXllcnM6IFtdXG59O1xuXG5leHBvcnQgY29uc3QgTUFQX0xJQl9PUFRJT05TID0ge1xuICBNQVBCT1g6ICdtYXBib3gnIGFzIGNvbnN0LFxuICBNQVBMSUJSRTogJ21hcGxpYnJlJyBhcyBjb25zdFxufTtcblxuLyoqIE1hcGJveCBHTCBKUyBkb2VzIG5vdCBzdXBwb3J0IHBpdGNoIGFib3ZlIDYwIGRlZ3JlZXMgKi9cbmV4cG9ydCBjb25zdCBNQVBCT1hfTUFYX1BJVENIID0gNjA7XG5cbmV4cG9ydCB0eXBlIEJhc2VNYXBMaWJyYXJ5VHlwZSA9ICdtYXBib3gnIHwgJ21hcGxpYnJlJztcblxuZXhwb3J0IGNvbnN0IE5PX0JBU0VNQVBfSUNPTiA9IGAke0JBU0VNQVBfSUNPTl9QUkVGSVh9L05PX0JBU0VNQVAucG5nYDtcblxuZXhwb3J0IGNvbnN0IERFRkFVTFRfQkFTRV9NQVBfU1RZTEUgPSAnZGFyay1tYXR0ZXInO1xuXG50eXBlIERlZmF1bHRCYXNlTWFwU3R5bGUgPSBNZXJnZTxcbiAgQmFzZU1hcFN0eWxlLFxuICB7XG4gICAgY29sb3JNb2RlOiBCYXNlTWFwQ29sb3JNb2RlcztcbiAgfVxuPjtcblxuZXhwb3J0IGNvbnN0IERFRkFVTFRfTk9fQkFTRU1BUF9TVFlMRTogRGVmYXVsdEJhc2VNYXBTdHlsZSA9IHtcbiAgaWQ6IE5PX01BUF9JRCxcbiAgbGFiZWw6ICdObyBCYXNlbWFwJyxcbiAgdXJsOiAnJyxcbiAgaWNvbjogTk9fQkFTRU1BUF9JQ09OLFxuICBsYXllckdyb3VwczogW0JBQ0tHUk9VTkRfTEFZRVJfR1JPVVBdLFxuICBjb2xvck1vZGU6IEJBU0VfTUFQX0NPTE9SX01PREVTLk5PTkUsXG4gIHN0eWxlOiBFTVBUWV9NQVBCT1hfU1RZTEVcbn07XG5cbmV4cG9ydCBjb25zdCBERUZBVUxUX01BUEJPWF9TVFlMRVM6IERlZmF1bHRCYXNlTWFwU3R5bGVbXSA9IFtcbiAge1xuICAgIGlkOiAnZGFyaycsXG4gICAgbGFiZWw6ICdEYXJrJyxcbiAgICB1cmw6ICdtYXBib3g6Ly9zdHlsZXMvdWJlcmRhdGEvY2pvcWJiZjZsOWszMDJzbDk2dHl2a2EwOScsXG4gICAgaWNvbjogYCR7QkFTRU1BUF9JQ09OX1BSRUZJWH0vVUJFUl9EQVJLX1YyLnBuZ2AsXG4gICAgbGF5ZXJHcm91cHM6IERFRkFVTFRfTEFZRVJfR1JPVVBTLFxuICAgIGNvbG9yTW9kZTogQkFTRV9NQVBfQ09MT1JfTU9ERVMuREFSSyxcbiAgICBjb21wbGltZW50YXJ5U3R5bGVJZDogJ2xpZ2h0J1xuICB9LFxuICB7XG4gICAgaWQ6ICdsaWdodCcsXG4gICAgbGFiZWw6ICdMaWdodCcsXG4gICAgdXJsOiAnbWFwYm94Oi8vc3R5bGVzL3ViZXJkYXRhL2Nqb3FiOWozMzlrMWYyc2w5dDVpYzVibjQnLFxuICAgIGljb246IGAke0JBU0VNQVBfSUNPTl9QUkVGSVh9L1VCRVJfTElHSFRfVjIucG5nYCxcbiAgICBsYXllckdyb3VwczogREVGQVVMVF9MQVlFUl9HUk9VUFMsXG4gICAgY29sb3JNb2RlOiBCQVNFX01BUF9DT0xPUl9NT0RFUy5MSUdIVCxcbiAgICBjb21wbGltZW50YXJ5U3R5bGVJZDogJ2RhcmsnXG4gIH0sXG4gIHtcbiAgICBpZDogJ211dGVkJyxcbiAgICBsYWJlbDogJ011dGVkIExpZ2h0JyxcbiAgICB1cmw6ICdtYXBib3g6Ly9zdHlsZXMvdWJlcmRhdGEvY2pmeWwwM2twMXR1bDJzbWY1djJ0YmRkNCcsXG4gICAgaWNvbjogYCR7QkFTRU1BUF9JQ09OX1BSRUZJWH0vVUJFUl9NVVRFRF9MSUdIVC5wbmdgLFxuICAgIGxheWVyR3JvdXBzOiBERUZBVUxUX0xBWUVSX0dST1VQUyxcbiAgICBjb2xvck1vZGU6IEJBU0VfTUFQX0NPTE9SX01PREVTLkxJR0hULFxuICAgIGNvbXBsaW1lbnRhcnlTdHlsZUlkOiAnbXV0ZWRfbmlnaHQnXG4gIH0sXG4gIHtcbiAgICBpZDogJ211dGVkX25pZ2h0JyxcbiAgICBsYWJlbDogJ011dGVkIE5pZ2h0JyxcbiAgICB1cmw6ICdtYXBib3g6Ly9zdHlsZXMvdWJlcmRhdGEvY2pmeGhsaWttYWoxYjJzb3l6ZXZueXdncycsXG4gICAgaWNvbjogYCR7QkFTRU1BUF9JQ09OX1BSRUZJWH0vVUJFUl9NVVRFRF9OSUdIVC5wbmdgLFxuICAgIGxheWVyR3JvdXBzOiBERUZBVUxUX0xBWUVSX0dST1VQUyxcbiAgICBjb2xvck1vZGU6IEJBU0VfTUFQX0NPTE9SX01PREVTLkRBUkssXG4gICAgY29tcGxpbWVudGFyeVN0eWxlSWQ6ICdtdXRlZCdcbiAgfVxuXTtcblxuZXhwb3J0IGNvbnN0IERFRkFVTFRfTUFQQk9YX1NBVEVMSVRFX1NUWUxFUzogRGVmYXVsdEJhc2VNYXBTdHlsZVtdID0gW1xuICB7XG4gICAgaWQ6ICdzYXRlbGxpdGUnLFxuICAgIGxhYmVsOiAnU2F0ZWxsaXRlIHdpdGggc3RyZWV0cycsXG4gICAgdXJsOiBgbWFwYm94Oi8vc3R5bGVzL21hcGJveC9zYXRlbGxpdGUtc3RyZWV0cy12MTFgLFxuICAgIGljb246IGAke0JBU0VNQVBfSUNPTl9QUkVGSVh9L1VCRVJfU0FURUxMSVRFLnBuZ2AsXG4gICAgbGF5ZXJHcm91cHM6IERFRkFVTFRfTEFZRVJfR1JPVVBTLFxuICAgIGNvbG9yTW9kZTogQkFTRV9NQVBfQ09MT1JfTU9ERVMuTk9ORVxuICB9XG5dO1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9NQVBMSUJSRV9TVFlMRVM6IERlZmF1bHRCYXNlTWFwU3R5bGVbXSA9IFtcbiAge1xuICAgIGlkOiAnZGFyay1tYXR0ZXInLFxuICAgIGxhYmVsOiAnRGFya01hdHRlcicsXG4gICAgdXJsOiAnaHR0cHM6Ly9iYXNlbWFwcy5jYXJ0b2Nkbi5jb20vZ2wvZGFyay1tYXR0ZXItZ2wtc3R5bGUvc3R5bGUuanNvbicsXG4gICAgaWNvbjogYCR7QkFTRU1BUF9JQ09OX1BSRUZJWH0vREFSS01BVFRFUi5wbmdgLFxuICAgIGxheWVyR3JvdXBzOiBERUZBVUxUX0xBWUVSX0dST1VQUyxcbiAgICBjb2xvck1vZGU6IEJBU0VfTUFQX0NPTE9SX01PREVTLkRBUkssXG4gICAgY29tcGxpbWVudGFyeVN0eWxlSWQ6ICdwb3NpdHJvbidcbiAgfSxcbiAge1xuICAgIGlkOiAncG9zaXRyb24nLFxuICAgIGxhYmVsOiAnUG9zaXRyb24nLFxuICAgIHVybDogJ2h0dHBzOi8vYmFzZW1hcHMuY2FydG9jZG4uY29tL2dsL3Bvc2l0cm9uLWdsLXN0eWxlL3N0eWxlLmpzb24nLFxuICAgIGljb246IGAke0JBU0VNQVBfSUNPTl9QUkVGSVh9L1BPU0lUUk9OLnBuZ2AsXG4gICAgbGF5ZXJHcm91cHM6IERFRkFVTFRfTEFZRVJfR1JPVVBTLFxuICAgIGNvbG9yTW9kZTogQkFTRV9NQVBfQ09MT1JfTU9ERVMuTElHSFQsXG4gICAgY29tcGxpbWVudGFyeVN0eWxlSWQ6ICdkYXJrLW1hdHRlcidcbiAgfSxcbiAge1xuICAgIGlkOiAndm95YWdlcicsXG4gICAgbGFiZWw6ICdWb3lhZ2VyJyxcbiAgICB1cmw6ICdodHRwczovL2Jhc2VtYXBzLmNhcnRvY2RuLmNvbS9nbC92b3lhZ2VyLWdsLXN0eWxlL3N0eWxlLmpzb24nLFxuICAgIGljb246IGAke0JBU0VNQVBfSUNPTl9QUkVGSVh9L1ZPWUFHRVIucG5nYCxcbiAgICBsYXllckdyb3VwczogREVGQVVMVF9MQVlFUl9HUk9VUFMsXG4gICAgY29sb3JNb2RlOiBCQVNFX01BUF9DT0xPUl9NT0RFUy5MSUdIVCxcbiAgICBjb21wbGltZW50YXJ5U3R5bGVJZDogJ2RhcmstbWF0dGVyJ1xuICB9XG5dO1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9NQVBfU1RZTEVTID0gW1xuICBERUZBVUxUX05PX0JBU0VNQVBfU1RZTEUsXG4gIC4uLkRFRkFVTFRfTUFQTElCUkVfU1RZTEVTLFxuICAuLi5ERUZBVUxUX01BUEJPWF9TQVRFTElURV9TVFlMRVMsXG4gIC4uLkRFRkFVTFRfTUFQQk9YX1NUWUxFU1xuXTtcblxuZXhwb3J0IGNvbnN0IEdFT0pTT05fRklFTERTID0ge1xuICBnZW9qc29uOiBbJ19nZW9qc29uJywgJ2FsbF9wb2ludHMnLCAnZ2VvanNvbiddXG59O1xuXG5leHBvcnQgY29uc3QgSUNPTl9GSUVMRFMgPSB7XG4gIGljb246IFsnaWNvbiddXG59O1xuXG5leHBvcnQgY29uc3QgVFJJUF9QT0lOVF9GSUVMRFM6IFtzdHJpbmcsIHN0cmluZ11bXSA9IFtcbiAgWydsYXQnLCAnbG5nJ10sXG4gIFsnbGF0JywgJ2xvbiddLFxuICBbJ2xhdCcsICdsb25nJ10sXG4gIFsnbGF0aXR1ZGUnLCAnbG9uZ2l0dWRlJ11cbl07XG5cbmV4cG9ydCBjb25zdCBBTFRJVFVERV9GSUVMRFMgPSBbJ2FsdCcsICdhbHRpdHVkZSddO1xuZXhwb3J0IGNvbnN0IFRSSVBfQVJDX0ZJRUxEUyA9IHtcbiAgbGF0MDogJ2JlZ2ludHJpcCcsXG4gIGxuZzA6ICdiZWdpbnRyaXAnLFxuICBsYXQxOiAnZHJvcG9mZicsXG4gIGxuZzE6ICdkcm9wb2ZmJ1xufTtcblxuZXhwb3J0IGNvbnN0IEZJTFRFUl9UWVBFUyA9IGtleU1pcnJvcih7XG4gIHJhbmdlOiBudWxsLFxuICBzZWxlY3Q6IG51bGwsXG4gIGlucHV0OiBudWxsLFxuICB0aW1lUmFuZ2U6IG51bGwsXG4gIG11bHRpU2VsZWN0OiBudWxsLFxuICBwb2x5Z29uOiBudWxsXG59KTtcblxuZXhwb3J0IGNvbnN0IEZJTFRFUl9WSUVXX1RZUEVTID0ga2V5TWlycm9yKHtcbiAgc2lkZTogbnVsbCxcbiAgZW5sYXJnZWQ6IG51bGwsXG4gIG1pbmlmaWVkOiBudWxsXG59KTtcblxuZXhwb3J0IGNvbnN0IERFRkFVTFRfRklMVEVSX1ZJRVdfVFlQRSA9IEZJTFRFUl9WSUVXX1RZUEVTLnNpZGU7XG5cbmV4cG9ydCB0eXBlIFNDQUxFX1RZUEVTX0RFRiA9IHtcbiAgb3JkaW5hbDogJ29yZGluYWwnO1xuICBxdWFudGlsZTogJ3F1YW50aWxlJztcbiAgcXVhbnRpemU6ICdxdWFudGl6ZSc7XG4gIGxpbmVhcjogJ2xpbmVhcic7XG4gIHNxcnQ6ICdzcXJ0JztcbiAgbG9nOiAnbG9nJztcbiAgcG9pbnQ6ICdwb2ludCc7XG4gIHRocmVzaG9sZDogJ3RocmVzaG9sZCc7XG4gIGN1c3RvbTogJ2N1c3RvbSc7XG4gIGN1c3RvbU9yZGluYWw6ICdjdXN0b21PcmRpbmFsJztcbn07XG5cbmV4cG9ydCBjb25zdCBTQ0FMRV9UWVBFUzogU0NBTEVfVFlQRVNfREVGID0ga2V5TWlycm9yKHtcbiAgb3JkaW5hbDogbnVsbCxcbiAgcXVhbnRpbGU6IG51bGwsXG4gIHF1YW50aXplOiBudWxsLFxuICBsaW5lYXI6IG51bGwsXG4gIHNxcnQ6IG51bGwsXG4gIGxvZzogbnVsbCxcbiAgdGhyZXNob2xkOiBudWxsLFxuICBjdXN0b206IG51bGwsXG4gIGN1c3RvbU9yZGluYWw6IG51bGwsXG4gIC8vIG9yZGluYWwgZG9tYWluIHRvIGxpbmVhciByYW5nZVxuICBwb2ludDogbnVsbFxufSk7XG5leHBvcnQgY29uc3QgU0NBTEVfVFlQRV9OQU1FUzoge1trZXkgaW4ga2V5b2YgU0NBTEVfVFlQRVNfREVGXTogc3RyaW5nfSA9IHtcbiAgb3JkaW5hbDogJ09yZGluYWwnLFxuICBxdWFudGlsZTogJ1F1YW50aWxlJyxcbiAgcXVhbnRpemU6ICdRdWFudGl6ZScsXG4gIGxpbmVhcjogJ0xpbmVhcicsXG4gIHNxcnQ6ICdTcXJ0JyxcbiAgbG9nOiAnTG9nJyxcbiAgdGhyZXNob2xkOiAnVGhyZXNob2xkJyxcbiAgY3VzdG9tOiAnQ3VzdG9tIEJyZWFrcycsXG4gIGN1c3RvbU9yZGluYWw6ICdDdXN0b20gT3JkaW5hbCcsXG4gIHBvaW50OiAnUG9pbnQnXG59O1xuXG5leHBvcnQgdHlwZSBTQ0FMRV9GVU5DX1RZUEUgPSB7XG4gIFtrZXkgaW4ga2V5b2YgU0NBTEVfVFlQRVNfREVGXTogKCkgPT4gbnVtYmVyO1xufTtcblxuZXhwb3J0IGNvbnN0IFNDQUxFX0ZVTkMgPSB7XG4gIFtTQ0FMRV9UWVBFUy5saW5lYXJdOiBzY2FsZUxpbmVhcixcbiAgW1NDQUxFX1RZUEVTLnF1YW50aXplXTogc2NhbGVRdWFudGl6ZSxcbiAgW1NDQUxFX1RZUEVTLnF1YW50aWxlXTogc2NhbGVRdWFudGlsZSxcbiAgW1NDQUxFX1RZUEVTLm9yZGluYWxdOiBzY2FsZU9yZGluYWwsXG4gIFtTQ0FMRV9UWVBFUy5zcXJ0XTogc2NhbGVTcXJ0LFxuICBbU0NBTEVfVFlQRVMubG9nXTogc2NhbGVMb2csXG4gIFtTQ0FMRV9UWVBFUy5wb2ludF06IHNjYWxlUG9pbnQsXG4gIFtTQ0FMRV9UWVBFUy50aHJlc2hvbGRdOiBzY2FsZVRocmVzaG9sZCxcbiAgW1NDQUxFX1RZUEVTLmN1c3RvbV06IHNjYWxlVGhyZXNob2xkLFxuICBbU0NBTEVfVFlQRVMuY3VzdG9tT3JkaW5hbF06IHNjYWxlT3JkaW5hbFxufTtcblxuZXhwb3J0IGNvbnN0IEFMTF9GSUVMRF9UWVBFUyA9IGtleU1pcnJvcih7XG4gIGJvb2xlYW46IG51bGwsXG4gIGRhdGU6IG51bGwsXG4gIGdlb2pzb246IG51bGwsXG4gIGludGVnZXI6IG51bGwsXG4gIHJlYWw6IG51bGwsXG4gIHN0cmluZzogbnVsbCxcbiAgdGltZXN0YW1wOiBudWxsLFxuICBwb2ludDogbnVsbCxcbiAgYXJyYXk6IG51bGwsXG4gIG9iamVjdDogbnVsbCxcbiAgZ2VvYXJyb3c6IG51bGwsXG4gIGgzOiBudWxsXG59KTtcblxuLy8gRGF0YSBUYWJsZVxuZXhwb3J0IGNvbnN0IFNPUlRfT1JERVIgPSBrZXlNaXJyb3Ioe1xuICBBU0NFTkRJTkc6IG51bGwsXG4gIERFU0NFTkRJTkc6IG51bGwsXG4gIFVOU09SVDogbnVsbFxufSk7XG5cbmV4cG9ydCBjb25zdCBUQUJMRV9PUFRJT04gPSBrZXlNaXJyb3Ioe1xuICBTT1JUX0FTQzogbnVsbCxcbiAgU09SVF9ERVM6IG51bGwsXG4gIFVOU09SVDogbnVsbCxcbiAgUElOOiBudWxsLFxuICBVTlBJTjogbnVsbCxcbiAgQ09QWTogbnVsbCxcbiAgRk9STUFUX0NPTFVNTjogbnVsbFxufSk7XG5cbmV4cG9ydCB0eXBlIFRhYmxlT3B0aW9uID0ge1xuICB2YWx1ZTogJ1NPUlRfQVNDJyB8ICdTT1JUX0RFUycgfCAnVU5TT1JUJyB8ICdQSU4nIHwgJ1VOUElOJyB8ICdDT1BZJyB8ICdGT1JNQVRfQ09MVU1OJztcbiAgZGlzcGxheTogc3RyaW5nO1xuICBpY29uOiBzdHJpbmc7XG4gIGNvbmRpdGlvbj86IChwcm9wczogYW55KSA9PiBib29sZWFuO1xufTtcbmV4cG9ydCBjb25zdCBUQUJMRV9PUFRJT05fTElTVDogVGFibGVPcHRpb25bXSA9IFtcbiAge1xuICAgIHZhbHVlOiBUQUJMRV9PUFRJT04uU09SVF9BU0MsXG4gICAgZGlzcGxheTogJ1NvcnQgQXNjZW5kaW5nJyxcbiAgICBpY29uOiAnQXJyb3dVcCcsXG4gICAgY29uZGl0aW9uOiBwcm9wcyA9PiBwcm9wcy5zb3J0VGFibGVDb2x1bW4gJiYgcHJvcHMuc29ydE1vZGUgIT09IFNPUlRfT1JERVIuQVNDRU5ESU5HXG4gIH0sXG4gIHtcbiAgICB2YWx1ZTogVEFCTEVfT1BUSU9OLlNPUlRfREVTLFxuICAgIGRpc3BsYXk6ICdTb3J0IERlc2NlbmRpbmcnLFxuICAgIGljb246ICdBcnJvd0Rvd24nLFxuICAgIGNvbmRpdGlvbjogcHJvcHMgPT4gcHJvcHMuc29ydFRhYmxlQ29sdW1uICYmIHByb3BzLnNvcnRNb2RlICE9PSBTT1JUX09SREVSLkRFU0NFTkRJTkdcbiAgfSxcbiAge1xuICAgIHZhbHVlOiBUQUJMRV9PUFRJT04uVU5TT1JULFxuICAgIGRpc3BsYXk6ICdVbnNvcnQgQ29sdW1uJyxcbiAgICBpY29uOiAnQ2FuY2VsJyxcbiAgICBjb25kaXRpb246IHByb3BzID0+IHByb3BzLmlzU29ydGVkXG4gIH0sXG4gIHtcbiAgICB2YWx1ZTogVEFCTEVfT1BUSU9OLlBJTixcbiAgICBkaXNwbGF5OiAnUGluIENvbHVtbicsXG4gICAgaWNvbjogJ1BpbicsXG4gICAgY29uZGl0aW9uOiBwcm9wcyA9PiAhcHJvcHMuaXNQaW5uZWRcbiAgfSxcbiAge1xuICAgIHZhbHVlOiBUQUJMRV9PUFRJT04uVU5QSU4sXG4gICAgZGlzcGxheTogJ1VucGluIENvbHVtbicsXG4gICAgaWNvbjogJ0NhbmNlbCcsXG4gICAgY29uZGl0aW9uOiBwcm9wcyA9PiBwcm9wcy5pc1Bpbm5lZFxuICB9LFxuICB7dmFsdWU6IFRBQkxFX09QVElPTi5DT1BZLCBkaXNwbGF5OiAnQ29weSBDb2x1bW4nLCBpY29uOiAnQ2xpcGJvYXJkJ30sXG4gIHtcbiAgICB2YWx1ZTogVEFCTEVfT1BUSU9OLkZPUk1BVF9DT0xVTU4sXG4gICAgZGlzcGxheTogJ0Zvcm1hdCBDb2x1bW4nLFxuICAgIGljb246ICdIYXNoJyxcbiAgICBjb25kaXRpb246IHByb3BzID0+IHByb3BzLnNldERpc3BsYXlGb3JtYXRcbiAgfVxuXTtcblxuY29uc3QgWUVMTE9XID0gJzI0OCwgMTk0LCAyOCc7XG5jb25zdCBQSU5LID0gJzI0MiwgMTUyLCAxNjMnO1xuY29uc3QgUFVSUExFID0gJzE2MCwgMTA2LCAyMDYnO1xuY29uc3QgQkxVRSA9ICcxNDAsIDIxMCwgMjA1JztcbmNvbnN0IEJMVUUyID0gJzEwNiwgMTYwLCAyMDYnO1xuY29uc3QgQkxVRTMgPSAnMCwgMTcyLCAyMzcnO1xuY29uc3QgR1JFRU4gPSAnMTA2LCAxNjAsIDU2JztcbmNvbnN0IEdSRUVOMiA9ICc3NCwgMTY1LCAxNTAnO1xuY29uc3QgUkVEID0gJzIzNywgODgsIDEwNic7XG5jb25zdCBPUkFOR0UgPSAnMjMxLCAxMTAsIDU4JztcblxuZXhwb3J0IGNvbnN0IEZJRUxEX1RZUEVfRElTUExBWSA9IHtcbiAgW0FMTF9GSUVMRF9UWVBFUy5ib29sZWFuXToge1xuICAgIGxhYmVsOiAnYm9vbCcsXG4gICAgY29sb3I6IFBJTktcbiAgfSxcbiAgW0FMTF9GSUVMRF9UWVBFUy5kYXRlXToge1xuICAgIGxhYmVsOiAnZGF0ZScsXG4gICAgY29sb3I6IFBVUlBMRVxuICB9LFxuICBbQUxMX0ZJRUxEX1RZUEVTLmdlb2pzb25dOiB7XG4gICAgbGFiZWw6ICdnZW8nLFxuICAgIGNvbG9yOiBCTFVFMlxuICB9LFxuICBbQUxMX0ZJRUxEX1RZUEVTLmdlb2Fycm93XToge1xuICAgIGxhYmVsOiAnZ2VvJyxcbiAgICBjb2xvcjogQkxVRTJcbiAgfSxcbiAgW0FMTF9GSUVMRF9UWVBFUy5pbnRlZ2VyXToge1xuICAgIGxhYmVsOiAnaW50JyxcbiAgICBjb2xvcjogWUVMTE9XXG4gIH0sXG4gIFtBTExfRklFTERfVFlQRVMucmVhbF06IHtcbiAgICBsYWJlbDogJ2Zsb2F0JyxcbiAgICBjb2xvcjogWUVMTE9XXG4gIH0sXG4gIFtBTExfRklFTERfVFlQRVMuc3RyaW5nXToge1xuICAgIGxhYmVsOiAnc3RyaW5nJyxcbiAgICBjb2xvcjogQkxVRVxuICB9LFxuICBbQUxMX0ZJRUxEX1RZUEVTLnRpbWVzdGFtcF06IHtcbiAgICBsYWJlbDogJ3RpbWUnLFxuICAgIGNvbG9yOiBHUkVFTlxuICB9LFxuICAvLyBmaWVsZCBwYWlyc1xuICBbQUxMX0ZJRUxEX1RZUEVTLnBvaW50XToge1xuICAgIGxhYmVsOiAncG9pbnQnLFxuICAgIGNvbG9yOiBCTFVFM1xuICB9LFxuICBbQUxMX0ZJRUxEX1RZUEVTLmFycmF5XToge1xuICAgIGxhYmVsOiAnYXJyYXknLFxuICAgIGNvbG9yOiBPUkFOR0VcbiAgfSxcbiAgW0FMTF9GSUVMRF9UWVBFUy5vYmplY3RdOiB7XG4gICAgbGFiZWw6ICdvYmplY3QnLFxuICAgIGNvbG9yOiBHUkVFTjJcbiAgfSxcbiAgW0FMTF9GSUVMRF9UWVBFUy5oM106IHtcbiAgICBsYWJlbDogJ2gzJyxcbiAgICBjb2xvcjogQkxVRVxuICB9XG59O1xuXG5leHBvcnQgY29uc3QgRklFTERfQ09MT1JTID0ge1xuICBkZWZhdWx0OiBSRURcbn07XG5leHBvcnQgY29uc3QgSElHSExJR0hfQ09MT1JfM0Q6IFJHQkFDb2xvciA9IFsyNTUsIDI1NSwgMjU1LCA2MF07XG5leHBvcnQgY29uc3QgQ0hBTk5FTF9TQ0FMRVMgPSBrZXlNaXJyb3Ioe1xuICBjb2xvcjogbnVsbCxcbiAgcmFkaXVzOiBudWxsLFxuICBzaXplOiBudWxsLFxuICBjb2xvckFnZ3I6IG51bGwsXG4gIHNpemVBZ2dyOiBudWxsLFxuICBhbmdsZTogbnVsbFxufSk7XG5cbmV4cG9ydCBjb25zdCBBR0dSRUdBVElPTl9UWVBFUzoge1xuICAvLyBkZWZhdWx0XG4gIGNvdW50OiAnY291bnQnO1xuICAvLyBsaW5lYXJcbiAgYXZlcmFnZTogJ2F2ZXJhZ2UnO1xuICBtYXhpbXVtOiAnbWF4aW11bSc7XG4gIG1pbmltdW06ICdtaW5pbXVtJztcbiAgbWVkaWFuOiAnbWVkaWFuJztcbiAgc3RkZXY6ICdzdGRldic7XG4gIHN1bTogJ3N1bSc7XG4gIHZhcmlhbmNlOiAndmFyaWFuY2UnO1xuICAvLyBvcmRpbmFsXG4gIG1vZGU6ICdtb2RlJztcbiAgY291bnRVbmlxdWU6ICdjb3VudFVuaXF1ZSc7XG59ID0ge1xuICAvLyBkZWZhdWx0XG4gIGNvdW50OiAnY291bnQnLFxuICAvLyBsaW5lYXJcbiAgYXZlcmFnZTogJ2F2ZXJhZ2UnLFxuICBtYXhpbXVtOiAnbWF4aW11bScsXG4gIG1pbmltdW06ICdtaW5pbXVtJyxcbiAgbWVkaWFuOiAnbWVkaWFuJyxcbiAgc3RkZXY6ICdzdGRldicsXG4gIHN1bTogJ3N1bScsXG4gIHZhcmlhbmNlOiAndmFyaWFuY2UnLFxuICAvLyBvcmRpbmFsXG4gIG1vZGU6ICdtb2RlJyxcbiAgY291bnRVbmlxdWU6ICdjb3VudFVuaXF1ZSdcbn07XG5cbmV4cG9ydCBjb25zdCBBR0dSRUdBVElPTl9UWVBFX09QVElPTlM6IHtpZDogc3RyaW5nOyBsYWJlbDogc3RyaW5nfVtdID0gT2JqZWN0LmVudHJpZXMoXG4gIEFHR1JFR0FUSU9OX1RZUEVTXG4pLm1hcCgoW2tleSwgdmFsdWVdKSA9PiAoe1xuICBpZDoga2V5LFxuICBsYWJlbDpcbiAgICBrZXkgPT09ICdzdGRldidcbiAgICAgID8gJ1N0ZCBEZXZpYXRpb24nXG4gICAgICA6IGtleSA9PT0gJ2NvdW50VW5pcXVlJ1xuICAgICAgPyAnQ291bnQgVW5pcXVlJ1xuICAgICAgOiB0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnXG4gICAgICA/IHZhbHVlLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgdmFsdWUuc2xpY2UoMSlcbiAgICAgIDogdmFsdWVcbn0pKTtcblxuZXhwb3J0IGNvbnN0IGxpbmVhckZpZWxkU2NhbGVGdW5jdGlvbnMgPSB7XG4gIFtDSEFOTkVMX1NDQUxFUy5jb2xvcl06IFtTQ0FMRV9UWVBFUy5xdWFudGl6ZSwgU0NBTEVfVFlQRVMucXVhbnRpbGUsIFNDQUxFX1RZUEVTLmN1c3RvbV0sXG4gIFtDSEFOTkVMX1NDQUxFUy5yYWRpdXNdOiBbU0NBTEVfVFlQRVMuc3FydF0sXG4gIFtDSEFOTkVMX1NDQUxFUy5zaXplXTogW1NDQUxFX1RZUEVTLmxpbmVhciwgU0NBTEVfVFlQRVMuc3FydCwgU0NBTEVfVFlQRVMubG9nXSxcbiAgW0NIQU5ORUxfU0NBTEVTLmFuZ2xlXTogW1NDQUxFX1RZUEVTLmxpbmVhcl1cbn07XG5cbmNvbnN0IERFRkFVTFRfQUdHUkVHQVRJT05fQ09MT1JfU0NBTEVTID0gW1xuICBTQ0FMRV9UWVBFUy5xdWFudGl6ZSxcbiAgU0NBTEVfVFlQRVMucXVhbnRpbGUsXG4gIFNDQUxFX1RZUEVTLmN1c3RvbVxuXTtcblxuZXhwb3J0IGNvbnN0IGxpbmVhckZpZWxkQWdnclNjYWxlRnVuY3Rpb25zID0ge1xuICBbQ0hBTk5FTF9TQ0FMRVMuY29sb3JBZ2dyXTogW1xuICAgIEFHR1JFR0FUSU9OX1RZUEVTLmF2ZXJhZ2UsXG4gICAgQUdHUkVHQVRJT05fVFlQRVMubWF4aW11bSxcbiAgICBBR0dSRUdBVElPTl9UWVBFUy5taW5pbXVtLFxuICAgIEFHR1JFR0FUSU9OX1RZUEVTLm1lZGlhbixcbiAgICBBR0dSRUdBVElPTl9UWVBFUy5zdGRldixcbiAgICBBR0dSRUdBVElPTl9UWVBFUy5zdW0sXG4gICAgQUdHUkVHQVRJT05fVFlQRVMudmFyaWFuY2UsXG4gICAgQUdHUkVHQVRJT05fVFlQRVMuY291bnRcbiAgXS5yZWR1Y2UoKHByZXYsIGN1cikgPT4ge1xuICAgIHByZXZbY3VyXSA9IERFRkFVTFRfQUdHUkVHQVRJT05fQ09MT1JfU0NBTEVTO1xuICAgIHJldHVybiBwcmV2O1xuICB9LCB7fSksXG5cbiAgW0NIQU5ORUxfU0NBTEVTLnNpemVBZ2dyXToge1xuICAgIFtBR0dSRUdBVElPTl9UWVBFUy5hdmVyYWdlXTogW1NDQUxFX1RZUEVTLmxpbmVhciwgU0NBTEVfVFlQRVMuc3FydCwgU0NBTEVfVFlQRVMubG9nXSxcbiAgICBbQUdHUkVHQVRJT05fVFlQRVMubWF4aW11bV06IFtTQ0FMRV9UWVBFUy5saW5lYXIsIFNDQUxFX1RZUEVTLnNxcnQsIFNDQUxFX1RZUEVTLmxvZ10sXG4gICAgW0FHR1JFR0FUSU9OX1RZUEVTLm1pbmltdW1dOiBbU0NBTEVfVFlQRVMubGluZWFyLCBTQ0FMRV9UWVBFUy5zcXJ0LCBTQ0FMRV9UWVBFUy5sb2ddLFxuICAgIFtBR0dSRUdBVElPTl9UWVBFUy5tZWRpYW5dOiBbU0NBTEVfVFlQRVMubGluZWFyLCBTQ0FMRV9UWVBFUy5zcXJ0LCBTQ0FMRV9UWVBFUy5sb2ddLFxuICAgIFtBR0dSRUdBVElPTl9UWVBFUy5zdGRldl06IFtTQ0FMRV9UWVBFUy5saW5lYXIsIFNDQUxFX1RZUEVTLnNxcnQsIFNDQUxFX1RZUEVTLmxvZ10sXG4gICAgW0FHR1JFR0FUSU9OX1RZUEVTLnN1bV06IFtTQ0FMRV9UWVBFUy5saW5lYXIsIFNDQUxFX1RZUEVTLnNxcnQsIFNDQUxFX1RZUEVTLmxvZ10sXG4gICAgW0FHR1JFR0FUSU9OX1RZUEVTLnZhcmlhbmNlXTogW1NDQUxFX1RZUEVTLmxpbmVhciwgU0NBTEVfVFlQRVMuc3FydCwgU0NBTEVfVFlQRVMubG9nXVxuICB9XG59O1xuXG5leHBvcnQgY29uc3Qgb3JkaW5hbEZpZWxkU2NhbGVGdW5jdGlvbnMgPSB7XG4gIFtDSEFOTkVMX1NDQUxFUy5jb2xvcl06IFtTQ0FMRV9UWVBFUy5vcmRpbmFsLCBTQ0FMRV9UWVBFUy5jdXN0b21PcmRpbmFsXSxcbiAgW0NIQU5ORUxfU0NBTEVTLnJhZGl1c106IFtTQ0FMRV9UWVBFUy5wb2ludF0sXG4gIFtDSEFOTkVMX1NDQUxFUy5zaXplXTogW1NDQUxFX1RZUEVTLnBvaW50XVxufTtcblxuZXhwb3J0IGNvbnN0IG9yZGluYWxGaWVsZEFnZ3JTY2FsZUZ1bmN0aW9ucyA9IHtcbiAgLy8gW0NIQU5ORUxfU0NBTEVTLmNvbG9yQWdncl06IFtTQ0FMRV9UWVBFUy5vcmRpbmFsLCBTQ0FMRV9UWVBFUy5saW5lYXJdLFxuICBbQ0hBTk5FTF9TQ0FMRVMuY29sb3JBZ2dyXToge1xuICAgIFtBR0dSRUdBVElPTl9UWVBFUy5tb2RlXTogW1NDQUxFX1RZUEVTLm9yZGluYWxdLFxuICAgIFtBR0dSRUdBVElPTl9UWVBFUy5jb3VudFVuaXF1ZV06IFtTQ0FMRV9UWVBFUy5xdWFudGl6ZSwgU0NBTEVfVFlQRVMucXVhbnRpbGVdXG4gIH0sXG5cbiAgLy8gQ3VycmVudGx5IGRvZXNuJ3Qgc3VwcG9ydCB5ZXRcbiAgW0NIQU5ORUxfU0NBTEVTLnNpemVBZ2dyXToge31cbn07XG5cbmV4cG9ydCBjb25zdCBub3RTdXBwb3J0ZWRTY2FsZU9wdHMgPSB7XG4gIFtDSEFOTkVMX1NDQUxFUy5jb2xvcl06IFtdLFxuICBbQ0hBTk5FTF9TQ0FMRVMucmFkaXVzXTogW10sXG4gIFtDSEFOTkVMX1NDQUxFUy5zaXplXTogW11cbn07XG5cbmV4cG9ydCBjb25zdCBub3RTdXBwb3J0QWdnck9wdHMgPSB7XG4gIFtDSEFOTkVMX1NDQUxFUy5jb2xvckFnZ3JdOiB7fSxcbiAgW0NIQU5ORUxfU0NBTEVTLnNpemVBZ2dyXToge31cbn07XG5cbi8qKlxuICogRGVmYXVsdCBhZ2dyZWdhdGlvbiBhcmUgYmFzZWQgb24gb2N1bnRcbiAqL1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfQUdHUkVHQVRJT04gPSB7XG4gIFtDSEFOTkVMX1NDQUxFUy5jb2xvckFnZ3JdOiB7XG4gICAgW0FHR1JFR0FUSU9OX1RZUEVTLmNvdW50XTogREVGQVVMVF9BR0dSRUdBVElPTl9DT0xPUl9TQ0FMRVNcbiAgfSxcbiAgW0NIQU5ORUxfU0NBTEVTLnNpemVBZ2dyXToge1xuICAgIFtBR0dSRUdBVElPTl9UWVBFUy5jb3VudF06IFtTQ0FMRV9UWVBFUy5saW5lYXIsIFNDQUxFX1RZUEVTLnNxcnQsIFNDQUxFX1RZUEVTLmxvZ11cbiAgfVxufTtcblxuLyoqXG4gKiBEZWZpbmUgd2hhdCB0eXBlIG9mIHNjYWxlIG9wZXJhdGlvbiBpcyBhbGxvd2VkIG9uIGVhY2ggdHlwZSBvZiBmaWVsZHNcbiAqL1xuZXhwb3J0IGNvbnN0IEZJRUxEX09QVFMgPSB7XG4gIFtBTExfRklFTERfVFlQRVMuc3RyaW5nXToge1xuICAgIHR5cGU6ICdjYXRlZ29yaWNhbCcsXG4gICAgc2NhbGU6IHtcbiAgICAgIC4uLm9yZGluYWxGaWVsZFNjYWxlRnVuY3Rpb25zLFxuICAgICAgLi4ub3JkaW5hbEZpZWxkQWdnclNjYWxlRnVuY3Rpb25zXG4gICAgfSxcbiAgICBmb3JtYXQ6IHtcbiAgICAgIGxlZ2VuZDogZCA9PiBkLFxuICAgICAgdG9vbHRpcDogW11cbiAgICB9XG4gIH0sXG4gIFtBTExfRklFTERfVFlQRVMucmVhbF06IHtcbiAgICB0eXBlOiAnbnVtZXJpY2FsJyxcbiAgICBzY2FsZToge1xuICAgICAgLi4ubGluZWFyRmllbGRTY2FsZUZ1bmN0aW9ucyxcbiAgICAgIC4uLmxpbmVhckZpZWxkQWdnclNjYWxlRnVuY3Rpb25zXG4gICAgfSxcbiAgICBmb3JtYXQ6IHtcbiAgICAgIGxlZ2VuZDogZCA9PiBkLFxuICAgICAgdG9vbHRpcDogW1xuICAgICAgICBUT09MVElQX0ZPUk1BVF9UWVBFUy5OT05FLFxuICAgICAgICBUT09MVElQX0ZPUk1BVF9UWVBFUy5ERUNJTUFMLFxuICAgICAgICBUT09MVElQX0ZPUk1BVF9UWVBFUy5QRVJDRU5UQUdFXG4gICAgICBdXG4gICAgfVxuICB9LFxuICBbQUxMX0ZJRUxEX1RZUEVTLnRpbWVzdGFtcF06IHtcbiAgICB0eXBlOiAndGltZScsXG4gICAgc2NhbGU6IHtcbiAgICAgIC4uLmxpbmVhckZpZWxkU2NhbGVGdW5jdGlvbnMsXG4gICAgICAuLi5ub3RTdXBwb3J0QWdnck9wdHNcbiAgICB9LFxuICAgIGZvcm1hdDoge1xuICAgICAgbGVnZW5kOiBkID0+IGQsXG4gICAgICB0b29sdGlwOiBbXG4gICAgICAgIFRPT0xUSVBfRk9STUFUX1RZUEVTLk5PTkUsXG4gICAgICAgIFRPT0xUSVBfRk9STUFUX1RZUEVTLkRBVEUsXG4gICAgICAgIFRPT0xUSVBfRk9STUFUX1RZUEVTLkRBVEVfVElNRVxuICAgICAgXVxuICAgIH1cbiAgfSxcbiAgW0FMTF9GSUVMRF9UWVBFUy5pbnRlZ2VyXToge1xuICAgIHR5cGU6ICdudW1lcmljYWwnLFxuICAgIHNjYWxlOiB7XG4gICAgICAuLi57XG4gICAgICAgIC4uLmxpbmVhckZpZWxkU2NhbGVGdW5jdGlvbnMsXG4gICAgICAgIFtDSEFOTkVMX1NDQUxFUy5jb2xvcl06IFtcbiAgICAgICAgICAuLi5saW5lYXJGaWVsZFNjYWxlRnVuY3Rpb25zW0NIQU5ORUxfU0NBTEVTLmNvbG9yXSxcbiAgICAgICAgICBTQ0FMRV9UWVBFUy5jdXN0b21PcmRpbmFsXG4gICAgICAgIF1cbiAgICAgIH0sXG4gICAgICAuLi5saW5lYXJGaWVsZEFnZ3JTY2FsZUZ1bmN0aW9uc1xuICAgIH0sXG4gICAgZm9ybWF0OiB7XG4gICAgICBsZWdlbmQ6IGQgPT4gZCxcbiAgICAgIHRvb2x0aXA6IFtcbiAgICAgICAgVE9PTFRJUF9GT1JNQVRfVFlQRVMuTk9ORSxcbiAgICAgICAgVE9PTFRJUF9GT1JNQVRfVFlQRVMuREVDSU1BTCxcbiAgICAgICAgVE9PTFRJUF9GT1JNQVRfVFlQRVMuUEVSQ0VOVEFHRVxuICAgICAgXVxuICAgIH1cbiAgfSxcbiAgW0FMTF9GSUVMRF9UWVBFUy5ib29sZWFuXToge1xuICAgIHR5cGU6ICdib29sZWFuJyxcbiAgICBzY2FsZToge1xuICAgICAgLi4ub3JkaW5hbEZpZWxkU2NhbGVGdW5jdGlvbnMsXG4gICAgICAuLi5vcmRpbmFsRmllbGRBZ2dyU2NhbGVGdW5jdGlvbnNcbiAgICB9LFxuICAgIGZvcm1hdDoge1xuICAgICAgbGVnZW5kOiBkID0+IGQsXG4gICAgICB0b29sdGlwOiBbVE9PTFRJUF9GT1JNQVRfVFlQRVMuTk9ORSwgVE9PTFRJUF9GT1JNQVRfVFlQRVMuQk9PTEVBTl1cbiAgICB9XG4gIH0sXG4gIFtBTExfRklFTERfVFlQRVMuZGF0ZV06IHtcbiAgICB0eXBlOiAndGltZScsXG4gICAgc2NhbGU6IHtcbiAgICAgIC4uLm9yZGluYWxGaWVsZFNjYWxlRnVuY3Rpb25zLFxuICAgICAgLi4ub3JkaW5hbEZpZWxkQWdnclNjYWxlRnVuY3Rpb25zXG4gICAgfSxcbiAgICBmb3JtYXQ6IHtcbiAgICAgIGxlZ2VuZDogZCA9PiBkLFxuICAgICAgdG9vbHRpcDogW1RPT0xUSVBfRk9STUFUX1RZUEVTLk5PTkUsIFRPT0xUSVBfRk9STUFUX1RZUEVTLkRBVEVdXG4gICAgfVxuICB9LFxuICBbQUxMX0ZJRUxEX1RZUEVTLmdlb2pzb25dOiB7XG4gICAgdHlwZTogJ2dlb21ldHJ5JyxcbiAgICBzY2FsZToge1xuICAgICAgLi4ubm90U3VwcG9ydGVkU2NhbGVPcHRzLFxuICAgICAgLi4ubm90U3VwcG9ydEFnZ3JPcHRzXG4gICAgfSxcbiAgICBmb3JtYXQ6IHtcbiAgICAgIGxlZ2VuZDogKCkgPT4gJy4uLicsXG4gICAgICB0b29sdGlwOiBbXVxuICAgIH1cbiAgfSxcbiAgW0FMTF9GSUVMRF9UWVBFUy5nZW9hcnJvd106IHtcbiAgICB0eXBlOiAnZ2VvbWV0cnknLFxuICAgIHNjYWxlOiB7XG4gICAgICAuLi5ub3RTdXBwb3J0ZWRTY2FsZU9wdHMsXG4gICAgICAuLi5ub3RTdXBwb3J0QWdnck9wdHNcbiAgICB9LFxuICAgIGZvcm1hdDoge1xuICAgICAgbGVnZW5kOiAoKSA9PiAnLi4uJyxcbiAgICAgIHRvb2x0aXA6IFtdXG4gICAgfVxuICB9LFxuICBbQUxMX0ZJRUxEX1RZUEVTLm9iamVjdF06IHtcbiAgICB0eXBlOiAnbnVtZXJpY2FsJyxcbiAgICBzY2FsZToge30sXG4gICAgZm9ybWF0OiB7XG4gICAgICBsZWdlbmQ6ICgpID0+ICcuLi4nLFxuICAgICAgdG9vbHRpcDogW11cbiAgICB9XG4gIH0sXG4gIFtBTExfRklFTERfVFlQRVMuYXJyYXldOiB7XG4gICAgdHlwZTogJ251bWVyaWNhbCcsXG4gICAgc2NhbGU6IHt9LFxuICAgIGZvcm1hdDoge1xuICAgICAgbGVnZW5kOiAoKSA9PiAnLi4uJyxcbiAgICAgIHRvb2x0aXA6IFtdXG4gICAgfVxuICB9LFxuICBbQUxMX0ZJRUxEX1RZUEVTLmgzXToge1xuICAgIHR5cGU6ICdoMycsXG4gICAgc2NhbGU6IHtcbiAgICAgIC4uLm5vdFN1cHBvcnRlZFNjYWxlT3B0cyxcbiAgICAgIC4uLm5vdFN1cHBvcnRBZ2dyT3B0c1xuICAgIH0sXG4gICAgZm9ybWF0OiB7XG4gICAgICBsZWdlbmQ6ICgpID0+ICcuLi4nLFxuICAgICAgdG9vbHRpcDogW11cbiAgICB9XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCBDSEFOTkVMX1NDQUxFX1NVUFBPUlRFRF9GSUVMRFMgPSBPYmplY3Qua2V5cyhDSEFOTkVMX1NDQUxFUykucmVkdWNlKFxuICAoYWNjdSwga2V5KSA9PiAoe1xuICAgIC4uLmFjY3UsXG4gICAgW2tleV06IE9iamVjdC5rZXlzKEZJRUxEX09QVFMpLmZpbHRlcihcbiAgICAgIGZ0ID0+IEZJRUxEX09QVFNbZnRdLnNjYWxlW2tleV0gJiYgT2JqZWN0LmtleXMoRklFTERfT1BUU1tmdF0uc2NhbGVba2V5XSkubGVuZ3RoXG4gICAgKVxuICB9KSxcbiAge30gYXMge1tpZDogc3RyaW5nXTogc3RyaW5nW119XG4pO1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9MQVlFUl9DT0xPUiA9IHtcbiAgdHJpcEFyYzogJyM5MjI2QzYnLFxuICBiZWdpbnRyaXBfbGF0OiAnIzFFOTZCRScsXG4gIGRyb3BvZmZfbGF0OiAnI0ZGOTkxRicsXG4gIHJlcXVlc3RfbGF0OiAnIzUyQTM1Mydcbn07XG5cbmV4cG9ydCBjb25zdCBERUZBVUxUX0xBWUVSX0NPTE9SX1BBTEVUVEUgPSAnR2xvYmFsIFdhcm1pbmcnO1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfTEFZRVJfQ09MT1JfUEFMRVRURV9TVEVQUyA9IDY7XG5cbi8vIGxldCB1c2VyIHBhc3MgaW4gZGVmYXVsdCB0b29sdGlwIGZpZWxkc1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfVE9PTFRJUF9GSUVMRFM6IGFueVtdID0gW107XG5cbmV4cG9ydCBjb25zdCBOT19WQUxVRV9DT0xPUjogUkdCQUNvbG9yID0gWzAsIDAsIDAsIDBdO1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9QSUNLSU5HX1JBRElVUyA9IDM7XG5cbmV4cG9ydCBjb25zdCBPVkVSTEFZX0JMRU5ESU5HUyA9IHtcbiAgbm9ybWFsOiB7XG4gICAgbGFiZWw6ICdvdmVybGF5QmxlbmRpbmcubm9ybWFsJyxcbiAgICB2YWx1ZTogJ25vcm1hbCdcbiAgfSxcbiAgc2NyZWVuOiB7XG4gICAgbGFiZWw6ICdvdmVybGF5QmxlbmRpbmcuc2NyZWVuJyxcbiAgICB2YWx1ZTogJ3NjcmVlbidcbiAgfSxcbiAgZGFya2VuOiB7XG4gICAgbGFiZWw6ICdvdmVybGF5QmxlbmRpbmcuZGFya2VuJyxcbiAgICB2YWx1ZTogJ2RhcmtlbidcbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IExBWUVSX0JMRU5ESU5HUyA9IHtcbiAgYWRkaXRpdmU6IHtcbiAgICBsYWJlbDogJ2xheWVyQmxlbmRpbmcuYWRkaXRpdmUnLFxuICAgIGJsZW5kRnVuYzogWydTUkNfQUxQSEEnLCAnRFNUX0FMUEhBJ10sXG4gICAgYmxlbmRFcXVhdGlvbjogJ0ZVTkNfQUREJ1xuICB9LFxuICBub3JtYWw6IHtcbiAgICAvLyByZWZlcmVuY2UgdG9cbiAgICAvLyBodHRwczovL2xpbW51LmNvbS93ZWJnbC1ibGVuZGluZy15b3VyZS1wcm9iYWJseS13cm9uZy9cbiAgICBsYWJlbDogJ2xheWVyQmxlbmRpbmcubm9ybWFsJyxcbiAgICBibGVuZEZ1bmM6IFsnU1JDX0FMUEhBJywgJ09ORV9NSU5VU19TUkNfQUxQSEEnLCAnT05FJywgJ09ORV9NSU5VU19TUkNfQUxQSEEnXSxcbiAgICBibGVuZEVxdWF0aW9uOiBbJ0ZVTkNfQUREJywgJ0ZVTkNfQUREJ11cbiAgfSxcbiAgc3VidHJhY3RpdmU6IHtcbiAgICBsYWJlbDogJ2xheWVyQmxlbmRpbmcuc3VidHJhY3RpdmUnLFxuICAgIGJsZW5kRnVuYzogWydPTkUnLCAnT05FX01JTlVTX0RTVF9DT0xPUicsICdTUkNfQUxQSEEnLCAnRFNUX0FMUEhBJ10sXG4gICAgYmxlbmRFcXVhdGlvbjogWydGVU5DX1NVQlRSQUNUJywgJ0ZVTkNfQUREJ11cbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IE1BWF9ERUZBVUxUX1RPT0xUSVBTID0gNTtcblxuZXhwb3J0IGNvbnN0IFJFU09MVVRJT05TID0ga2V5TWlycm9yKHtcbiAgT05FX1g6IG51bGwsXG4gIFRXT19YOiBudWxsXG59KTtcblxuZXhwb3J0IGNvbnN0IEVYUE9SVF9JTUdfUkFUSU9TID0ga2V5TWlycm9yKHtcbiAgU0NSRUVOOiBudWxsLFxuICBGT1VSX0JZX1RIUkVFOiBudWxsLFxuICBTSVhURUVOX0JZX05JTkU6IG51bGwsXG4gIENVU1RPTTogbnVsbFxufSk7XG5cbmV4cG9ydCB0eXBlIEltYWdlUmF0aW9PcHRpb24gPSB7XG4gIGlkOiBrZXlvZiB0eXBlb2YgRVhQT1JUX0lNR19SQVRJT1M7XG4gIGxhYmVsOiBzdHJpbmc7XG4gIGhpZGRlbj86IGJvb2xlYW47XG4gIGdldFNpemU6IChzY3JlZW5XOiBudW1iZXIsIHNjcmVlbkg6IG51bWJlcikgPT4ge3dpZHRoOiBudW1iZXI7IGhlaWdodDogbnVtYmVyfTtcbn07XG5cbmV4cG9ydCBjb25zdCBTY3JlZW5SYXRpb09wdGlvbjogSW1hZ2VSYXRpb09wdGlvbiA9IHtcbiAgaWQ6IEVYUE9SVF9JTUdfUkFUSU9TLlNDUkVFTixcbiAgbGFiZWw6ICdtb2RhbC5leHBvcnRJbWFnZS5yYXRpb09yaWdpbmFsU2NyZWVuJyxcbiAgZ2V0U2l6ZTogKHNjcmVlblcsIHNjcmVlbkgpID0+ICh7d2lkdGg6IHNjcmVlblcsIGhlaWdodDogc2NyZWVuSH0pXG59O1xuZXhwb3J0IGNvbnN0IEN1c3RvbVJhdGlvT3B0aW9uOiBJbWFnZVJhdGlvT3B0aW9uID0ge1xuICBpZDogRVhQT1JUX0lNR19SQVRJT1MuQ1VTVE9NLFxuICBoaWRkZW46IHRydWUsXG4gIGxhYmVsOiAnbW9kYWwuZXhwb3J0SW1hZ2UucmF0aW9DdXN0b20nLFxuICBnZXRTaXplOiAobWFwVywgbWFwSCkgPT4gKHt3aWR0aDogbWFwVywgaGVpZ2h0OiBtYXBIfSlcbn07XG5leHBvcnQgY29uc3QgRm91ckJ5VGhyZWVSYXRpb09wdGlvbjogSW1hZ2VSYXRpb09wdGlvbiA9IHtcbiAgaWQ6IEVYUE9SVF9JTUdfUkFUSU9TLkZPVVJfQllfVEhSRUUsXG4gIGxhYmVsOiAnbW9kYWwuZXhwb3J0SW1hZ2UucmF0aW80XzMnLFxuICBnZXRTaXplOiBzY3JlZW5XID0+ICh7XG4gICAgd2lkdGg6IHNjcmVlblcsXG4gICAgaGVpZ2h0OiBNYXRoLnJvdW5kKHNjcmVlblcgKiAwLjc1KVxuICB9KVxufTtcbmV4cG9ydCBjb25zdCBTaXh0ZWVuQnlOaW5lUmF0aW9PcHRpb246IEltYWdlUmF0aW9PcHRpb24gPSB7XG4gIGlkOiBFWFBPUlRfSU1HX1JBVElPUy5TSVhURUVOX0JZX05JTkUsXG4gIGxhYmVsOiAnbW9kYWwuZXhwb3J0SW1hZ2UucmF0aW8xNl85JyxcbiAgZ2V0U2l6ZTogc2NyZWVuVyA9PiAoe1xuICAgIHdpZHRoOiBzY3JlZW5XLFxuICAgIGhlaWdodDogTWF0aC5yb3VuZChzY3JlZW5XICogMC41NjI1KVxuICB9KVxufTtcblxuZXhwb3J0IGNvbnN0IEVYUE9SVF9JTUdfUkFUSU9fT1BUSU9OUzogUmVhZG9ubHlBcnJheTxJbWFnZVJhdGlvT3B0aW9uPiA9IFtcbiAgU2NyZWVuUmF0aW9PcHRpb24sXG4gIEZvdXJCeVRocmVlUmF0aW9PcHRpb24sXG4gIFNpeHRlZW5CeU5pbmVSYXRpb09wdGlvbixcbiAgQ3VzdG9tUmF0aW9PcHRpb25cbl07XG5cbmV4cG9ydCB0eXBlIEV4cG9ydFJlc29sdXRpb25PcHRpb24gPVxuICB8IGtleW9mIHR5cGVvZiBSRVNPTFVUSU9OU1xuICB8ICcxMjgweDcyMCdcbiAgfCAnMTkyMHgxMDgwJ1xuICB8ICcyNTYweDE0NDAnXG4gIHwgJzE2MDB4OTAwJ1xuICB8ICcxMDI0eDc2OCdcbiAgfCAnMTI4MHg5NjAnXG4gIHwgJzE2MDB4MTIwMCdcbiAgfCAnMTkyMHgxNDQwJztcblxuZXhwb3J0IHR5cGUgSW1hZ2VSZXNvbHV0aW9uT3B0aW9uID0ge1xuICBpZDogRXhwb3J0UmVzb2x1dGlvbk9wdGlvbjtcbiAgbGFiZWw6IHN0cmluZztcbiAgYXZhaWxhYmxlOiBib29sZWFuO1xuICBzY2FsZT86IG51bWJlcjtcbiAgZ2V0U2l6ZTogKHNjcmVlblc6IG51bWJlciwgc2NyZWVuSDogbnVtYmVyKSA9PiB7d2lkdGg6IG51bWJlcjsgaGVpZ2h0OiBudW1iZXJ9O1xufTtcblxuZXhwb3J0IGNvbnN0IE9uZVhSZXNvbHV0aW9uT3B0aW9uOiBJbWFnZVJlc29sdXRpb25PcHRpb24gPSB7XG4gIGlkOiBSRVNPTFVUSU9OUy5PTkVfWCxcbiAgbGFiZWw6ICcxeCcsXG4gIGF2YWlsYWJsZTogdHJ1ZSxcbiAgc2NhbGU6IDEsXG4gIGdldFNpemU6IChzY3JlZW5XLCBzY3JlZW5IKSA9PiAoe1xuICAgIHdpZHRoOiBzY3JlZW5XLFxuICAgIGhlaWdodDogc2NyZWVuSFxuICB9KVxufTtcblxuZXhwb3J0IGNvbnN0IFR3b1hSZXNvbHV0aW9uT3B0aW9uOiBJbWFnZVJlc29sdXRpb25PcHRpb24gPSB7XG4gIGlkOiBSRVNPTFVUSU9OUy5UV09fWCxcbiAgbGFiZWw6ICcyeCcsXG4gIGF2YWlsYWJsZTogdHJ1ZSxcbiAgc2NhbGU6IDIsXG4gIGdldFNpemU6IChzY3JlZW5XLCBzY3JlZW5IKSA9PiAoe1xuICAgIHdpZHRoOiBzY3JlZW5XICogMixcbiAgICBoZWlnaHQ6IHNjcmVlbkggKiAyXG4gIH0pXG59O1xuXG4vLyBGaXhlZCBkaW1lbnNpb24gb3B0aW9uc1xuZXhwb3J0IGNvbnN0IFJlc29sdXRpb24xOTIweDEwODBPcHRpb246IEltYWdlUmVzb2x1dGlvbk9wdGlvbiA9IHtcbiAgaWQ6ICcxOTIweDEwODAnLFxuICBsYWJlbDogJzE5MjAgw5cgMTA4MCAoMTY6OSknLFxuICBhdmFpbGFibGU6IHRydWUsXG4gIGdldFNpemU6ICgpID0+ICh7d2lkdGg6IDE5MjAsIGhlaWdodDogMTA4MH0pXG59O1xuXG5leHBvcnQgY29uc3QgUmVzb2x1dGlvbjEyODB4NzIwT3B0aW9uOiBJbWFnZVJlc29sdXRpb25PcHRpb24gPSB7XG4gIGlkOiAnMTI4MHg3MjAnLFxuICBsYWJlbDogJzEyODAgw5cgNzIwICgxNjo5KScsXG4gIGF2YWlsYWJsZTogdHJ1ZSxcbiAgZ2V0U2l6ZTogKCkgPT4gKHt3aWR0aDogMTI4MCwgaGVpZ2h0OiA3MjB9KVxufTtcblxuZXhwb3J0IGNvbnN0IFJlc29sdXRpb24yNTYweDE0NDBPcHRpb246IEltYWdlUmVzb2x1dGlvbk9wdGlvbiA9IHtcbiAgaWQ6ICcyNTYweDE0NDAnLFxuICBsYWJlbDogJzI1NjAgw5cgMTQ0MCAoMTY6OSknLFxuICBhdmFpbGFibGU6IHRydWUsXG4gIGdldFNpemU6ICgpID0+ICh7d2lkdGg6IDI1NjAsIGhlaWdodDogMTQ0MH0pXG59O1xuXG5leHBvcnQgY29uc3QgUmVzb2x1dGlvbjE2MDB4OTAwT3B0aW9uOiBJbWFnZVJlc29sdXRpb25PcHRpb24gPSB7XG4gIGlkOiAnMTYwMHg5MDAnLFxuICBsYWJlbDogJzE2MDAgw5cgOTAwICgxNjo5KScsXG4gIGF2YWlsYWJsZTogdHJ1ZSxcbiAgZ2V0U2l6ZTogKCkgPT4gKHt3aWR0aDogMTYwMCwgaGVpZ2h0OiA5MDB9KVxufTtcblxuZXhwb3J0IGNvbnN0IFJlc29sdXRpb24xMDI0eDc2OE9wdGlvbjogSW1hZ2VSZXNvbHV0aW9uT3B0aW9uID0ge1xuICBpZDogJzEwMjR4NzY4JyxcbiAgbGFiZWw6ICcxMDI0IMOXIDc2OCAoNDozKScsXG4gIGF2YWlsYWJsZTogdHJ1ZSxcbiAgZ2V0U2l6ZTogKCkgPT4gKHt3aWR0aDogMTAyNCwgaGVpZ2h0OiA3Njh9KVxufTtcblxuZXhwb3J0IGNvbnN0IFJlc29sdXRpb24xMjgweDk2ME9wdGlvbjogSW1hZ2VSZXNvbHV0aW9uT3B0aW9uID0ge1xuICBpZDogJzEyODB4OTYwJyxcbiAgbGFiZWw6ICcxMjgwIMOXIDk2MCAoNDozKScsXG4gIGF2YWlsYWJsZTogdHJ1ZSxcbiAgZ2V0U2l6ZTogKCkgPT4gKHt3aWR0aDogMTI4MCwgaGVpZ2h0OiA5NjB9KVxufTtcblxuZXhwb3J0IGNvbnN0IFJlc29sdXRpb24xNjAweDEyMDBPcHRpb246IEltYWdlUmVzb2x1dGlvbk9wdGlvbiA9IHtcbiAgaWQ6ICcxNjAweDEyMDAnLFxuICBsYWJlbDogJzE2MDAgw5cgMTIwMCAoNDozKScsXG4gIGF2YWlsYWJsZTogdHJ1ZSxcbiAgZ2V0U2l6ZTogKCkgPT4gKHt3aWR0aDogMTYwMCwgaGVpZ2h0OiAxMjAwfSlcbn07XG5cbmV4cG9ydCBjb25zdCBSZXNvbHV0aW9uMTkyMHgxNDQwT3B0aW9uOiBJbWFnZVJlc29sdXRpb25PcHRpb24gPSB7XG4gIGlkOiAnMTkyMHgxNDQwJyxcbiAgbGFiZWw6ICcxOTIwIMOXIDE0NDAgKDQ6MyknLFxuICBhdmFpbGFibGU6IHRydWUsXG4gIGdldFNpemU6ICgpID0+ICh7d2lkdGg6IDE5MjAsIGhlaWdodDogMTQ0MH0pXG59O1xuXG5leHBvcnQgY29uc3QgRVhQT1JUX0lNR19SRVNPTFVUSU9OX09QVElPTlM6IFJlYWRvbmx5QXJyYXk8SW1hZ2VSZXNvbHV0aW9uT3B0aW9uPiA9IFtcbiAgT25lWFJlc29sdXRpb25PcHRpb24sXG4gIFR3b1hSZXNvbHV0aW9uT3B0aW9uLFxuICBSZXNvbHV0aW9uMTI4MHg3MjBPcHRpb24sXG4gIFJlc29sdXRpb24xOTIweDEwODBPcHRpb24sXG4gIFJlc29sdXRpb24yNTYweDE0NDBPcHRpb24sXG4gIFJlc29sdXRpb24xNjAweDkwME9wdGlvbixcbiAgUmVzb2x1dGlvbjEwMjR4NzY4T3B0aW9uLFxuICBSZXNvbHV0aW9uMTI4MHg5NjBPcHRpb24sXG4gIFJlc29sdXRpb24xNjAweDEyMDBPcHRpb24sXG4gIFJlc29sdXRpb24xOTIweDE0NDBPcHRpb25cbl07XG5cbmV4cG9ydCBjb25zdCBFWFBPUlRfREFUQV9UWVBFID0ga2V5TWlycm9yKHtcbiAgQ1NWOiBudWxsXG4gIC8vIFNIQVBFRklMRTogbnVsbCxcbiAgLy8gSlNPTjogbnVsbCxcbiAgLy8gR0VPSlNPTjogbnVsbCxcbiAgLy8gVE9QT0pTT046IG51bGxcbn0pO1xuXG5leHBvcnQgY29uc3QgRVhQT1JUX0RBVEFfVFlQRV9PUFRJT05TID0gW1xuICB7XG4gICAgaWQ6IEVYUE9SVF9EQVRBX1RZUEUuQ1NWLFxuICAgIGxhYmVsOiBFWFBPUlRfREFUQV9UWVBFLkNTVi50b0xvd2VyQ2FzZSgpLFxuICAgIGF2YWlsYWJsZTogdHJ1ZVxuICB9XG4gIC8vIHtcbiAgLy8gICBpZDogRVhQT1JUX0RBVEFfVFlQRS5TSEFQRUZJTEUsXG4gIC8vICAgbGFiZWw6ICdzaGFwZWZpbGUnLFxuICAvLyAgIGF2YWlsYWJsZTogZmFsc2VcbiAgLy8gfSxcbiAgLy8ge1xuICAvLyAgIGlkOiBFWFBPUlRfREFUQV9UWVBFLkpTT04sXG4gIC8vICAgbGFiZWw6ICdqc29uJyxcbiAgLy8gICBhdmFpbGFibGU6IGZhbHNlXG4gIC8vIH0sXG4gIC8vIHtcbiAgLy8gICBpZDogRVhQT1JUX0RBVEFfVFlQRS5HRU9KU09OLFxuICAvLyAgIGxhYmVsOiAnZ2VvanNvbicsXG4gIC8vICAgYXZhaWxhYmxlOiBmYWxzZVxuICAvLyB9LFxuICAvLyB7XG4gIC8vICAgaWQ6IEVYUE9SVF9EQVRBX1RZUEUuVE9QT0pTT04sXG4gIC8vICAgbGFiZWw6ICd0b3BvanNvbicsXG4gIC8vICAgYXZhaWxhYmxlOiBmYWxzZVxuICAvLyB9XG5dO1xuXG4vLyBFeHBvcnQgbWFwIHR5cGVzXG5leHBvcnQgY29uc3QgRVhQT1JUX01BUF9GT1JNQVRTID0ga2V5TWlycm9yKHtcbiAgSFRNTDogbnVsbCxcbiAgSlNPTjogbnVsbFxufSk7XG5cbmV4cG9ydCBjb25zdCBFWFBPUlRfSFRNTF9NQVBfTU9ERVMgPSBrZXlNaXJyb3Ioe1xuICBSRUFEOiBudWxsLFxuICBFRElUOiBudWxsXG59KTtcblxuLy8gRXhwb3J0IG1hcCBvcHRpb25zXG5leHBvcnQgY29uc3QgRVhQT1JUX01BUF9GT1JNQVRfT1BUSU9OUyA9IE9iamVjdC5lbnRyaWVzKEVYUE9SVF9NQVBfRk9STUFUUykubWFwKFxuICAoZW50cnk6IFtzdHJpbmcsIGFueV0pID0+ICh7XG4gICAgaWQ6IGVudHJ5WzBdLFxuICAgIGxhYmVsOiBlbnRyeVsxXS50b0xvd2VyQ2FzZSgpLFxuICAgIGF2YWlsYWJsZTogdHJ1ZVxuICB9KVxuKTtcblxuZXhwb3J0IGZ1bmN0aW9uIGdldEhUTUxNYXBNb2RlVGlsZVVybChtb2RlOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gYGh0dHBzOi8vZDFhM2Y0c3BhenpycDQuY2xvdWRmcm9udC5uZXQva2VwbGVyLmdsL2RvY3VtZW50YXRpb24vbWFwLSR7bW9kZS50b0xvd2VyQ2FzZSgpfS1tb2RlLnBuZ2A7XG59XG5cbmV4cG9ydCBjb25zdCBFWFBPUlRfSFRNTF9NQVBfTU9ERV9PUFRJT05TID0gT2JqZWN0LmVudHJpZXMoRVhQT1JUX0hUTUxfTUFQX01PREVTKS5tYXAoXG4gIChlbnRyeTogW3N0cmluZywgYW55XSkgPT4gKHtcbiAgICBpZDogZW50cnlbMF0sXG4gICAgbGFiZWw6IGBtb2RhbC5leHBvcnRNYXAuaHRtbC4ke2VudHJ5WzFdLnRvTG93ZXJDYXNlKCl9YCxcbiAgICBhdmFpbGFibGU6IHRydWUsXG4gICAgdXJsOiBnZXRIVE1MTWFwTW9kZVRpbGVVcmwoZW50cnlbMV0pXG4gIH0pXG4pO1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9VVUlEX0NPVU5UID0gNjtcblxuZXhwb3J0IGNvbnN0IERFRkFVTFRfTk9USUZJQ0FUSU9OX01FU1NBR0UgPSAnTUVTU0FHRV9OT1RfUFJPVklERUQnO1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9OT1RJRklDQVRJT05fVFlQRVMgPSBrZXlNaXJyb3Ioe1xuICBpbmZvOiBudWxsLFxuICBlcnJvcjogbnVsbCxcbiAgd2FybmluZzogbnVsbCxcbiAgc3VjY2VzczogbnVsbFxufSk7XG5cbmV4cG9ydCBjb25zdCBERUZBVUxUX05PVElGSUNBVElPTl9UT1BJQ1MgPSBrZXlNaXJyb3Ioe1xuICBnbG9iYWw6IG51bGwsXG4gIGZpbGU6IG51bGxcbn0pO1xuXG4vLyBNaW5pbXVtIHRpbWUgYmV0d2VlbiBpZGVudGljYWwgbm90aWZpY2F0aW9ucyBhYm91dCBkZWNrLmdsIGVycm9yc1xuZXhwb3J0IGNvbnN0IFRIUk9UVExFX05PVElGSUNBVElPTl9USU1FID0gMzMwO1xuXG4vLyBBbmltYXRpb25cbmV4cG9ydCBjb25zdCBCQVNFX1NQRUVEID0gNjAwO1xuZXhwb3J0IGNvbnN0IEZQUyA9IDYwO1xuXG4vKipcbiAqIDQgQW5pbWF0aW9uIFdpbmRvdyBUeXBlc1xuICogMS4gZnJlZVxuICogIHwtPiAgfC0+XG4gKiBDdXJyZW50IHRpbWUgaXMgYSBmaXhlZCByYW5nZSwgYW5pbWF0aW9uIGNvbnRyb2xsZXIgY2FsbHMgbmV4dCBhbmltYXRpb24gZnJhbWVzIGNvbnRpbnVvdXNseSB0byBhbmltYXRpb24gYSBtb3Zpbmcgd2luZG93XG4gKiBUaGUgaW5jcmVtZW50IGlkIGJhc2VkIG9uIGRvbWFpbiAvIEJBU0VfU1BFRUQgKiBTUEVFRFxuICpcbiAqIDIuIGluY3JlbWVudGFsXG4gKiB8ICAgIHwtPlxuICogU2FtZSBhcyBmcmVlLCBjdXJyZW50IHRpbWUgaXMgYSBncm93aW5nIHJhbmdlLCBvbmx5IHRoZSBtYXggdmFsdWUgb2YgcmFuZ2UgaW5jcmVtZW50IGR1cmluZyBhbmltYXRpb24uXG4gKiBUaGUgaW5jcmVtZW50IGlzIGFsc28gYmFzZWQgb24gZG9tYWluIC8gQkFTRV9TUEVFRCAqIFNQRUVEXG4gKlxuICogMy4gcG9pbnRcbiAqIG8gLT4gb1xuICogQ3VycmVudCB0aW1lIGlzIGEgcG9pbnQsIGFuaW1hdGlvbiBjb250cm9sbGVyIGNhbGxzIG5leHQgYW5pbWF0aW9uIGZyYW1lIGNvbnRpbnVvdXNseSB0byBhbmltYXRpb24gYSBtb3ZpbmcgcG9pbnRcbiAqIFRoZSBpbmNyZW1lbnQgaXMgYmFzZWQgb24gZG9tYWluIC8gQkFTRV9TUEVFRCAqIFNQRUVEXG4gKlxuICogNC4gaW50ZXJ2YWxcbiAqIG8gfj4gb1xuICogQ3VycmVudCB0aW1lIGlzIGEgcG9pbnQuIEFuIGFycmF5IG9mIHNvcnRlZCB0aW1lIHN0ZXBzIG5lZWQgdG8gYmUgcHJvdmlkZWQuXG4gKiBhbmltYXRpb24gY29udHJvbGxlciBjYWxscyBuZXh0IGFuaW1hdGlvbiBhdCBhIGludGVydmFsIHdoZW4gdGhlIHBvaW50IGp1bXBzIHRvIHRoZSBuZXh0IHN0ZXBcbiAqL1xuZXhwb3J0IGNvbnN0IEFOSU1BVElPTl9XSU5ET1cgPSBrZXlNaXJyb3Ioe1xuICBmcmVlOiBudWxsLFxuICBpbmNyZW1lbnRhbDogbnVsbCxcbiAgcG9pbnQ6IG51bGwsXG4gIGludGVydmFsOiBudWxsXG59KTtcbmV4cG9ydCBjb25zdCBERUZBVUxUX1RJTUVfRk9STUFUID0gJ01NL0REL1lZIEhIOm1tOnNzYSc7XG5leHBvcnQgY29uc3QgU1BFRURfQ09OVFJPTF9SQU5HRTogW251bWJlciwgbnVtYmVyXSA9IFswLCAxMF07XG5leHBvcnQgY29uc3QgU1BFRURfQ09OVFJPTF9TVEVQID0gMC4wMDE7XG5cbi8vIEdlb2NvZGVyXG5leHBvcnQgY29uc3QgR0VPQ09ERVJfREFUQVNFVF9OQU1FID0gJ2dlb2NvZGVyX2RhdGFzZXQnO1xuZXhwb3J0IGNvbnN0IEdFT0NPREVSX0xBWUVSX0lEID0gJ2dlb2NvZGVyX2xheWVyJztcbmV4cG9ydCBjb25zdCBHRU9DT0RFUl9HRU9fT0ZGU0VUID0gMC4wNTtcbmV4cG9ydCBjb25zdCBHRU9DT0RFUl9JQ09OX0NPTE9SOiBbbnVtYmVyLCBudW1iZXIsIG51bWJlcl0gPSBbMjU1LCAwLCAwXTtcbi8vIEJhc2UgaWNvbiBzaXplIGJlZm9yZSBhbmNob3Igbm9ybWFsaXphdGlvbi4gVGhlIGdlb2NvZGVyIHBpbiBpY29uIGlzIGJvdHRvbS1hbmNob3JlZFxuLy8gYW5kIHNjYWxlZCB0byBmaXQgdGhlIFNjYXR0ZXJwbG90TGF5ZXIgdW5pdCBjaXJjbGUgKH4wLjV4KSwgc28gdGhlIHJlbmRlcmVkIHNpemUgaXNcbi8vIGNvbXBlbnNhdGVkIGhlcmUgKDgwICogMiA9IDE2MCkuXG5leHBvcnQgY29uc3QgR0VPQ09ERVJfSUNPTl9TSVpFID0gMTYwO1xuXG4vLyBFZGl0b3JcbmV4cG9ydCBjb25zdCBFRElUT1JfTEFZRVJfSUQgPSAna2VwbGVyX2VkaXRvcl9sYXllcic7XG5leHBvcnQgY29uc3QgRURJVE9SX0xBWUVSX1BJQ0tJTkdfUkFESVVTID0gNjtcbmV4cG9ydCBjb25zdCBFRElUT1JfTU9ERVMgPSB7XG4gIERSQVdfUE9MWUdPTjogJ0RSQVdfUE9MWUdPTicsXG4gIERSQVdfUkVDVEFOR0xFOiAnRFJBV19SRUNUQU5HTEUnLFxuICBEUkFXX0xJTkVTVFJJTkc6ICdEUkFXX0xJTkVTVFJJTkcnLFxuICBEUkFXX1BPSU5UOiAnRFJBV19QT0lOVCcsXG4gIEVESVQ6ICdFRElUX1ZFUlRFWCdcbn07XG5cbmV4cG9ydCBjb25zdCBFRElUT1JfRFJBV19NT0RFUzogc3RyaW5nW10gPSBbXG4gIEVESVRPUl9NT0RFUy5EUkFXX1BPTFlHT04sXG4gIEVESVRPUl9NT0RFUy5EUkFXX1JFQ1RBTkdMRSxcbiAgRURJVE9SX01PREVTLkRSQVdfTElORVNUUklORyxcbiAgRURJVE9SX01PREVTLkRSQVdfUE9JTlRcbl07XG5cbmV4cG9ydCBjb25zdCBQTE9UX1RZUEVTID0ga2V5TWlycm9yKHtcbiAgaGlzdG9ncmFtOiBudWxsLFxuICBsaW5lQ2hhcnQ6IG51bGxcbn0pO1xuXG4vLyBGaWx0ZXJcbmV4cG9ydCBjb25zdCBJTklUX0ZJTFRFUl9JVEVNU19JTl9EUk9QRE9XTiA9IDEwMDtcblxuLy8gR1BVIEZpbHRlcmluZ1xuLyoqXG4gKiBNYXggbnVtYmVyIG9mIGZpbHRlciB2YWx1ZSBidWZmZXJzIHRoYXQgZGVjay5nbCBwcm92aWRlc1xuICovXG5leHBvcnQgY29uc3QgTUFYX0dQVV9GSUxURVJTID0gNDtcbmV4cG9ydCBjb25zdCBNQVBfVEhVTUJOQUlMX0RJTUVOU0lPTiA9IHtcbiAgd2lkdGg6IDMwMCxcbiAgaGVpZ2h0OiAyMDBcbn07XG5cbmV4cG9ydCBjb25zdCBNQVBfSU5GT19DSEFSQUNURVIgPSB7XG4gIHRpdGxlOiAxMDAsXG4gIGRlc2NyaXB0aW9uOiAxMDBcbn07XG5cbi8vIExvYWQgZGF0YVxuZXhwb3J0IGNvbnN0IExPQURJTkdfTUVUSE9EUyA9IGtleU1pcnJvcih7XG4gIHVwbG9hZDogbnVsbCxcbiAgc3RvcmFnZTogbnVsbCxcbiAgdGlsZXNldDogbnVsbFxufSk7XG5cbmV4cG9ydCBjb25zdCBERUZBVUxUX0ZFQVRVUkVfRkxBR1MgPSB7fTtcblxuZXhwb3J0IGNvbnN0IERBVEFTRVRfRk9STUFUUyA9IGtleU1pcnJvcih7XG4gIHJvdzogbnVsbCxcbiAgZ2VvanNvbjogbnVsbCxcbiAgY3N2OiBudWxsLFxuICBrZXBsZXJnbDogbnVsbCxcbiAgYXJyb3c6IG51bGwsXG4gIGR1Y2tkYjogbnVsbFxufSk7XG5cbmV4cG9ydCBjb25zdCBNQVBfQ09OVFJPTFMgPSBrZXlNaXJyb3Ioe1xuICB2aXNpYmxlTGF5ZXJzOiBudWxsLFxuICBtYXBMZWdlbmQ6IG51bGwsXG4gIHRvZ2dsZTNkOiBudWxsLFxuICBzcGxpdE1hcDogbnVsbCxcbiAgbWFwRHJhdzogbnVsbCxcbiAgbWFwTG9jYWxlOiBudWxsLFxuICBtYXBUaGVtZTogbnVsbCxcbiAgZWZmZWN0OiBudWxsLFxuICBhbm5vdGF0aW9uOiBudWxsLFxuICBhaUFzc2lzdGFudDogbnVsbFxufSk7XG5cbmV4cG9ydCBlbnVtIE1hcFZpZXdNb2RlIHtcbiAgTU9ERV8yRCA9ICdNT0RFXzJEJyxcbiAgTU9ERV8zRCA9ICdNT0RFXzNEJyxcbiAgTU9ERV9HTE9CRSA9ICdNT0RFX0dMT0JFJ1xufVxuXG4vKipcbiAqIE1pbmltdW0gem9vbSBsZXZlbCBhbGxvd2VkIGluIGdsb2JlIG1vZGUuIE5lZ2F0aXZlIHZhbHVlcyBsZXQgdGhlIHVzZXIgem9vbVxuICogb3V0IGZ1cnRoZXIgdGhhbiB0aGUgd2ViLW1lcmNhdG9yIGRlZmF1bHQgb2YgMCwgc28gdGhlIHdob2xlIGdsb2JlIGNhbiBiZVxuICogcHVsbGVkIGJhY2sgdG8gYXBwZWFyIHNtYWxsZXIgb24gc2NyZWVuLlxuICovXG5leHBvcnQgY29uc3QgR0xPQkVfTUlOX1pPT00gPSAyO1xuXG4vKipcbiAqIE1heGltdW0gem9vbSBpbiBnbG9iZSBtb2RlLlxuICpcbiAqIFRoZSBwcmV2aW91cyBcImVtcHR5IHJlY3RhbmdsZXNcIiBhdCBoaWdoIHpvb20gd2VyZSBjYXVzZWQgYnkgdGhlIHZlY3RvciBiYXNlbWFwXG4gKiBsYXllciBkZWNsYXJpbmcgYG1heFpvb206IDIzYCB3aGlsZSB0aGUgcmF3IHRpbGUgZW5kcG9pbnRzIG9ubHkgaGF2ZSBkYXRhIHRvXG4gKiB6MTYgKG1hcGJveC1zdHJlZXRzLXY4KSAvIHoxNCAoQ0FSVE8pIOKAlCBkZWNrIHRoZW4gcmVxdWVzdGVkIG5vbi1leGlzdGVudCB0aWxlc1xuICogdGhhdCA0MDQuIFRoYXQgaXMgZml4ZWQgaW4gYGdldEdsb2JlQmFzZUxheWVyc2AgYnkgc2V0dGluZyBgbWF4Wm9vbWAgdG8gZWFjaFxuICogc291cmNlJ3MgdHJ1ZSBkYXRhIG1heCBzbyBkZWNrIG92ZXJ6b29tcyBpbnN0ZWFkLlxuICpcbiAqIFRoZSByZW1haW5pbmcgcHJhY3RpY2FsIGNlaWxpbmcgaXMgZmxvYXQzMiBwcmVjaXNpb246IGRlY2sncyBnbG9iZSBwbGFjZXNcbiAqIGdlb21ldHJ5IGluIGNvbW1vbiBzcGFjZSBvbiBhIHNwaGVyZSBvZiByYWRpdXMgMjU2IHdpdGggbm8gZnA2NC9yZWxhdGl2ZS10by1cbiAqIGNlbnRlciB0cmljaywgc28gYmV5b25kIH52aXN1YWwtem9vbSAxNiAocm91Z2hseSB0aGlzIG1hcFN0YXRlIHpvb20gbWludXNcbiAqIGB6b29tQWRqdXN0KGxhdClgIOKJiCAxLjY1IGF0IHRoZSBlcXVhdG9yKSBnZW9tZXRyeSBzdGFydHMgdG8gaml0dGVyL2RyaWZ0LlxuICovXG5leHBvcnQgY29uc3QgR0xPQkVfTUFYX1pPT00gPSAxNjtcblxuLyoqXG4gKiBNYXhpbXVtIGFic29sdXRlIGNlbnRlciBsYXRpdHVkZSBhbGxvd2VkIGluIGdsb2JlIG1vZGUuIENvbnN0cmFpbnMgdGhlIGNhbWVyYVxuICogdGFyZ2V0IHRvIGEgYmFuZCBhcm91bmQgdGhlIGVxdWF0b3Igc28gdGhlIHZpZXcgY2FuJ3QgYmUgY2VudGVyZWQgb24gdGhlXG4gKiBwb2xlcyAoZGVjay5nbCdzIGRlZmF1bHQgY2xhbXBzIHRvIH44NcKwLCB3aGljaCBsZXRzIHRoZSBjYW1lcmEgc3RhcmUgc3RyYWlnaHRcbiAqIGRvd24gYXQgYSBwb2xlKS4gQXBwbGllcyBzeW1tZXRyaWNhbGx5IHRvIHRoZSBub3J0aGVybiBhbmQgc291dGhlcm4gaGVtaXNwaGVyZS5cbiAqL1xuZXhwb3J0IGNvbnN0IEdMT0JFX01BWF9MQVRJVFVERSA9IDc1O1xuXG5leHBvcnQgdHlwZSBHbG9iZUNvbmZpZyA9IHtcbiAgYXRtb3NwaGVyZTogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFdoZW4gdHJ1ZSwgZHJhdyBhIGxhcmdlIHN1bi1pbmRlcGVuZGVudCB1bmlmb3JtIGdsb3cgaW4gYWRkaXRpb24gdG8gdGhlXG4gICAqIHJlYWxpc3RpYyBzY2F0dGVyaW5nIHNreSBoYWxvLlxuICAgKi9cbiAgaHVnZUhhbG86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBNdWx0aXBsaWVyIGZvciBodWdlLWhhbG8gc2hlbGwgdGhpY2tuZXNzLiBgMWAgaXMgdGhlIGJhc2VsaW5lICh+MTQlIGJleW9uZFxuICAgKiB0aGUgZ2xvYmUpOyB0aGUgY29uZmlndXJlZCBkZWZhdWx0IGlzIDMuNS5cbiAgICovXG4gIGh1Z2VIYWxvUmFkaXVzOiBudW1iZXI7XG4gIC8qKiBPcGFjaXR5IG9mIHRoZSBodWdlLWhhbG8gZ2xvdyAoMOKAkzEpLiBEZWZhdWx0OiAwLjIuICovXG4gIGh1Z2VIYWxvT3BhY2l0eTogbnVtYmVyO1xuICBhemltdXRoOiBib29sZWFuO1xuICBhemltdXRoQW5nbGU6IG51bWJlcjtcbiAgdGVybWluYXRvcjogYm9vbGVhbjtcbiAgdGVybWluYXRvck9wYWNpdHk6IG51bWJlcjtcbiAgYmFzZW1hcDogYm9vbGVhbjtcbiAgbGFiZWxzOiBib29sZWFuO1xuICBsYWJlbHNDb2xvcjogW251bWJlciwgbnVtYmVyLCBudW1iZXJdO1xuICBhZG1pbkxpbmVzOiBib29sZWFuO1xuICBhZG1pbkxpbmVzQ29sb3I6IFtudW1iZXIsIG51bWJlciwgbnVtYmVyXTtcbiAgd2F0ZXI6IGJvb2xlYW47XG4gIHdhdGVyQ29sb3I6IFtudW1iZXIsIG51bWJlciwgbnVtYmVyXTtcbiAgc3VyZmFjZUNvbG9yOiBbbnVtYmVyLCBudW1iZXIsIG51bWJlcl07XG4gIHN1cmZhY2U6IGJvb2xlYW47XG4gIGJhY2tncm91bmRDb2xvcjogW251bWJlciwgbnVtYmVyLCBudW1iZXJdO1xuICBzdGFyczogYm9vbGVhbjtcbn07XG5cbmV4cG9ydCB0eXBlIEdsb2JlID0ge1xuICBlbmFibGVkOiBib29sZWFuO1xuICBjb25maWc6IEdsb2JlQ29uZmlnO1xufTtcblxuZXhwb3J0IGNvbnN0IERFRkFVTFRfR0xPQkVfQ09ORklHOiBHbG9iZUNvbmZpZyA9IHtcbiAgYXRtb3NwaGVyZTogdHJ1ZSxcbiAgaHVnZUhhbG86IHRydWUsXG4gIGh1Z2VIYWxvUmFkaXVzOiAzLjUsXG4gIGh1Z2VIYWxvT3BhY2l0eTogMC4yLFxuICBhemltdXRoOiBmYWxzZSxcbiAgYXppbXV0aEFuZ2xlOiA0NSxcbiAgdGVybWluYXRvcjogdHJ1ZSxcbiAgdGVybWluYXRvck9wYWNpdHk6IDAuMzUsXG4gIGJhc2VtYXA6IHRydWUsXG4gIGxhYmVsczogZmFsc2UsXG4gIGxhYmVsc0NvbG9yOiBbMTE0Ljc1LCAxMTQuNzUsIDExNC43NV0sXG4gIGFkbWluTGluZXM6IHRydWUsXG4gIGFkbWluTGluZXNDb2xvcjogWzQwLCA2MywgOTNdLFxuICB3YXRlcjogdHJ1ZSxcbiAgd2F0ZXJDb2xvcjogWzE3LCAzNSwgNDhdLFxuICBzdXJmYWNlOiB0cnVlLFxuICBzdXJmYWNlQ29sb3I6IFs5LCAxNiwgMjldLFxuICAvLyBDb2xvciBvZiB0aGUgZW1wdHkgc3BhY2UgcmVuZGVyZWQgYXJvdW5kIHRoZSBnbG9iZSAoZGVjay5nbCBjbGVhciBjb2xvcikuXG4gIC8vIE1hdGNoZXMgdGhlIHByZXZpb3VzIGhhcmRjb2RlZCBjbGVhciBjb2xvciBbMC4wMTUsIDAuMDM1LCAwLjA2NV0gaW4gMC0xIHNwYWNlLlxuICBiYWNrZ3JvdW5kQ29sb3I6IFs0LCA5LCAxN10sXG4gIC8vIFN0YXJmaWVsZCBiZWhpbmQgdGhlIGdsb2JlIGlzIG9uIGJ5IGRlZmF1bHQgaW4gZ2xvYmUgdmlldy5cbiAgc3RhcnM6IHRydWVcbn07XG5cbmV4cG9ydCBjb25zdCBHTE9CRV9TVVBQT1JURURfTEFZRVJTOiBSZWNvcmQ8c3RyaW5nLCBib29sZWFuPiA9IHtcbiAgcG9pbnQ6IHRydWUsXG4gIGFyYzogdHJ1ZSxcbiAgZ3JpZDogdHJ1ZSxcbiAgaGV4YWdvbjogdHJ1ZSxcbiAgZ2VvanNvbjogdHJ1ZSxcbiAgY2x1c3RlcjogdHJ1ZSxcbiAgaWNvbjogdHJ1ZSxcbiAgaGV4YWdvbklkOiB0cnVlLFxuICAnM0QnOiB0cnVlLFxuICB2ZWN0b3JUaWxlOiB0cnVlLFxuICBoZXhUaWxlOiB0cnVlLFxuICBsaW5lOiB0cnVlLFxuICB0cmlwOiB0cnVlLFxuICByYXN0ZXJUaWxlOiB0cnVlLFxuICBoZWF0bWFwOiB0cnVlLFxuICBzMjogZmFsc2UsXG4gIHRpbGUzZDogZmFsc2UsXG4gIC8vIEZsb3cgYXJyb3dzIGFyZSBmbGF0IHF1YWRzIGluIGNvbW1vbiBzcGFjZSAoZXF1YXRvcmlhbCBwbGFuZSkgYW5kIGNvbGxhcHNlIHdoZW5cbiAgLy8gdmlld2VkIGVkZ2Utb24gb24gdGhlIGdsb2JlLCBzbyB0aGUgZmxvdyBsYXllciBpcyBub3Qgc3VwcG9ydGVkIGluIEdsb2JlIG1vZGUuXG4gIGZsb3c6IGZhbHNlXG59O1xuXG5leHBvcnQgZW51bSBNYXBTcGxpdE1vZGUge1xuICBTSU5HTEVfTUFQID0gJ1NJTkdMRV9NQVAnLFxuICBEVUFMX01BUCA9ICdEVUFMX01BUCcsXG4gIFNXSVBFX0NPTVBBUkUgPSAnU1dJUEVfQ09NUEFSRSdcbn1cblxuLyoqXG4gKiBBIG11bHRpcGxpZXIgZm9yIHNjcmVlbi1zcGFjZSB3aWR0aC9zY2FsZSBmb3IgQXJjLCBMaW5lLCBJY29uIGFuZCBUZXh0IGxheWVycy5cbiAqIFJlcXVpcmVkIGluIG9yZGVyIHRvIG1haW50YWluIHRoZSBzYW1lIGFwcGVhcmFuY2UgYWZ0ZXIgdXBncmFkaW5nIHRvIGRlY2suZ2wgdjguNS5cbiAqIGh0dHBzOi8vZ2l0aHViLmNvbS92aXNnbC9kZWNrLmdsL2Jsb2IvbWFzdGVyL2RvY3MvdXBncmFkZS1ndWlkZS5tZFxuICovXG5leHBvcnQgY29uc3QgUFJPSkVDVEVEX1BJWEVMX1NJWkVfTVVMVElQTElFUiA9IDIgLyAzO1xuXG4vKipcbiAqIE1heGltdW0gdmFsdWUgZm9yIHRleHQgb3V0bGluZSB3aWR0aFxuICovXG5leHBvcnQgY29uc3QgVEVYVF9PVVRMSU5FX01VTFRJUExJRVIgPSA1O1xuXG5leHBvcnQgY29uc3QgZGF0YVRlc3RJZHM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gIGluZm9JY29uOiAnaW5mby1pY29uJyxcbiAgd2FybmluZ0ljb246ICd3YXJuaW5nLWljb24nLFxuICBlcnJvckljb246ICdlcnJvci1pY29uJyxcbiAgc3VjY2Vzc0ljb246ICdzdWNjZXNzLWljb24nLFxuICBjaGVja21hcmtJY29uOiAnY2hlY2ttYXJrLWljb24nLFxuICBzb3J0YWJsZUxheWVySXRlbTogJ3NvcnRhYmxlLWxheWVyLWl0ZW0nLFxuICBzdGF0aWNMYXllckl0ZW06ICdzdGF0aWMtbGF5ZXItaXRlbScsXG4gIGxheWVyVGl0bGVFZGl0b3I6ICdsYXllcl9fdGl0bGVfX2VkaXRvcicsXG4gIHJlbW92ZUxheWVyQWN0aW9uOiAncmVtb3ZlLWxheWVyLWFjdGlvbicsXG4gIGxheWVyUGFuZWw6ICdsYXllci1wYW5lbCcsXG4gIHNvcnRhYmxlRWZmZWN0SXRlbTogJ3NvcnRhYmxlLWVmZmVjdC1pdGVtJyxcbiAgc3RhdGljRWZmZWN0SXRlbTogJ3N0YXRpYy1lZmZlY3QtaXRlbScsXG4gIHByb3ZpZGVyTG9hZGluZzogJ3Byb3ZpZGVyLWxvYWRpbmcnLFxuICBwcm92aWRlck1hcEluZm9QYW5lbDogJ3Byb3ZpZGVyLW1hcC1pbmZvLXBhbmVsJyxcbiAgcHJvdmlkZXJTZWxlY3Q6ICdwcm92aWRlci1zZWxlY3QnLFxuICBjbG91ZEhlYWRlcjogJ2Nsb3VkLWhlYWRlcicsXG4gIHByb3ZpZGVyU2hhcmVNYXA6ICdwcm92aWRlci1zaGFyZS1tYXAnXG59O1xuXG4vLyBFZmZlY3RzXG5leHBvcnQgY29uc3QgREVGQVVMVF9USU1FWk9ORSA9ICdVVEMnO1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfUE9TVF9QUk9DRVNTSU5HX0VGRkVDVF9UWVBFID0gJ2luayc7XG5cbmV4cG9ydCBjb25zdCBERUZBVUxUX0xJR0hUX0NPTE9SOiBbbnVtYmVyLCBudW1iZXIsIG51bWJlcl0gPSBbMjU1LCAyNTUsIDI1NV07XG5leHBvcnQgY29uc3QgREVGQVVMVF9MSUdIVF9JTlRFTlNJVFkgPSAxO1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfU0hBRE9XX0lOVEVOU0lUWSA9IDAuNTtcbmV4cG9ydCBjb25zdCBERUZBVUxUX1NIQURPV19DT0xPUjogW251bWJlciwgbnVtYmVyLCBudW1iZXJdID0gWzAsIDAsIDBdO1xuXG5leHBvcnQgY29uc3QgTElHSFRfQU5EX1NIQURPV19FRkZFQ1RfVElNRV9NT0RFUyA9IHtcbiAgcGljazogJ3BpY2snIGFzIGNvbnN0LFxuICBjdXJyZW50OiAnY3VycmVudCcgYXMgY29uc3QsXG4gIGFuaW1hdGlvbjogJ2FuaW1hdGlvbicgYXMgY29uc3Rcbn07XG5leHBvcnQgdHlwZSBMaWdodEFuZFNoYWRvd0VmZmVjdFRpbWVNb2RlID0gJ3BpY2snIHwgJ2N1cnJlbnQnIHwgJ2FuaW1hdGlvbic7XG5leHBvcnQgY29uc3QgREVGQVVMVF9MSUdIVF9BTkRfU0hBRE9XX1BST1BTOiB7XG4gIHRpbWVzdGFtcDogbnVtYmVyO1xuICB0aW1lTW9kZTogTGlnaHRBbmRTaGFkb3dFZmZlY3RUaW1lTW9kZTtcbiAgc2hhZG93SW50ZW5zaXR5OiBudW1iZXI7XG4gIHNoYWRvd0NvbG9yOiBbbnVtYmVyLCBudW1iZXIsIG51bWJlcl07XG4gIHN1bkxpZ2h0Q29sb3I6IFtudW1iZXIsIG51bWJlciwgbnVtYmVyXTtcbiAgc3VuTGlnaHRJbnRlbnNpdHk6IG51bWJlcjtcbiAgYW1iaWVudExpZ2h0Q29sb3I6IFtudW1iZXIsIG51bWJlciwgbnVtYmVyXTtcbiAgYW1iaWVudExpZ2h0SW50ZW5zaXR5OiBudW1iZXI7XG59ID0ge1xuICB0aW1lc3RhbXA6IERhdGUubm93KCksXG4gIHRpbWVNb2RlOiBMSUdIVF9BTkRfU0hBRE9XX0VGRkVDVF9USU1FX01PREVTLnBpY2sgYXMgTGlnaHRBbmRTaGFkb3dFZmZlY3RUaW1lTW9kZSxcbiAgc2hhZG93SW50ZW5zaXR5OiBERUZBVUxUX1NIQURPV19JTlRFTlNJVFksXG4gIHNoYWRvd0NvbG9yOiBbLi4uREVGQVVMVF9TSEFET1dfQ09MT1JdIGFzIFtudW1iZXIsIG51bWJlciwgbnVtYmVyXSxcbiAgc3VuTGlnaHRDb2xvcjogWy4uLkRFRkFVTFRfTElHSFRfQ09MT1JdIGFzIFtudW1iZXIsIG51bWJlciwgbnVtYmVyXSxcbiAgc3VuTGlnaHRJbnRlbnNpdHk6IERFRkFVTFRfTElHSFRfSU5URU5TSVRZLFxuICBhbWJpZW50TGlnaHRDb2xvcjogWy4uLkRFRkFVTFRfTElHSFRfQ09MT1JdIGFzIFtudW1iZXIsIG51bWJlciwgbnVtYmVyXSxcbiAgYW1iaWVudExpZ2h0SW50ZW5zaXR5OiBERUZBVUxUX0xJR0hUX0lOVEVOU0lUWVxufTtcblxuZXhwb3J0IGNvbnN0IExJR0hUX0FORF9TSEFET1dfRUZGRUNUOiBFZmZlY3REZXNjcmlwdGlvbiA9IHtcbiAgdHlwZTogJ2xpZ2h0QW5kU2hhZG93JyxcbiAgbmFtZTogJ0xpZ2h0ICYgU2hhZG93JyxcbiAgZGVzY3JpcHRpb246ICdlZmZlY3REZXNjcmlwdGlvbi5saWdodEFuZFNoYWRvdycsXG4gIHBhcmFtZXRlcnM6IFtcbiAgICB7bmFtZTogJ3RpbWVzdGFtcCcsIG1pbjogMCwgbWF4OiBOdW1iZXIuTUFYX1NBRkVfSU5URUdFUn0sXG4gICAge25hbWU6ICdzaGFkb3dJbnRlbnNpdHknLCBtaW46IDAsIG1heDogMSwgZGVmYXVsdFZhbHVlOiBERUZBVUxUX1NIQURPV19JTlRFTlNJVFl9LFxuICAgIHtuYW1lOiAnc3VuTGlnaHRJbnRlbnNpdHknLCBtaW46IDAsIG1heDogNSwgZGVmYXVsdFZhbHVlOiBERUZBVUxUX0xJR0hUX0lOVEVOU0lUWX0sXG4gICAge25hbWU6ICdhbWJpZW50TGlnaHRJbnRlbnNpdHknLCBtaW46IDAsIG1heDogNSwgZGVmYXVsdFZhbHVlOiBERUZBVUxUX0xJR0hUX0lOVEVOU0lUWX0sXG4gICAge25hbWU6ICdzaGFkb3dDb2xvcicsIHR5cGU6ICdjb2xvcicsIG1pbjogMCwgbWF4OiAyNTUsIGRlZmF1bHRWYWx1ZTogREVGQVVMVF9TSEFET1dfQ09MT1J9LFxuICAgIHtuYW1lOiAnc3VuTGlnaHRDb2xvcicsIHR5cGU6ICdjb2xvcicsIG1pbjogMCwgbWF4OiAyNTUsIGRlZmF1bHRWYWx1ZTogREVGQVVMVF9MSUdIVF9DT0xPUn0sXG4gICAge25hbWU6ICdhbWJpZW50TGlnaHRDb2xvcicsIHR5cGU6ICdjb2xvcicsIG1pbjogMCwgbWF4OiAyNTUsIGRlZmF1bHRWYWx1ZTogREVGQVVMVF9MSUdIVF9DT0xPUn1cbiAgXVxufTtcblxuZXhwb3J0IGNvbnN0IERJU1RBTkNFX0ZPR19UWVBFID0gJ2Rpc3RhbmNlRm9nJztcbmV4cG9ydCBjb25zdCBTVVJGQUNFX0ZPR19UWVBFID0gJ3N1cmZhY2VGb2cnO1xuXG5leHBvcnQgY29uc3QgUE9TVFBST0NFU1NJTkdfRUZGRUNUUzoge1trZXk6IHN0cmluZ106IEVmZmVjdERlc2NyaXB0aW9ufSA9IHtcbiAgaW5rOiB7XG4gICAgdHlwZTogJ2luaycsXG4gICAgbmFtZTogJ0luaycsXG4gICAgZGVzY3JpcHRpb246ICdlZmZlY3REZXNjcmlwdGlvbi5pbmsnLFxuICAgIHBhcmFtZXRlcnM6IFt7bmFtZTogJ3N0cmVuZ3RoJywgbWluOiAwLCBtYXg6IDF9XVxuICB9LFxuICBicmlnaHRuZXNzQ29udHJhc3Q6IHtcbiAgICB0eXBlOiAnYnJpZ2h0bmVzc0NvbnRyYXN0JyxcbiAgICBuYW1lOiAnQnJpZ2h0bmVzcyAmIENvbnRyYXN0JyxcbiAgICBkZXNjcmlwdGlvbjogJ2VmZmVjdERlc2NyaXB0aW9uLmJyaWdodG5lc3NDb250cmFzdCcsXG4gICAgcGFyYW1ldGVyczogW1xuICAgICAge25hbWU6ICdicmlnaHRuZXNzJywgbWluOiAtMSwgbWF4OiAxfSxcbiAgICAgIHtuYW1lOiAnY29udHJhc3QnLCBtaW46IC0xLCBtYXg6IDF9XG4gICAgXVxuICB9LFxuICBodWVTYXR1cmF0aW9uOiB7XG4gICAgdHlwZTogJ2h1ZVNhdHVyYXRpb24nLFxuICAgIG5hbWU6ICdIdWUgJiBTYXR1cmF0aW9uJyxcbiAgICBkZXNjcmlwdGlvbjogJ2VmZmVjdERlc2NyaXB0aW9uLmh1ZVNhdHVyYXRpb24nLFxuICAgIHBhcmFtZXRlcnM6IFtcbiAgICAgIHtuYW1lOiAnaHVlJywgbWluOiAtMSwgbWF4OiAxfSxcbiAgICAgIHtuYW1lOiAnc2F0dXJhdGlvbicsIGRlZmF1bHRWYWx1ZTogMC4yNSwgbWluOiAtMSwgbWF4OiAxfVxuICAgIF1cbiAgfSxcbiAgdmlicmFuY2U6IHtcbiAgICB0eXBlOiAndmlicmFuY2UnLFxuICAgIG5hbWU6ICdWaWJyYW5jZScsXG4gICAgZGVzY3JpcHRpb246ICdlZmZlY3REZXNjcmlwdGlvbi52aWJyYW5jZScsXG4gICAgcGFyYW1ldGVyczogW3tuYW1lOiAnYW1vdW50JywgZGVmYXVsdFZhbHVlOiAwLjUsIG1pbjogLTEsIG1heDogMX1dXG4gIH0sXG4gIHNlcGlhOiB7XG4gICAgdHlwZTogJ3NlcGlhJyxcbiAgICBuYW1lOiAnU2VwaWEnLFxuICAgIGRlc2NyaXB0aW9uOiAnZWZmZWN0RGVzY3JpcHRpb24uc2VwaWEnLFxuICAgIHBhcmFtZXRlcnM6IFt7bmFtZTogJ2Ftb3VudCcsIG1pbjogMCwgbWF4OiAxfV1cbiAgfSxcbiAgZG90U2NyZWVuOiB7XG4gICAgdHlwZTogJ2RvdFNjcmVlbicsXG4gICAgbmFtZTogJ0RvdCBTY3JlZW4nLFxuICAgIGRlc2NyaXB0aW9uOiAnZWZmZWN0RGVzY3JpcHRpb24uZG90U2NyZWVuJyxcbiAgICBwYXJhbWV0ZXJzOiBbXG4gICAgICB7XG4gICAgICAgIG5hbWU6ICdhbmdsZScsXG4gICAgICAgIG1pbjogMCxcbiAgICAgICAgbWF4OiBNYXRoLlBJIC8gMlxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgbmFtZTogJ3NpemUnLFxuICAgICAgICBtaW46IDEsXG4gICAgICAgIG1heDogMjBcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIG5hbWU6ICdjZW50ZXInLFxuICAgICAgICB0eXBlOiAnYXJyYXknLFxuICAgICAgICBsYWJlbDogWydDZW50ZXIgWCcsICdDZW50ZXIgWSddLFxuICAgICAgICBkZWZhdWx0VmFsdWU6IFswLjUsIDAuNV0sXG4gICAgICAgIG1pbjogMCxcbiAgICAgICAgbWF4OiAxXG4gICAgICB9XG4gICAgXVxuICB9LFxuICBjb2xvckhhbGZ0b25lOiB7XG4gICAgdHlwZTogJ2NvbG9ySGFsZnRvbmUnLFxuICAgIG5hbWU6ICdDb2xvciBIYWxmdG9uZScsXG4gICAgZGVzY3JpcHRpb246ICdlZmZlY3REZXNjcmlwdGlvbi5jb2xvckhhbGZ0b25lJyxcbiAgICBwYXJhbWV0ZXJzOiBbXG4gICAgICB7XG4gICAgICAgIG5hbWU6ICdhbmdsZScsXG4gICAgICAgIG1pbjogMCxcbiAgICAgICAgbWF4OiBNYXRoLlBJIC8gMlxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgbmFtZTogJ3NpemUnLFxuICAgICAgICBtaW46IDEsXG4gICAgICAgIG1heDogMjBcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIG5hbWU6ICdjZW50ZXInLFxuICAgICAgICB0eXBlOiAnYXJyYXknLFxuICAgICAgICBsYWJlbDogWydDZW50ZXIgWCcsICdDZW50ZXIgWSddLFxuICAgICAgICBkZWZhdWx0VmFsdWU6IFswLjUsIDAuNV0sXG4gICAgICAgIG1pbjogMCxcbiAgICAgICAgbWF4OiAxXG4gICAgICB9XG4gICAgXVxuICB9LFxuICBub2lzZToge1xuICAgIHR5cGU6ICdub2lzZScsXG4gICAgbmFtZTogJ05vaXNlJyxcbiAgICBkZXNjcmlwdGlvbjogJ2VmZmVjdERlc2NyaXB0aW9uLm5vaXNlJyxcbiAgICBwYXJhbWV0ZXJzOiBbe25hbWU6ICdhbW91bnQnLCBtaW46IDAsIG1heDogMX1dXG4gIH0sXG4gIHRyaWFuZ2xlQmx1cjoge1xuICAgIHR5cGU6ICd0cmlhbmdsZUJsdXInLFxuICAgIG5hbWU6ICdCbHVyIChUcmlhbmdsZSknLFxuICAgIGRlc2NyaXB0aW9uOiAnZWZmZWN0RGVzY3JpcHRpb24udHJpYW5nbGVCbHVyJyxcbiAgICBwYXJhbWV0ZXJzOiBbe25hbWU6ICdyYWRpdXMnLCBtaW46IDAsIG1heDogMTAwfV1cbiAgfSxcbiAgem9vbUJsdXI6IHtcbiAgICB0eXBlOiAnem9vbUJsdXInLFxuICAgIG5hbWU6ICdCbHVyIChab29tKScsXG4gICAgZGVzY3JpcHRpb246ICdlZmZlY3REZXNjcmlwdGlvbi56b29tQmx1cicsXG4gICAgcGFyYW1ldGVyczogW1xuICAgICAge1xuICAgICAgICBuYW1lOiAnc3RyZW5ndGgnLFxuICAgICAgICBkZWZhdWx0VmFsdWU6IDAuMDUsXG4gICAgICAgIG1pbjogMCxcbiAgICAgICAgbWF4OiAxXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBuYW1lOiAnY2VudGVyJyxcbiAgICAgICAgdHlwZTogJ2FycmF5JyxcbiAgICAgICAgbGFiZWw6IFsnQ2VudGVyIFgnLCAnQ2VudGVyIFknXSxcbiAgICAgICAgZGVmYXVsdFZhbHVlOiBbMC41LCAwLjVdLFxuICAgICAgICBtaW46IDAsXG4gICAgICAgIG1heDogMVxuICAgICAgfVxuICAgIF1cbiAgfSxcbiAgdGlsdFNoaWZ0OiB7XG4gICAgdHlwZTogJ3RpbHRTaGlmdCcsXG4gICAgbmFtZTogJ0JsdXIgKFRpbHQgU2hpZnQpJyxcbiAgICBkZXNjcmlwdGlvbjogJ2VmZmVjdERlc2NyaXB0aW9uLnRpbHRTaGlmdCcsXG4gICAgcGFyYW1ldGVyczogW1xuICAgICAge1xuICAgICAgICBuYW1lOiAnYmx1clJhZGl1cycsXG4gICAgICAgIGxhYmVsOiAnQmx1cicsXG4gICAgICAgIG1pbjogMCxcbiAgICAgICAgbWF4OiA1MFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgbmFtZTogJ2dyYWRpZW50UmFkaXVzJyxcbiAgICAgICAgbGFiZWw6ICdHcmFkaWVudCcsXG4gICAgICAgIG1pbjogMCxcbiAgICAgICAgbWF4OiA0MDBcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIG5hbWU6ICdzdGFydCcsXG4gICAgICAgIHR5cGU6ICdhcnJheScsXG4gICAgICAgIGxhYmVsOiBbJ1N0YXJ0JywgZmFsc2VdLFxuICAgICAgICBkZWZhdWx0VmFsdWU6IFswLjAsIDAuMF0sXG4gICAgICAgIG1pbjogMCxcbiAgICAgICAgbWF4OiAxXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBuYW1lOiAnZW5kJyxcbiAgICAgICAgdHlwZTogJ2FycmF5JyxcbiAgICAgICAgbGFiZWw6IFsnRW5kJywgZmFsc2VdLFxuICAgICAgICBkZWZhdWx0VmFsdWU6IFsxLCAxXSxcbiAgICAgICAgbWluOiAwLFxuICAgICAgICBtYXg6IDFcbiAgICAgIH1cbiAgICBdXG4gIH0sXG4gIGVkZ2VXb3JrOiB7XG4gICAgdHlwZTogJ2VkZ2VXb3JrJyxcbiAgICBuYW1lOiAnRWRnZSB3b3JrJyxcbiAgICBkZXNjcmlwdGlvbjogJ2VmZmVjdERlc2NyaXB0aW9uLmVkZ2VXb3JrJyxcbiAgICBwYXJhbWV0ZXJzOiBbe25hbWU6ICdyYWRpdXMnLCBtaW46IDEsIG1heDogNTB9XVxuICB9LFxuICB2aWduZXR0ZToge1xuICAgIHR5cGU6ICd2aWduZXR0ZScsXG4gICAgbmFtZTogJ1ZpZ25ldHRlJyxcbiAgICBkZXNjcmlwdGlvbjogJ2VmZmVjdERlc2NyaXB0aW9uLnZpZ25ldHRlJyxcbiAgICBwYXJhbWV0ZXJzOiBbXG4gICAgICB7bmFtZTogJ2Ftb3VudCcsIG1pbjogMCwgbWF4OiAxfSxcbiAgICAgIHtuYW1lOiAncmFkaXVzJywgbWluOiAwLCBtYXg6IDF9XG4gICAgXVxuICB9LFxuICBtYWduaWZ5OiB7XG4gICAgdHlwZTogJ21hZ25pZnknLFxuICAgIG5hbWU6ICdNYWduaWZ5JyxcbiAgICBkZXNjcmlwdGlvbjogJ2VmZmVjdERlc2NyaXB0aW9uLm1hZ25pZnknLFxuICAgIHBhcmFtZXRlcnM6IFtcbiAgICAgIHtcbiAgICAgICAgbmFtZTogJ3NjcmVlblhZJyxcbiAgICAgICAgdHlwZTogJ2FycmF5JyxcbiAgICAgICAgbGFiZWw6IFsnUG9zaXRpb24gWCcsICdQb3NpdGlvbiBZJ10sXG4gICAgICAgIGRlZmF1bHRWYWx1ZTogWzAuNSwgMC41XSxcbiAgICAgICAgbWluOiAwLFxuICAgICAgICBtYXg6IDFcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIG5hbWU6ICdyYWRpdXNQaXhlbHMnLFxuICAgICAgICBsYWJlbDogJ1NpemUnLFxuICAgICAgICBtaW46IDEwLFxuICAgICAgICBtYXg6IDUwMFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgbmFtZTogJ3pvb20nLFxuICAgICAgICBtaW46IDAuNSxcbiAgICAgICAgbWF4OiA1MFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgbmFtZTogJ2JvcmRlcldpZHRoUGl4ZWxzJyxcbiAgICAgICAgbGFiZWw6ICdCb3JkZXIgV2lkdGgnLFxuICAgICAgICBkZWZhdWx0VmFsdWU6IDMsXG4gICAgICAgIG1pbjogMCxcbiAgICAgICAgbWF4OiA1MFxuICAgICAgfVxuICAgIF1cbiAgfSxcbiAgaGV4YWdvbmFsUGl4ZWxhdGU6IHtcbiAgICB0eXBlOiAnaGV4YWdvbmFsUGl4ZWxhdGUnLFxuICAgIG5hbWU6ICdIZXhhZ29uYWwgUGl4ZWxhdGUnLFxuICAgIGRlc2NyaXB0aW9uOiAnZWZmZWN0RGVzY3JpcHRpb24uaGV4YWdvbmFsUGl4ZWxhdGUnLFxuICAgIHBhcmFtZXRlcnM6IFt7bmFtZTogJ3NjYWxlJywgZGVmYXVsdFZhbHVlOiAyMCwgbWluOiAxLCBtYXg6IDUwfV1cbiAgfSxcbiAgZGlzdGFuY2VGb2c6IHtcbiAgICB0eXBlOiBESVNUQU5DRV9GT0dfVFlQRSxcbiAgICBuYW1lOiAnRGlzdGFuY2UgRm9nJyxcbiAgICBkZXNjcmlwdGlvbjogJ2VmZmVjdERlc2NyaXB0aW9uLmRpc3RhbmNlRm9nJyxcbiAgICBwYXJhbWV0ZXJzOiBbXG4gICAgICB7bmFtZTogJ2RlbnNpdHknLCBkZWZhdWx0VmFsdWU6IDAuNSwgbWluOiAwLCBtYXg6IDF9LFxuICAgICAge25hbWU6ICdmb2dTdGFydCcsIGxhYmVsOiAnU3RhcnQnLCBkZWZhdWx0VmFsdWU6IDAuMywgbWluOiAwLCBtYXg6IDF9LFxuICAgICAge25hbWU6ICdmb2dSYW5nZScsIGxhYmVsOiAnUmFuZ2UnLCBkZWZhdWx0VmFsdWU6IDAuNSwgbWluOiAwLjAxLCBtYXg6IDF9LFxuICAgICAge25hbWU6ICdmb2dDb2xvcicsIHR5cGU6ICdjb2xvcicsIG1pbjogMCwgbWF4OiAyNTUsIGRlZmF1bHRWYWx1ZTogWzIxNywgMjIyLCAyMzBdfVxuICAgIF1cbiAgfSxcbiAgc3VyZmFjZUZvZzoge1xuICAgIHR5cGU6IFNVUkZBQ0VfRk9HX1RZUEUsXG4gICAgbmFtZTogJ1N1cmZhY2UgRm9nJyxcbiAgICBkZXNjcmlwdGlvbjogJ2VmZmVjdERlc2NyaXB0aW9uLnN1cmZhY2VGb2cnLFxuICAgIHBhcmFtZXRlcnM6IFtcbiAgICAgIHtuYW1lOiAnZGVuc2l0eScsIGRlZmF1bHRWYWx1ZTogMC42LCBtaW46IDAsIG1heDogMX0sXG4gICAgICB7bmFtZTogJ2hlaWdodCcsIGxhYmVsOiAnRWxldmF0aW9uIChtKScsIGRlZmF1bHRWYWx1ZTogNTAsIG1pbjogLTIwMCwgbWF4OiA2MDAwfSxcbiAgICAgIHtcbiAgICAgICAgbmFtZTogJ2FuaW1hdGVIZWlnaHQnLFxuICAgICAgICB0eXBlOiAnY2hlY2tib3gnLFxuICAgICAgICBsYWJlbDogJ0FuaW1hdGUgRWxldmF0aW9uJyxcbiAgICAgICAgdG9vbHRpcDpcbiAgICAgICAgICAnQW5pbWF0ZXMgZWxldmF0aW9uIGZyb20gc3RhcnQgdG8gZW5kIHZhbHVlIGR1cmluZyB2aWRlbyBleHBvcnQgcHJldmlldyBhbmQgcmVjb3JkaW5nLicsXG4gICAgICAgIGRlZmF1bHRWYWx1ZTogZmFsc2UsXG4gICAgICAgIG1pbjogMCxcbiAgICAgICAgbWF4OiAxXG4gICAgICB9LFxuICAgICAge25hbWU6ICdoZWlnaHRFbmQnLCBsYWJlbDogJ0VuZCBFbGV2YXRpb24gKG0pJywgZGVmYXVsdFZhbHVlOiAxMDAsIG1pbjogLTIwMCwgbWF4OiA2MDAwfSxcbiAgICAgIHtcbiAgICAgICAgbmFtZTogJ2xpbmVhckVhc2luZycsXG4gICAgICAgIHR5cGU6ICdjaGVja2JveCcsXG4gICAgICAgIGxhYmVsOiAnTGluZWFyIEVhc2luZycsXG4gICAgICAgIHRvb2x0aXA6XG4gICAgICAgICAgJ1VzZXMgY29uc3RhbnQgc3BlZWQgaW5zdGVhZCBvZiBzbW9vdGggZWFzZS1pbiAvIGVhc2Utb3V0IGR1cmluZyBlbGV2YXRpb24gYW5pbWF0aW9uLicsXG4gICAgICAgIGRlZmF1bHRWYWx1ZTogZmFsc2UsXG4gICAgICAgIG1pbjogMCxcbiAgICAgICAgbWF4OiAxXG4gICAgICB9LFxuICAgICAge25hbWU6ICd0aGlja25lc3MnLCBsYWJlbDogJ1RyYW5zaXRpb24gKG0pJywgZGVmYXVsdFZhbHVlOiA1MCwgbWluOiAwLCBtYXg6IDEwMDB9LFxuICAgICAge1xuICAgICAgICBuYW1lOiAnZm9nQ29sb3InLFxuICAgICAgICB0eXBlOiAnY29sb3InLFxuICAgICAgICBsYWJlbDogJ0ZvZyBDb2xvcicsXG4gICAgICAgIG1pbjogMCxcbiAgICAgICAgbWF4OiAyNTUsXG4gICAgICAgIGRlZmF1bHRWYWx1ZTogWzIzMCwgMjM1LCAyNDJdXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBuYW1lOiAncGF0dGVybicsXG4gICAgICAgIHR5cGU6ICdjaGVja2JveCcsXG4gICAgICAgIGxhYmVsOiAnUGF0dGVybicsXG4gICAgICAgIHRvb2x0aXA6ICdBZGRzIGEgbm9pc2UgcGF0dGVybiB0byB0aGUgZm9nIGZvciBhIG1vcmUgbmF0dXJhbCwgdm9sdW1ldHJpYyBsb29rLicsXG4gICAgICAgIGRlZmF1bHRWYWx1ZTogZmFsc2UsXG4gICAgICAgIG1pbjogMCxcbiAgICAgICAgbWF4OiAxXG4gICAgICB9XG4gICAgXVxuICB9XG59O1xuXG5leHBvcnQgY29uc3QgRUZGRUNUX0RFU0NSSVBUSU9OUzogRWZmZWN0RGVzY3JpcHRpb25bXSA9IFtcbiAgTElHSFRfQU5EX1NIQURPV19FRkZFQ1QsXG4gIC4uLk9iamVjdC5rZXlzKFBPU1RQUk9DRVNTSU5HX0VGRkVDVFMpLm1hcChrZXlOYW1lID0+IFBPU1RQUk9DRVNTSU5HX0VGRkVDVFNba2V5TmFtZV0pXG5dO1xuXG5leHBvcnQgdHlwZSBFZmZlY3RUeXBlID1cbiAgfCAnaW5rJ1xuICB8ICdicmlnaHRuZXNzQ29udHJhc3QnXG4gIHwgJ2h1ZVNhdHVyYXRpb24nXG4gIHwgJ3ZpYnJhbmNlJ1xuICB8ICdzZXBpYSdcbiAgfCAnZG90U2NyZWVuJ1xuICB8ICdjb2xvckhhbGZ0b25lJ1xuICB8ICdub2lzZSdcbiAgfCAndHJpYW5nbGVCbHVyJ1xuICB8ICd6b29tQmx1cidcbiAgfCAndGlsdFNoaWZ0J1xuICB8ICdlZGdlV29yaydcbiAgfCAndmlnbmV0dGUnXG4gIHwgJ21hZ25pZnknXG4gIHwgJ2hleGFnb25hbFBpeGVsYXRlJ1xuICB8ICdkaXN0YW5jZUZvZydcbiAgfCAnc3VyZmFjZUZvZydcbiAgfCAnbGlnaHRBbmRTaGFkb3cnO1xuXG5leHBvcnQgY29uc3QgU1lOQ19USU1FTElORV9NT0RFUzogUmVjb3JkPHN0cmluZywgU3luY1RpbWVsaW5lTW9kZT4gPSB7XG4gIHN0YXJ0OiAwLFxuICBlbmQ6IDFcbn07XG5cbmV4cG9ydCBjb25zdCBHRU9BUlJPV19NRVRBREFUQV9LRVkgPSAnQVJST1c6ZXh0ZW5zaW9uOm5hbWUnO1xuXG4vKipcbiAqIEVudW0gaG9sZGluZyBHZW9BcnJvdyBleHRlbnNpb24gdHlwZSBuYW1lc1xuICovXG5leHBvcnQgZW51bSBHRU9BUlJPV19FWFRFTlNJT05TIHtcbiAgUE9JTlQgPSAnZ2VvYXJyb3cucG9pbnQnLFxuICBMSU5FU1RSSU5HID0gJ2dlb2Fycm93LmxpbmVzdHJpbmcnLFxuICBQT0xZR09OID0gJ2dlb2Fycm93LnBvbHlnb24nLFxuICBNVUxUSVBPSU5UID0gJ2dlb2Fycm93Lm11bHRpcG9pbnQnLFxuICBNVUxUSUxJTkVTVFJJTkcgPSAnZ2VvYXJyb3cubXVsdGlsaW5lc3RyaW5nJyxcbiAgTVVMVElQT0xZR09OID0gJ2dlb2Fycm93Lm11bHRpcG9seWdvbicsXG4gIFdLQiA9ICdnZW9hcnJvdy53a2InXG59XG5cbmV4cG9ydCBjb25zdCBMT0FERVJTX0NETl9WRVJTSU9OID0gJzQuMy4yJztcbmV4cG9ydCBjb25zdCBMT0FERVJTX0NETl9VUkwgPSAnaHR0cHM6Ly91bnBrZy5jb20vQGxvYWRlcnMuZ2wnO1xuXG5leHBvcnQgY29uc3QgZ2V0TG9hZGVyT3B0aW9ucyA9ICgpID0+IHtcbiAgcmV0dXJuIHtcbiAgICBtdnQ6IHtcbiAgICAgIHdvcmtlclVybDogYCR7TE9BREVSU19DRE5fVVJMfS9tdnRAJHtMT0FERVJTX0NETl9WRVJTSU9OfS9kaXN0L212dC13b3JrZXIuanNgXG4gICAgfSxcbiAgICAncXVhbnRpemVkLW1lc2gnOiB7XG4gICAgICB3b3JrZXJVcmw6IGAke0xPQURFUlNfQ0ROX1VSTH0vdGVycmFpbkAke0xPQURFUlNfQ0ROX1ZFUlNJT059L2Rpc3QvcXVhbnRpemVkLW1lc2gtd29ya2VyLmpzYFxuICAgIH0sXG4gICAgbnB5OiB7XG4gICAgICB3b3JrZXJVcmw6IGAke0xPQURFUlNfQ0ROX1VSTH0vdGV4dHVyZXNAJHtMT0FERVJTX0NETl9WRVJTSU9OfS9kaXN0L25weS13b3JrZXIuanNgXG4gICAgfVxuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IENVU1RPTV9TQ0VORUdSQVBIX01PREVMX0lEID0gJ2N1c3RvbSc7XG5jb25zdCBNT0RFTFNfQkFTRV9VUkwgPVxuICAnaHR0cHM6Ly9zdHVkaW8tcHVibGljLWRhdGEuZm91cnNxdWFyZS5jb20vc3RhdGljcy9rZXBsZXJnbC8zZC1tb2RlbHMuMjAyMi0wNi0xMyc7XG5cbmV4cG9ydCBjb25zdCBUUklQX0xBWUVSX1NDRU5FR1JBUEhfTU9ERUxTOiB7XG4gIGlkOiBzdHJpbmc7XG4gIGxhYmVsOiBzdHJpbmc7XG4gIGljb246IGFueTtcbiAgdXJsOiBzdHJpbmcgfCBudWxsO1xuICBhbmdsZXM6IFtudW1iZXIsIG51bWJlciwgbnVtYmVyXTtcbiAgc2NhbGU6IG51bWJlcjtcbn1bXSA9IFtcbiAge1xuICAgIGlkOiAnYWlycGxhbmUnLFxuICAgIGxhYmVsOiAnQWlycGxhbmUnLFxuICAgIGljb246IG51bGwsXG4gICAgdXJsOiBgJHtNT0RFTFNfQkFTRV9VUkx9L1BsYW5lLmdsYmAsXG4gICAgYW5nbGVzOiBbMCwgMCwgMF0sXG4gICAgc2NhbGU6IDEuMFxuICB9LFxuICB7XG4gICAgaWQ6ICdib2Vpbmc3NzcnLFxuICAgIGxhYmVsOiAnQWlybGluZXInLFxuICAgIGljb246IG51bGwsXG4gICAgdXJsOiBgJHtNT0RFTFNfQkFTRV9VUkx9L0FpcmxpbmVyLmdsYmAsXG4gICAgYW5nbGVzOiBbMCwgMCwgMF0sXG4gICAgc2NhbGU6IDEuMFxuICB9LFxuICB7XG4gICAgaWQ6ICd1YmVyLWV2dG9sJyxcbiAgICBsYWJlbDogJ1ZUT0wnLFxuICAgIGljb246IG51bGwsXG4gICAgdXJsOiBgJHtNT0RFTFNfQkFTRV9VUkx9L2V2dG9sLmdsYmAsXG4gICAgYW5nbGVzOiBbMCwgMCwgMF0sXG4gICAgc2NhbGU6IDEuMFxuICB9LFxuICB7XG4gICAgaWQ6ICdoYW5nLWdsaWRlcicsXG4gICAgbGFiZWw6ICdHbGlkZXInLFxuICAgIGljb246IG51bGwsXG4gICAgdXJsOiBgJHtNT0RFTFNfQkFTRV9VUkx9L0hhbmdnbGlkZXIuZ2xiYCxcbiAgICBhbmdsZXM6IFswLCAwLCAwXSxcbiAgICBzY2FsZTogMS4wXG4gIH0sXG4gIHtcbiAgICBpZDogJ2hlbGljb3B0ZXInLFxuICAgIGxhYmVsOiAnSGVsaWNvcHRlcicsXG4gICAgaWNvbjogbnVsbCxcbiAgICB1cmw6IGAke01PREVMU19CQVNFX1VSTH0vSGVsaWNvcHRlci5nbGJgLFxuICAgIGFuZ2xlczogWzAsIDAsIDBdLFxuICAgIHNjYWxlOiAxLjBcbiAgfSxcbiAge1xuICAgIGlkOiAnYmljeWNsZScsXG4gICAgbGFiZWw6ICdCaWN5Y2xlJyxcbiAgICBpY29uOiBudWxsLFxuICAgIHVybDogYCR7TU9ERUxTX0JBU0VfVVJMfS9CaWN5Y2xlLmdsYmAsXG4gICAgYW5nbGVzOiBbMCwgMCwgMF0sXG4gICAgc2NhbGU6IDEuMFxuICB9LFxuICB7XG4gICAgaWQ6ICdzY29vdGVyJyxcbiAgICBsYWJlbDogJ1Njb290ZXInLFxuICAgIGljb246IG51bGwsXG4gICAgdXJsOiBgJHtNT0RFTFNfQkFTRV9VUkx9L1Njb290ZXIuZ2xiYCxcbiAgICBhbmdsZXM6IFswLCAwLCAwXSxcbiAgICBzY2FsZTogMS4wXG4gIH0sXG4gIHtcbiAgICBpZDogJ2NhcicsXG4gICAgbGFiZWw6ICdDYXInLFxuICAgIGljb246IG51bGwsXG4gICAgdXJsOiBgJHtNT0RFTFNfQkFTRV9VUkx9L0Nhci5nbGJgLFxuICAgIGFuZ2xlczogWzAsIDAsIDBdLFxuICAgIHNjYWxlOiAxLjBcbiAgfSxcbiAge1xuICAgIGlkOiAndHJ1Y2snLFxuICAgIGxhYmVsOiAnVHJ1Y2snLFxuICAgIGljb246IG51bGwsXG4gICAgdXJsOiBgJHtNT0RFTFNfQkFTRV9VUkx9L1RydWNrLmdsYmAsXG4gICAgYW5nbGVzOiBbMCwgMCwgMF0sXG4gICAgc2NhbGU6IDEuMFxuICB9LFxuICB7XG4gICAgaWQ6ICdzZW1pdHJ1Y2snLFxuICAgIGxhYmVsOiAnU2VtaXRydWNrJyxcbiAgICBpY29uOiBudWxsLFxuICAgIHVybDogYCR7TU9ERUxTX0JBU0VfVVJMfS9TZW1pdHJ1Y2suZ2xiYCxcbiAgICBhbmdsZXM6IFswLCAwLCAwXSxcbiAgICBzY2FsZTogMS4wXG4gIH0sXG4gIHtcbiAgICBpZDogJ2Nhcmdvc2hpcCcsXG4gICAgbGFiZWw6ICdDYXJnb3NoaXAnLFxuICAgIGljb246IG51bGwsXG4gICAgdXJsOiBgJHtNT0RFTFNfQkFTRV9VUkx9L0Nhcmdvc2hpcC5nbGJgLFxuICAgIGFuZ2xlczogWzAsIDAsIDBdLFxuICAgIHNjYWxlOiAxLjBcbiAgfSxcbiAge1xuICAgIGlkOiBDVVNUT01fU0NFTkVHUkFQSF9NT0RFTF9JRCxcbiAgICBsYWJlbDogJ0N1c3RvbScsXG4gICAgaWNvbjogbnVsbCxcbiAgICB1cmw6IG51bGwsXG4gICAgYW5nbGVzOiBbMCwgMCwgMF0sXG4gICAgc2NhbGU6IDEuMFxuICB9XG5dO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7O0FBR0EsSUFBQUEsVUFBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBVUEsSUFBQUMsUUFBQSxHQUFBRCxPQUFBO0FBVUEsSUFBQUUsUUFBQSxHQUFBRixPQUFBO0FBQStDLElBQUFHLG1CQUFBLEVBQUFDLFdBQUEsRUF2Qi9DO0FBQ0E7QUFBQSxTQUFBQyxRQUFBQyxDQUFBLEVBQUFDLENBQUEsUUFBQUMsQ0FBQSxHQUFBQyxNQUFBLENBQUFDLElBQUEsQ0FBQUosQ0FBQSxPQUFBRyxNQUFBLENBQUFFLHFCQUFBLFFBQUFDLENBQUEsR0FBQUgsTUFBQSxDQUFBRSxxQkFBQSxDQUFBTCxDQUFBLEdBQUFDLENBQUEsS0FBQUssQ0FBQSxHQUFBQSxDQUFBLENBQUFDLE1BQUEsV0FBQU4sQ0FBQSxXQUFBRSxNQUFBLENBQUFLLHdCQUFBLENBQUFSLENBQUEsRUFBQUMsQ0FBQSxFQUFBUSxVQUFBLE9BQUFQLENBQUEsQ0FBQVEsSUFBQSxDQUFBQyxLQUFBLENBQUFULENBQUEsRUFBQUksQ0FBQSxZQUFBSixDQUFBO0FBQUEsU0FBQVUsY0FBQVosQ0FBQSxhQUFBQyxDQUFBLE1BQUFBLENBQUEsR0FBQVksU0FBQSxDQUFBQyxNQUFBLEVBQUFiLENBQUEsVUFBQUMsQ0FBQSxXQUFBVyxTQUFBLENBQUFaLENBQUEsSUFBQVksU0FBQSxDQUFBWixDQUFBLFFBQUFBLENBQUEsT0FBQUYsT0FBQSxDQUFBSSxNQUFBLENBQUFELENBQUEsT0FB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