@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.
- package/dist/cjs/annotation.js +45 -0
- package/dist/cjs/color-palettes.js +461 -0
- package/dist/cjs/colors-by-theme.js +519 -0
- package/dist/cjs/dataset.js +82 -0
- package/dist/cjs/default-settings.js +1737 -0
- package/dist/cjs/gpu-parameters.js +125 -0
- package/dist/cjs/index.js +149 -0
- package/dist/cjs/keyevent.js +26 -0
- package/dist/cjs/layers.js +606 -0
- package/dist/{plot.js → cjs/plot.js} +1 -1
- package/dist/cjs/time.js +194 -0
- package/dist/cjs/tooltip.js +221 -0
- package/dist/cjs/user-feedbacks.js +15 -0
- package/dist/cjs/user-guides.js +19 -0
- package/dist/default-settings.d.ts +16 -0
- package/dist/esm/annotation.js +38 -0
- package/dist/esm/color-palettes.js +453 -0
- package/dist/esm/colors-by-theme.js +513 -0
- package/dist/esm/dataset.js +80 -0
- package/dist/esm/default-settings.js +1731 -0
- package/dist/esm/gpu-parameters.js +119 -0
- package/dist/esm/index.js +18 -0
- package/dist/esm/keyevent.js +19 -0
- package/dist/esm/layers.js +599 -0
- package/dist/esm/plot.js +9 -0
- package/dist/esm/time.js +190 -0
- package/dist/esm/tooltip.js +215 -0
- package/dist/esm/user-feedbacks.js +9 -0
- package/dist/esm/user-guides.js +13 -0
- package/dist/layers.d.ts +1 -0
- package/package.json +17 -8
- package/dist/annotation.js +0 -45
- package/dist/color-palettes.js +0 -461
- package/dist/colors-by-theme.js +0 -519
- package/dist/dataset.js +0 -82
- package/dist/default-settings.js +0 -1729
- package/dist/gpu-parameters.js +0 -125
- package/dist/index.js +0 -149
- package/dist/keyevent.js +0 -26
- package/dist/layers.js +0 -605
- package/dist/time.js +0 -194
- package/dist/tooltip.js +0 -221
- package/dist/user-feedbacks.js +0 -15
- 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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
|