@kando-env/kando-ui 1.2.418-alpha.0 → 1.2.418-alpha.10
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/lib/Widgets/Map/Map.js +62 -29
- package/lib/Widgets/Map/MapUtils.js +22 -10
- package/lib/Widgets/Map/events/EventUtils.js +20 -12
- package/lib/Widgets/Map/events/PointOfEvent.js +67 -38
- package/lib/Widgets/Map/events/PointsForSpecificEvent.js +16 -5
- package/lib/Widgets/Map/points/PointIcon.js +3 -2
- package/lib/Widgets/Map/points/PointMarkers.js +1 -6
- package/lib/Widgets/Map/points/PointUtils.js +11 -3
- package/lib/components/Graph/Graph.js +18 -1
- package/lib/i18n/en.json +2 -1
- package/lib/macros/getVersion.js +2 -2
- package/lib/pages/DashboardMap/WWTPMap.js +12 -5
- package/lib/pages/EventsPage/DragAndDropArea/DragAndDrop.module.scss +2 -1
- package/lib/pages/EventsPage/FloatingGraph/FloatingGraph.js +11 -3
- package/lib/pages/ImportSiteProcess/index.js +2 -2
- package/lib/pages/OperationsPage/Map/useMap.js +3 -3
- package/lib/pages/OperationsPage/OperationsFilePage.js +4 -1
- package/lib/store/points/models/IPoint.js +1 -1
- package/lib/utilities/map/icons.js +6 -3
- package/package.json +1 -1
package/lib/Widgets/Map/Map.js
CHANGED
|
@@ -30,10 +30,6 @@ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "functio
|
|
|
30
30
|
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
31
31
|
// @ts-ignore
|
|
32
32
|
|
|
33
|
-
// import { storeMap } from 'src/store/global/actions';
|
|
34
|
-
|
|
35
|
-
// import { appReducer } from '../../store/rootReducer';
|
|
36
|
-
|
|
37
33
|
require('leaflet.markercluster');
|
|
38
34
|
var Map = function Map(_ref) {
|
|
39
35
|
var areas = _ref.areas,
|
|
@@ -75,6 +71,10 @@ var Map = function Map(_ref) {
|
|
|
75
71
|
_useState6 = (0, _slicedToArray2.default)(_useState5, 2),
|
|
76
72
|
onlyMonitoredPoints = _useState6[0],
|
|
77
73
|
setOnlyMonitoredPoints = _useState6[1];
|
|
74
|
+
var _useState7 = (0, _react.useState)(false),
|
|
75
|
+
_useState8 = (0, _slicedToArray2.default)(_useState7, 2),
|
|
76
|
+
onlyWithSamplerPoints = _useState8[0],
|
|
77
|
+
setOnlyWithSamplerPoints = _useState8[1];
|
|
78
78
|
var edgesCheckboxRef = (0, _react.useRef)(edgesCheckbox);
|
|
79
79
|
var hoveredEventPresent = (0, _react.useMemo)(function () {
|
|
80
80
|
return hoveredEvent !== null && hoveredEvent !== undefined;
|
|
@@ -84,38 +84,41 @@ var Map = function Map(_ref) {
|
|
|
84
84
|
}, [focusedEvent]);
|
|
85
85
|
|
|
86
86
|
// Add parent layer group for all factories
|
|
87
|
-
var _useState7 = (0, _react.useState)(L.layerGroup()),
|
|
88
|
-
_useState8 = (0, _slicedToArray2.default)(_useState7, 1),
|
|
89
|
-
factoriesParentGroup = _useState8[0];
|
|
90
87
|
var _useState9 = (0, _react.useState)(L.layerGroup()),
|
|
91
88
|
_useState10 = (0, _slicedToArray2.default)(_useState9, 1),
|
|
92
|
-
|
|
89
|
+
factoriesParentGroup = _useState10[0];
|
|
93
90
|
var _useState11 = (0, _react.useState)(L.layerGroup()),
|
|
94
91
|
_useState12 = (0, _slicedToArray2.default)(_useState11, 1),
|
|
95
|
-
|
|
92
|
+
unmonitoredFactoriesGroup = _useState12[0];
|
|
96
93
|
var _useState13 = (0, _react.useState)(L.layerGroup()),
|
|
97
94
|
_useState14 = (0, _slicedToArray2.default)(_useState13, 1),
|
|
98
|
-
|
|
95
|
+
monitoredFactoriesGroup = _useState14[0];
|
|
99
96
|
var _useState15 = (0, _react.useState)(L.layerGroup()),
|
|
100
97
|
_useState16 = (0, _slicedToArray2.default)(_useState15, 1),
|
|
101
|
-
|
|
98
|
+
unmonitoredEdgesGroup = _useState16[0];
|
|
102
99
|
var _useState17 = (0, _react.useState)(L.layerGroup()),
|
|
103
100
|
_useState18 = (0, _slicedToArray2.default)(_useState17, 1),
|
|
104
|
-
|
|
101
|
+
monitoredEdgesGroup = _useState18[0];
|
|
105
102
|
var _useState19 = (0, _react.useState)(L.layerGroup()),
|
|
106
103
|
_useState20 = (0, _slicedToArray2.default)(_useState19, 1),
|
|
107
|
-
|
|
108
|
-
var _useState21 = (0, _react.useState)(
|
|
104
|
+
wwtpsLayerGroup = _useState20[0];
|
|
105
|
+
var _useState21 = (0, _react.useState)(L.layerGroup()),
|
|
109
106
|
_useState22 = (0, _slicedToArray2.default)(_useState21, 1),
|
|
110
|
-
|
|
107
|
+
collectorsLayerGroup = _useState22[0];
|
|
108
|
+
var _useState23 = (0, _react.useState)(new L.FeatureGroup()),
|
|
109
|
+
_useState24 = (0, _slicedToArray2.default)(_useState23, 1),
|
|
110
|
+
areasLayerGroup = _useState24[0];
|
|
111
111
|
var renderPointMarkers = function renderPointMarkers(filteredPoints, mapRef, props) {
|
|
112
112
|
return mapRef.current !== null && points && /*#__PURE__*/_react.default.createElement(_PointMarkers.PointMarkers, Object.assign({
|
|
113
113
|
map: mapRef.current,
|
|
114
114
|
points: filteredPoints
|
|
115
115
|
}, props));
|
|
116
116
|
};
|
|
117
|
-
var memoizedMonitoredPoints = function
|
|
118
|
-
var monitoredPoints = (0, _MapUtils.filterPoints)(points,
|
|
117
|
+
var memoizedMonitoredPoints = (0, _react.useMemo)(function () {
|
|
118
|
+
var monitoredPoints = (0, _MapUtils.filterPoints)(points, {
|
|
119
|
+
onlyMonitored: true
|
|
120
|
+
});
|
|
121
|
+
renderPointMarkers([], mapRef, {});
|
|
119
122
|
return renderPointMarkers(monitoredPoints, mapRef, {
|
|
120
123
|
includeUnmonitoredPoints: true,
|
|
121
124
|
rerender: _MapUtils.zoomLevels[mapZoomLevel],
|
|
@@ -124,9 +127,11 @@ var Map = function Map(_ref) {
|
|
|
124
127
|
collectorsGroup: collectorsLayerGroup,
|
|
125
128
|
forEventsView: forEventsView
|
|
126
129
|
});
|
|
127
|
-
};
|
|
128
|
-
var memoizedUnmonitoredPoints = function
|
|
129
|
-
var unmonitoredPoints = (0, _MapUtils.filterPoints)(points,
|
|
130
|
+
}, [points, mapZoomLevel, onlyWithSamplerPoints]);
|
|
131
|
+
var memoizedUnmonitoredPoints = (0, _react.useMemo)(function () {
|
|
132
|
+
var unmonitoredPoints = (0, _MapUtils.filterPoints)(points, {
|
|
133
|
+
onlyMonitored: false
|
|
134
|
+
});
|
|
130
135
|
return renderPointMarkers(unmonitoredPoints, mapRef, {
|
|
131
136
|
includeUnmonitoredPoints: true,
|
|
132
137
|
rerender: _MapUtils.zoomLevels[mapZoomLevel],
|
|
@@ -135,7 +140,7 @@ var Map = function Map(_ref) {
|
|
|
135
140
|
collectorsGroup: collectorsLayerGroup,
|
|
136
141
|
forEventsView: forEventsView
|
|
137
142
|
});
|
|
138
|
-
};
|
|
143
|
+
}, [points, mapZoomLevel]);
|
|
139
144
|
var renderEdges = function renderEdges(filteredEdges, mapRef, edgesCheckbox, props) {
|
|
140
145
|
return mapRef.current !== null && edgesCheckbox && /*#__PURE__*/_react.default.createElement(_Edges.default, Object.assign({
|
|
141
146
|
edges: filteredEdges,
|
|
@@ -154,7 +159,7 @@ var Map = function Map(_ref) {
|
|
|
154
159
|
});
|
|
155
160
|
}, [points, edgesCheckbox, mapZoomLevel]);
|
|
156
161
|
var memoizedUnmonitoredEdges = (0, _react.useMemo)(function () {
|
|
157
|
-
if (onlyMonitoredPoints) return null;
|
|
162
|
+
if (onlyMonitoredPoints || onlyWithSamplerPoints) return null;
|
|
158
163
|
var unmonitoredEdges = (0, _MapUtils.filterEdges)(edges, points, false);
|
|
159
164
|
return renderEdges(unmonitoredEdges, mapRef, edgesCheckbox, {
|
|
160
165
|
L: L,
|
|
@@ -191,16 +196,44 @@ var Map = function Map(_ref) {
|
|
|
191
196
|
}
|
|
192
197
|
}
|
|
193
198
|
};
|
|
199
|
+
var handlePointsWithSamplerCheckboxChange = function handlePointsWithSamplerCheckboxChange(isChecked) {
|
|
200
|
+
setOnlyWithSamplerPoints(isChecked);
|
|
201
|
+
var removePointsWithNoSampler = function removePointsWithNoSampler(group) {
|
|
202
|
+
group.eachLayer(function (layer) {
|
|
203
|
+
if (layer['kando_has_sampler'] === false) {
|
|
204
|
+
group.removeLayer(layer);
|
|
205
|
+
}
|
|
206
|
+
});
|
|
207
|
+
};
|
|
208
|
+
if (mapRef.current !== null) {
|
|
209
|
+
if (isChecked) {
|
|
210
|
+
factoriesParentGroup.removeLayer(unmonitoredFactoriesGroup);
|
|
211
|
+
unmonitoredEdgesGroup.removeFrom(mapRef.current);
|
|
212
|
+
removePointsWithNoSampler(monitoredFactoriesGroup);
|
|
213
|
+
removePointsWithNoSampler(wwtpsLayerGroup);
|
|
214
|
+
removePointsWithNoSampler(collectorsLayerGroup);
|
|
215
|
+
} else {
|
|
216
|
+
var zoom = _MapUtils.zoomLevels[mapRef.current.getZoom()];
|
|
217
|
+
factoriesParentGroup.addLayer(unmonitoredFactoriesGroup);
|
|
218
|
+
|
|
219
|
+
// Show unmonitored edges if at appropriate zoom level
|
|
220
|
+
if (edgesCheckboxRef.current && edgesZoomLevels.includes(zoom)) {
|
|
221
|
+
unmonitoredEdgesGroup.addTo(mapRef.current);
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
};
|
|
194
226
|
var trackLayerbox = function trackLayerbox() {
|
|
195
227
|
(0, _MapUtils.setupCheckboxListener)('#edges-checkbox', handleEdgesCheckboxChange);
|
|
196
228
|
(0, _MapUtils.setupCheckboxListener)('#monitored-points-checkbox', handlePointsCheckboxChange);
|
|
229
|
+
(0, _MapUtils.setupCheckboxListener)('#monitored-points-with-sampler-checkbox', handlePointsWithSamplerCheckboxChange);
|
|
197
230
|
};
|
|
198
231
|
var zoomRulesForEventsView = function zoomRulesForEventsView() {
|
|
199
|
-
var payload = /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, memoizedEdges, memoizedUnmonitoredEdges, memoizedUnmonitoredPoints
|
|
232
|
+
var payload = /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, memoizedEdges, memoizedUnmonitoredEdges, memoizedUnmonitoredPoints, memoizedMonitoredPoints);
|
|
200
233
|
return payload;
|
|
201
234
|
};
|
|
202
235
|
var zoomRulesForDashaboardMaps = function zoomRulesForDashaboardMaps() {
|
|
203
|
-
var payload = /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, memoizedUnmonitoredPoints
|
|
236
|
+
var payload = /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, memoizedUnmonitoredPoints, memoizedMonitoredPoints);
|
|
204
237
|
if (edgesZoomLevels.includes(_MapUtils.zoomLevels[mapZoomLevel])) {
|
|
205
238
|
payload = zoomRulesForEventsView();
|
|
206
239
|
}
|
|
@@ -245,12 +278,12 @@ var Map = function Map(_ref) {
|
|
|
245
278
|
dispatch((0, _actions.clearAreas)());
|
|
246
279
|
wwtpsLayerGroup.clearLayers();
|
|
247
280
|
areasLayerGroup.clearLayers();
|
|
281
|
+
unmonitoredFactoriesGroup.clearLayers();
|
|
282
|
+
monitoredFactoriesGroup.clearLayers();
|
|
283
|
+
factoriesParentGroup.clearLayers();
|
|
248
284
|
monitoredEdgesGroup.clearLayers();
|
|
249
285
|
collectorsLayerGroup.clearLayers();
|
|
250
286
|
unmonitoredEdgesGroup.clearLayers();
|
|
251
|
-
monitoredFactoriesGroup.clearLayers();
|
|
252
|
-
unmonitoredFactoriesGroup.clearLayers();
|
|
253
|
-
factoriesParentGroup.clearLayers();
|
|
254
287
|
mapRef.current.removeLayer(unmonitoredEdgesGroup);
|
|
255
288
|
mapRef.current.removeLayer(monitoredEdgesGroup);
|
|
256
289
|
mapRef.current.removeLayer(wwtpsLayerGroup);
|
|
@@ -325,7 +358,7 @@ var Map = function Map(_ref) {
|
|
|
325
358
|
className: " map-container ".concat(global_data.sidenavExpanded ? '' : 'map-container--sidenav-collapsed')
|
|
326
359
|
}, /*#__PURE__*/_react.default.createElement(_ErrorBoundary.default, null, /*#__PURE__*/_react.default.createElement("div", {
|
|
327
360
|
id: "map"
|
|
328
|
-
}, renderAreas(), (0, _MapUtils.shoudLoadDependentMapObjects)(edges, areas, global_data, mapRef, points) && /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, memoizedEvent(), memoizedZoomControl(), children))))
|
|
361
|
+
}), renderAreas(), (0, _MapUtils.shoudLoadDependentMapObjects)(edges, areas, global_data, mapRef, points) && /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, memoizedEvent(), memoizedZoomControl(), children))));
|
|
329
362
|
};
|
|
330
363
|
exports.Map = Map;
|
|
331
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJMIiwiX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQiLCJyZXF1aXJlIiwiX3JlYWN0IiwiX3JlYWN0UmVkdXgiLCJfRXJyb3JCb3VuZGFyeSIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfQXJlYVBvbHlnb25zIiwiX0VkZ2VzIiwiX1BvaW50TWFya2VycyIsIl9FdmVudCIsIl9NYXBVdGlscyIsIl90aGVtZSIsIl9MaXN0Q29udGV4dCIsIl9hY3Rpb25zIiwiX2FjdGlvbnMyIiwiX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlIiwibm9kZUludGVyb3AiLCJXZWFrTWFwIiwiY2FjaGVCYWJlbEludGVyb3AiLCJjYWNoZU5vZGVJbnRlcm9wIiwib2JqIiwiX19lc01vZHVsZSIsIl90eXBlb2YiLCJkZWZhdWx0IiwiY2FjaGUiLCJoYXMiLCJnZXQiLCJuZXdPYmoiLCJoYXNQcm9wZXJ0eURlc2NyaXB0b3IiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsImtleSIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImRlc2MiLCJzZXQiLCJNYXAiLCJfcmVmIiwiYXJlYXMiLCJlZGdlcyIsInBvaW50cyIsImdsb2JhbF9kYXRhIiwiYXJlYVRvQ2VudGVyQnkiLCJmb2N1c2VkRXZlbnQiLCJob3ZlcmVkRXZlbnQiLCJfcmVmJGhpZGVFZGdlcyIsImhpZGVFZGdlcyIsIl9yZWYkbWFwQm94U3R5bGUiLCJtYXBCb3hTdHlsZSIsImxlYWZsZXRNYXAiLCJtYXBEZWZhdWx0IiwiY2hpbGRyZW4iLCJfcmVmJGluY2x1ZGVVbm1vbml0b3IiLCJpbmNsdWRlVW5tb25pdG9yZWRQb2ludHMiLCJfcmVmJGluY2x1ZGVVbm1vbml0b3IyIiwiaW5jbHVkZVVubW9uaXRvcmVkRGVzY2VuZGFudHNGb3JFZGdlcyIsIl9yZWYkZm9yRXZlbnRzVmlldyIsImZvckV2ZW50c1ZpZXciLCJfcmVmJHN0eWxlIiwic3R5bGUiLCJfcmVmJGZvcldXVFBEYXNoYm9hcmQiLCJmb3JXV1RQRGFzaGJvYXJkIiwibWFwIiwibWFwUmVmIiwidXNlUmVmIiwiZGlzcGF0Y2giLCJ1c2VEaXNwYXRjaCIsIl91c2VTdGF0ZSIsInVzZVN0YXRlIiwiX3VzZVN0YXRlMiIsIl9zbGljZWRUb0FycmF5MiIsIm1hcFpvb21MZXZlbCIsInNldE1hcFpvb21MZXZlbCIsIl91c2VTZWxlY3RlZEl0ZW0iLCJ1c2VTZWxlY3RlZEl0ZW0iLCJzZWxlY3RlZEl0ZW0iLCJfdXNlU3RhdGUzIiwiX3VzZVN0YXRlNCIsImVkZ2VzQ2hlY2tib3giLCJzZXRFZGdlc0NoZWNrYm94IiwiX3VzZVN0YXRlNSIsIl91c2VTdGF0ZTYiLCJvbmx5TW9uaXRvcmVkUG9pbnRzIiwic2V0T25seU1vbml0b3JlZFBvaW50cyIsImVkZ2VzQ2hlY2tib3hSZWYiLCJob3ZlcmVkRXZlbnRQcmVzZW50IiwidXNlTWVtbyIsInVuZGVmaW5lZCIsImZvY3VzZWRFdmVudFByZXNlbnQiLCJfdXNlU3RhdGU3IiwibGF5ZXJHcm91cCIsIl91c2VTdGF0ZTgiLCJmYWN0b3JpZXNQYXJlbnRHcm91cCIsIl91c2VTdGF0ZTkiLCJfdXNlU3RhdGUxMCIsInVubW9uaXRvcmVkRmFjdG9yaWVzR3JvdXAiLCJfdXNlU3RhdGUxMSIsIl91c2VTdGF0ZTEyIiwibW9uaXRvcmVkRmFjdG9yaWVzR3JvdXAiLCJfdXNlU3RhdGUxMyIsIl91c2VTdGF0ZTE0IiwidW5tb25pdG9yZWRFZGdlc0dyb3VwIiwiX3VzZVN0YXRlMTUiLCJfdXNlU3RhdGUxNiIsIm1vbml0b3JlZEVkZ2VzR3JvdXAiLCJfdXNlU3RhdGUxNyIsIl91c2VTdGF0ZTE4Iiwid3d0cHNMYXllckdyb3VwIiwiX3VzZVN0YXRlMTkiLCJfdXNlU3RhdGUyMCIsImNvbGxlY3RvcnNMYXllckdyb3VwIiwiX3VzZVN0YXRlMjEiLCJGZWF0dXJlR3JvdXAiLCJfdXNlU3RhdGUyMiIsImFyZWFzTGF5ZXJHcm91cCIsInJlbmRlclBvaW50TWFya2VycyIsImZpbHRlcmVkUG9pbnRzIiwicHJvcHMiLCJjdXJyZW50IiwiY3JlYXRlRWxlbWVudCIsIlBvaW50TWFya2VycyIsImFzc2lnbiIsIm1lbW9pemVkTW9uaXRvcmVkUG9pbnRzIiwibW9uaXRvcmVkUG9pbnRzIiwiZmlsdGVyUG9pbnRzIiwicmVyZW5kZXIiLCJ6b29tTGV2ZWxzIiwiZmFjdG9yaWVzR3JvdXAiLCJ3d3Rwc0dyb3VwIiwiY29sbGVjdG9yc0dyb3VwIiwibWVtb2l6ZWRVbm1vbml0b3JlZFBvaW50cyIsInVubW9uaXRvcmVkUG9pbnRzIiwicmVuZGVyRWRnZXMiLCJmaWx0ZXJlZEVkZ2VzIiwibWVtb2l6ZWRFZGdlcyIsIm1vbml0b3JlZEVkZ2VzIiwiZmlsdGVyRWRnZXMiLCJoaWRlQXJyb3dzIiwiYWxsb3dVbm1vbml0b3JlZERlc2NlbmRhbnRzIiwiZ3JvdXAiLCJtZW1vaXplZFVubW9uaXRvcmVkRWRnZXMiLCJ1bm1vbml0b3JlZEVkZ2VzIiwiaGFuZGxlRWRnZXNDaGVja2JveENoYW5nZSIsImlzQ2hlY2tlZCIsImVkZ2VzWm9vbUxldmVscyIsImhhbmRsZVBvaW50c0NoZWNrYm94Q2hhbmdlIiwiem9vbSIsImdldFpvb20iLCJyZW1vdmVMYXllciIsInJlbW92ZUZyb20iLCJhZGRMYXllciIsImluY2x1ZGVzIiwiYWRkVG8iLCJ0cmFja0xheWVyYm94Iiwic2V0dXBDaGVja2JveExpc3RlbmVyIiwiem9vbVJ1bGVzRm9yRXZlbnRzVmlldyIsInBheWxvYWQiLCJGcmFnbWVudCIsInpvb21SdWxlc0ZvckRhc2hhYm9hcmRNYXBzIiwibWVtb2l6ZWRab29tQ29udHJvbCIsIm1lbW9pemVkRXZlbnQiLCJmb2N1c2VkIiwiaG92ZXJlZCIsIkV2ZW50IiwiZXZlbnQiLCJpbmNsdWRlTmV0d29yayIsInVzZUVmZmVjdCIsImNsZWFudXAiLCJfbWFwUmVmJGN1cnJlbnQiLCJjbGVhckxheWVycyIsImV2ZW50RmlsdGVyUGFyYW0iLCJjbGVhclBvaW50cyIsImNsZWFyQXJlYXMiLCJlYWNoTGF5ZXIiLCJsYXllciIsIlRpbGVMYXllciIsIndhdGVyQXV0aG9yaXR5SWQiLCJpbml0aWFsaXplTWFwIiwic2F0ZWxsaXRlIiwiaXNWYWxpZEFyZWEiLCJhcmVhIiwic2hhcGVfZGF0YSIsImZsYXQiLCJhcmVhRm9jdXNMb2dpYyIsIl9tYXBSZWYkY3VycmVudDIiLCJjbGlja2VkIiwia2FuZG9fb2JqZWN0X2lkIiwiaXNQb3B1cE9wZW4iLCJNYXJrZXIiLCJmaXJlIiwiUG9seWdvbiIsInJlbmRlckFyZWFzIiwic2hvdWxkTG9hZE1hcE9iamVjdHMiLCJBcmVhUG9seWdvbnMiLCJtYXBab29tIiwiZmVhdHVyZUdyb3VwIiwiY2xhc3NOYW1lIiwiY29uY2F0Iiwic2lkZW5hdkV4cGFuZGVkIiwiaWQiLCJzaG91ZExvYWREZXBlbmRlbnRNYXBPYmplY3RzIiwiZXhwb3J0cyJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9XaWRnZXRzL01hcC9NYXAudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIEB0cy1pZ25vcmVcbmltcG9ydCAqIGFzIEwgZnJvbSAnbGVhZmxldCc7XG5pbXBvcnQgJ3NyYy91dGlsaXRpZXMvcG9seWxpbmVkZWNvcmF0b3InO1xuaW1wb3J0ICdsZWFmbGV0Lm1hcmtlcmNsdXN0ZXInO1xuaW1wb3J0ICdsZWFmbGV0LnBhdHRlcm4nO1xuaW1wb3J0ICdsZWFmbGV0LmhlYXQnO1xuaW1wb3J0IFJlYWN0LCB7XG4gIENTU1Byb3BlcnRpZXMsXG4gIHVzZUVmZmVjdCxcbiAgdXNlTWVtbyxcbiAgdXNlUmVmLFxuICB1c2VTdGF0ZSxcbn0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgdXNlRGlzcGF0Y2ggfSBmcm9tICdyZWFjdC1yZWR1eCc7XG5pbXBvcnQgeyBJQXJlYSB9IGZyb20gJ3NyYy9zdG9yZS9hcmVhcy9tb2RlbHMvSUFyZWEnO1xuaW1wb3J0IHsgSUVkZ2UgfSBmcm9tICdzcmMvc3RvcmUvZWRnZXMvbW9kZWxzL0lFZGdlJztcbmltcG9ydCB7IElFdmVudCB9IGZyb20gJ3NyYy9zdG9yZS9ldmVudHMvbW9kZWxzL0lFdmVudCc7XG4vLyBpbXBvcnQgeyBzdG9yZU1hcCB9IGZyb20gJ3NyYy9zdG9yZS9nbG9iYWwvYWN0aW9ucyc7XG5pbXBvcnQgeyBJR2xvYmFsU3RhdGUgfSBmcm9tICdzcmMvc3RvcmUvZ2xvYmFsL21vZGVscy9JR2xvYmFsU3RhdGUnO1xuaW1wb3J0IHsgSVBvaW50IH0gZnJvbSAnc3JjL3N0b3JlL3BvaW50cy9tb2RlbHMvSVBvaW50JztcbmltcG9ydCBFcnJvckJvdW5kYXJ5IGZyb20gJ3NyYy91dGlsaXRpZXMvRXJyb3JCb3VuZGFyeSc7XG5pbXBvcnQgeyBBcmVhUG9seWdvbnMgfSBmcm9tICcuL2FyZWFzL0FyZWFQb2x5Z29ucyc7XG5pbXBvcnQgRWRnZXMgZnJvbSAnLi9lZGdlcy9FZGdlcyc7XG5pbXBvcnQgJy4vTWFwLnNjc3MnO1xuaW1wb3J0ICcuL3BvaW50cy9Qb2ludEljb24uc2Nzcyc7XG5pbXBvcnQgeyBQb2ludE1hcmtlcnMgfSBmcm9tICcuL3BvaW50cy9Qb2ludE1hcmtlcnMnO1xuLy8gaW1wb3J0IHsgYXBwUmVkdWNlciB9IGZyb20gJy4uLy4uL3N0b3JlL3Jvb3RSZWR1Y2VyJztcbmltcG9ydCB7IEV2ZW50IH0gZnJvbSAnLi9ldmVudHMvRXZlbnQnO1xuaW1wb3J0IHtcbiAgYXJlYUZvY3VzTG9naWMsXG4gIGZpbHRlckVkZ2VzLFxuICBmaWx0ZXJQb2ludHMsXG4gIGluaXRpYWxpemVNYXAsXG4gIGlzVmFsaWRBcmVhLFxuICBzZXR1cENoZWNrYm94TGlzdGVuZXIsXG4gIHNob3VkTG9hZERlcGVuZGVudE1hcE9iamVjdHMsXG4gIHNob3VsZExvYWRNYXBPYmplY3RzLFxuICB6b29tTGV2ZWxzLFxufSBmcm9tICcuL01hcFV0aWxzJztcbmltcG9ydCB7IGxlYWZsZXRNYXAgfSBmcm9tICcuLi8uLi9zdHlsZXMvdGhlbWUvdGhlbWUnO1xuaW1wb3J0IHsgdXNlU2VsZWN0ZWRJdGVtIH0gZnJvbSAnc3JjL3BhZ2VzL0Rhc2hib2FyZE1hcC9MaXN0Q29udGV4dCc7XG5pbXBvcnQgeyBjbGVhckFyZWFzIH0gZnJvbSAnc3JjL3N0b3JlL2FyZWFzL2FjdGlvbnMnO1xuaW1wb3J0IHsgY2xlYXJQb2ludHMgfSBmcm9tICdzcmMvc3RvcmUvcG9pbnRzL2FjdGlvbnMnO1xucmVxdWlyZSgnbGVhZmxldC5tYXJrZXJjbHVzdGVyJyk7XG5cbmludGVyZmFjZSBNYXBQcm9wcyB7XG4gIGFyZWFzOiBJQXJlYVtdO1xuICBlZGdlcz86IElFZGdlW107XG4gIHBvaW50cz86IElQb2ludFtdO1xuICBnbG9iYWxfZGF0YTogSUdsb2JhbFN0YXRlO1xuICBhcmVhVG9DZW50ZXJCeT86IGFueTtcbiAgZm9jdXNlZEV2ZW50PzogSUV2ZW50IHwgbnVsbDtcbiAgaG92ZXJlZEV2ZW50PzogSUV2ZW50IHwgbnVsbDtcbiAgaGlkZUVkZ2VzPzogYm9vbGVhbjtcbiAgbWFwQm94U3R5bGU/OiBzdHJpbmc7XG4gIGNoaWxkcmVuPzogYW55O1xuICBzdHlsZT86IENTU1Byb3BlcnRpZXM7XG4gIGluY2x1ZGVVbm1vbml0b3JlZFBvaW50cz86IGJvb2xlYW47XG4gIGluY2x1ZGVVbm1vbml0b3JlZERlc2NlbmRhbnRzRm9yRWRnZXM/OiBib29sZWFuO1xuICBmb3JFdmVudHNWaWV3OiBib29sZWFuO1xuICBmb3JXV1RQRGFzaGJvYXJkPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGNvbnN0IE1hcDogUmVhY3QuRkM8TWFwUHJvcHM+ID0gKHtcbiAgYXJlYXMsXG4gIGVkZ2VzLFxuICBwb2ludHMsXG4gIGdsb2JhbF9kYXRhLFxuICBhcmVhVG9DZW50ZXJCeSxcbiAgZm9jdXNlZEV2ZW50LFxuICBob3ZlcmVkRXZlbnQsXG4gIGhpZGVFZGdlcyA9IGZhbHNlLFxuICBtYXBCb3hTdHlsZSA9IGxlYWZsZXRNYXAubWFwRGVmYXVsdCxcbiAgY2hpbGRyZW4sXG4gIGluY2x1ZGVVbm1vbml0b3JlZFBvaW50cyA9IHRydWUsXG4gIGluY2x1ZGVVbm1vbml0b3JlZERlc2NlbmRhbnRzRm9yRWRnZXMgPSBmYWxzZSxcbiAgZm9yRXZlbnRzVmlldyA9IGZhbHNlLFxuICBzdHlsZSA9IHt9LFxuICBmb3JXV1RQRGFzaGJvYXJkID0gZmFsc2UsXG59KSA9PiB7XG4gIGNvbnN0IHsgbWFwIH0gPSBnbG9iYWxfZGF0YTtcbiAgY29uc3QgbWFwUmVmID0gdXNlUmVmPEwuTWFwIHwgbnVsbD4obnVsbCk7XG4gIGNvbnN0IGRpc3BhdGNoID0gdXNlRGlzcGF0Y2goKTtcbiAgY29uc3QgW21hcFpvb21MZXZlbCwgc2V0TWFwWm9vbUxldmVsXSA9IHVzZVN0YXRlKDIpO1xuICBjb25zdCB7IHNlbGVjdGVkSXRlbSB9ID0gdXNlU2VsZWN0ZWRJdGVtKCk7XG4gIGNvbnN0IFtlZGdlc0NoZWNrYm94LCBzZXRFZGdlc0NoZWNrYm94XSA9IHVzZVN0YXRlKHRydWUpO1xuICBjb25zdCBbb25seU1vbml0b3JlZFBvaW50cywgc2V0T25seU1vbml0b3JlZFBvaW50c10gPSB1c2VTdGF0ZShmYWxzZSk7XG4gIGNvbnN0IGVkZ2VzQ2hlY2tib3hSZWYgPSB1c2VSZWYoZWRnZXNDaGVja2JveCk7XG5cbiAgY29uc3QgaG92ZXJlZEV2ZW50UHJlc2VudCA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIHJldHVybiBob3ZlcmVkRXZlbnQgIT09IG51bGwgJiYgaG92ZXJlZEV2ZW50ICE9PSB1bmRlZmluZWQ7XG4gIH0sIFtob3ZlcmVkRXZlbnRdKTtcblxuICBjb25zdCBmb2N1c2VkRXZlbnRQcmVzZW50ID0gdXNlTWVtbygoKSA9PiB7XG4gICAgcmV0dXJuIGZvY3VzZWRFdmVudCAhPT0gbnVsbCAmJiBmb2N1c2VkRXZlbnQgIT09IHVuZGVmaW5lZDtcbiAgfSwgW2ZvY3VzZWRFdmVudF0pO1xuXG4gIC8vIEFkZCBwYXJlbnQgbGF5ZXIgZ3JvdXAgZm9yIGFsbCBmYWN0b3JpZXNcbiAgY29uc3QgW2ZhY3Rvcmllc1BhcmVudEdyb3VwXSA9IHVzZVN0YXRlKEwubGF5ZXJHcm91cCgpKTtcbiAgY29uc3QgW3VubW9uaXRvcmVkRmFjdG9yaWVzR3JvdXBdID0gdXNlU3RhdGUoTC5sYXllckdyb3VwKCkpO1xuICBjb25zdCBbbW9uaXRvcmVkRmFjdG9yaWVzR3JvdXBdID0gdXNlU3RhdGUoTC5sYXllckdyb3VwKCkpO1xuICBjb25zdCBbdW5tb25pdG9yZWRFZGdlc0dyb3VwXSA9IHVzZVN0YXRlKEwubGF5ZXJHcm91cCgpKTtcbiAgY29uc3QgW21vbml0b3JlZEVkZ2VzR3JvdXBdID0gdXNlU3RhdGUoTC5sYXllckdyb3VwKCkpO1xuICBjb25zdCBbd3d0cHNMYXllckdyb3VwXSA9IHVzZVN0YXRlKEwubGF5ZXJHcm91cCgpKTtcbiAgY29uc3QgW2NvbGxlY3RvcnNMYXllckdyb3VwXSA9IHVzZVN0YXRlKEwubGF5ZXJHcm91cCgpKTtcbiAgY29uc3QgW2FyZWFzTGF5ZXJHcm91cF0gPSB1c2VTdGF0ZShuZXcgTC5GZWF0dXJlR3JvdXAoKSk7XG5cbiAgY29uc3QgcmVuZGVyUG9pbnRNYXJrZXJzID0gKGZpbHRlcmVkUG9pbnRzLCBtYXBSZWYsIHByb3BzKSA9PlxuICAgIG1hcFJlZi5jdXJyZW50ICE9PSBudWxsICYmXG4gICAgcG9pbnRzICYmIChcbiAgICAgIDxQb2ludE1hcmtlcnMgbWFwPXttYXBSZWYuY3VycmVudH0gcG9pbnRzPXtmaWx0ZXJlZFBvaW50c30gey4uLnByb3BzfSAvPlxuICAgICk7XG5cbiAgY29uc3QgbWVtb2l6ZWRNb25pdG9yZWRQb2ludHMgPSAoKSA9PiB7XG4gICAgY29uc3QgbW9uaXRvcmVkUG9pbnRzID0gZmlsdGVyUG9pbnRzKHBvaW50cywgdHJ1ZSk7XG4gICAgcmV0dXJuIHJlbmRlclBvaW50TWFya2Vycyhtb25pdG9yZWRQb2ludHMsIG1hcFJlZiwge1xuICAgICAgaW5jbHVkZVVubW9uaXRvcmVkUG9pbnRzOiB0cnVlLFxuICAgICAgcmVyZW5kZXI6IHpvb21MZXZlbHNbbWFwWm9vbUxldmVsXSxcbiAgICAgIGZhY3Rvcmllc0dyb3VwOiBtb25pdG9yZWRGYWN0b3JpZXNHcm91cCxcbiAgICAgIHd3dHBzR3JvdXA6IHd3dHBzTGF5ZXJHcm91cCxcbiAgICAgIGNvbGxlY3RvcnNHcm91cDogY29sbGVjdG9yc0xheWVyR3JvdXAsXG4gICAgICBmb3JFdmVudHNWaWV3OiBmb3JFdmVudHNWaWV3LFxuICAgIH0pO1xuICB9O1xuXG4gIGNvbnN0IG1lbW9pemVkVW5tb25pdG9yZWRQb2ludHMgPSAoKSA9PiB7XG4gICAgY29uc3QgdW5tb25pdG9yZWRQb2ludHMgPSBmaWx0ZXJQb2ludHMocG9pbnRzLCBmYWxzZSk7XG4gICAgcmV0dXJuIHJlbmRlclBvaW50TWFya2Vycyh1bm1vbml0b3JlZFBvaW50cywgbWFwUmVmLCB7XG4gICAgICBpbmNsdWRlVW5tb25pdG9yZWRQb2ludHM6IHRydWUsXG4gICAgICByZXJlbmRlcjogem9vbUxldmVsc1ttYXBab29tTGV2ZWxdLFxuICAgICAgZmFjdG9yaWVzR3JvdXA6IHVubW9uaXRvcmVkRmFjdG9yaWVzR3JvdXAsXG4gICAgICB3d3Rwc0dyb3VwOiB3d3Rwc0xheWVyR3JvdXAsXG4gICAgICBjb2xsZWN0b3JzR3JvdXA6IGNvbGxlY3RvcnNMYXllckdyb3VwLFxuICAgICAgZm9yRXZlbnRzVmlldzogZm9yRXZlbnRzVmlldyxcbiAgICB9KTtcbiAgfTtcblxuICBjb25zdCByZW5kZXJFZGdlcyA9IChmaWx0ZXJlZEVkZ2VzLCBtYXBSZWYsIGVkZ2VzQ2hlY2tib3gsIHByb3BzKSA9PlxuICAgIG1hcFJlZi5jdXJyZW50ICE9PSBudWxsICYmXG4gICAgZWRnZXNDaGVja2JveCAmJiAoXG4gICAgICA8RWRnZXMgZWRnZXM9e2ZpbHRlcmVkRWRnZXN9IG1hcD17bWFwUmVmLmN1cnJlbnR9IHsuLi5wcm9wc30gLz5cbiAgICApO1xuXG4gIGNvbnN0IG1lbW9pemVkRWRnZXMgPSB1c2VNZW1vKCgpID0+IHtcbiAgICBjb25zdCBtb25pdG9yZWRFZGdlcyA9IGZpbHRlckVkZ2VzKGVkZ2VzLCBwb2ludHMsIHRydWUpO1xuICAgIHJldHVybiByZW5kZXJFZGdlcyhtb25pdG9yZWRFZGdlcywgbWFwUmVmLCBlZGdlc0NoZWNrYm94LCB7XG4gICAgICBMLFxuICAgICAgcG9pbnRzLFxuICAgICAgaGlkZUVkZ2VzOiBmYWxzZSxcbiAgICAgIGhpZGVBcnJvd3M6IHRydWUsXG4gICAgICBhbGxvd1VubW9uaXRvcmVkRGVzY2VuZGFudHM6IGluY2x1ZGVVbm1vbml0b3JlZERlc2NlbmRhbnRzRm9yRWRnZXMsXG4gICAgICBncm91cDogbW9uaXRvcmVkRWRnZXNHcm91cCxcbiAgICB9KTtcbiAgfSwgW3BvaW50cywgZWRnZXNDaGVja2JveCwgbWFwWm9vbUxldmVsXSk7XG5cbiAgY29uc3QgbWVtb2l6ZWRVbm1vbml0b3JlZEVkZ2VzID0gdXNlTWVtbygoKSA9PiB7XG4gICAgaWYgKG9ubHlNb25pdG9yZWRQb2ludHMpIHJldHVybiBudWxsO1xuXG4gICAgY29uc3QgdW5tb25pdG9yZWRFZGdlcyA9IGZpbHRlckVkZ2VzKGVkZ2VzLCBwb2ludHMsIGZhbHNlKTtcbiAgICByZXR1cm4gcmVuZGVyRWRnZXModW5tb25pdG9yZWRFZGdlcywgbWFwUmVmLCBlZGdlc0NoZWNrYm94LCB7XG4gICAgICBMLFxuICAgICAgcG9pbnRzLFxuICAgICAgaGlkZUVkZ2VzOiBmYWxzZSxcbiAgICAgIGhpZGVBcnJvd3M6IHRydWUsXG4gICAgICBhbGxvd1VubW9uaXRvcmVkRGVzY2VuZGFudHM6IGluY2x1ZGVVbm1vbml0b3JlZERlc2NlbmRhbnRzRm9yRWRnZXMsXG4gICAgICBncm91cDogdW5tb25pdG9yZWRFZGdlc0dyb3VwLFxuICAgIH0pO1xuICB9LCBbcG9pbnRzLCBlZGdlc0NoZWNrYm94LCBtYXBab29tTGV2ZWxdKTtcblxuICBjb25zdCBoYW5kbGVFZGdlc0NoZWNrYm94Q2hhbmdlID0gKGlzQ2hlY2tlZCkgPT4ge1xuICAgIHNldEVkZ2VzQ2hlY2tib3goaXNDaGVja2VkKTtcbiAgfTtcblxuICAvLyBUaGlzIHZhcmlhYmxlIHN0b3JlcyB0aGUgem9vbSBsZXZlbHMgdGhlIGVkZ2VzIGFyZSBkaXNwbGF5ZWRcbiAgLy8gSXQgaXMgdXNlZCBpbiB0d28gcGxhY2VzIGluIHRoZSBjb2RlLCBzbyBpdCBpcyBiZXR0ZXIgdG8gc3RvcmUgaXQgaW4gb25lIHBsYWNlXG4gIGNvbnN0IGVkZ2VzWm9vbUxldmVscyA9IFsnU21hbGwnLCAnTWVkaXVtJywgJ01MYXJnZScsICdMYXJnZSddO1xuXG4gIGNvbnN0IGhhbmRsZVBvaW50c0NoZWNrYm94Q2hhbmdlID0gKGlzQ2hlY2tlZCkgPT4ge1xuICAgIHNldE9ubHlNb25pdG9yZWRQb2ludHMoaXNDaGVja2VkKTtcbiAgICBpZiAobWFwUmVmLmN1cnJlbnQgIT09IG51bGwpIHtcbiAgICAgIGxldCB6b29tID0gem9vbUxldmVsc1ttYXBSZWYuY3VycmVudC5nZXRab29tKCldO1xuXG4gICAgICBpZiAoaXNDaGVja2VkKSB7XG4gICAgICAgIC8vIEhpZGUgdW5tb25pdG9yZWQgcG9pbnRzIHdoZW4gXCJzaG93IG9ubHkgbW9uaXRvcmVkXCIgaXMgY2hlY2tlZFxuICAgICAgICBmYWN0b3JpZXNQYXJlbnRHcm91cC5yZW1vdmVMYXllcih1bm1vbml0b3JlZEZhY3Rvcmllc0dyb3VwKTtcbiAgICAgICAgdW5tb25pdG9yZWRFZGdlc0dyb3VwLnJlbW92ZUZyb20obWFwUmVmLmN1cnJlbnQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gU2hvdyBhbGwgcG9pbnRzIHdoZW4gXCJzaG93IG9ubHkgbW9uaXRvcmVkXCIgaXMgdW5jaGVja2VkXG4gICAgICAgIGZhY3Rvcmllc1BhcmVudEdyb3VwLmFkZExheWVyKHVubW9uaXRvcmVkRmFjdG9yaWVzR3JvdXApO1xuXG4gICAgICAgIC8vIFNob3cgdW5tb25pdG9yZWQgZWRnZXMgaWYgYXQgYXBwcm9wcmlhdGUgem9vbSBsZXZlbFxuICAgICAgICBpZiAoZWRnZXNDaGVja2JveFJlZi5jdXJyZW50ICYmIGVkZ2VzWm9vbUxldmVscy5pbmNsdWRlcyh6b29tKSkge1xuICAgICAgICAgIHVubW9uaXRvcmVkRWRnZXNHcm91cC5hZGRUbyhtYXBSZWYuY3VycmVudCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH07XG5cbiAgY29uc3QgdHJhY2tMYXllcmJveCA9ICgpID0+IHtcbiAgICBzZXR1cENoZWNrYm94TGlzdGVuZXIoJyNlZGdlcy1jaGVja2JveCcsIGhhbmRsZUVkZ2VzQ2hlY2tib3hDaGFuZ2UpO1xuICAgIHNldHVwQ2hlY2tib3hMaXN0ZW5lcihcbiAgICAgICcjbW9uaXRvcmVkLXBvaW50cy1jaGVja2JveCcsXG4gICAgICBoYW5kbGVQb2ludHNDaGVja2JveENoYW5nZSxcbiAgICApO1xuICB9O1xuXG4gIGNvbnN0IHpvb21SdWxlc0ZvckV2ZW50c1ZpZXcgPSAoKSA9PiB7XG4gICAgY29uc3QgcGF5bG9hZCA9IChcbiAgICAgIDw+XG4gICAgICAgIHttZW1vaXplZEVkZ2VzfVxuICAgICAgICB7bWVtb2l6ZWRVbm1vbml0b3JlZEVkZ2VzfVxuICAgICAgICB7bWVtb2l6ZWRVbm1vbml0b3JlZFBvaW50cygpfVxuICAgICAgICB7bWVtb2l6ZWRNb25pdG9yZWRQb2ludHMoKX1cbiAgICAgIDwvPlxuICAgICk7XG5cbiAgICByZXR1cm4gcGF5bG9hZDtcbiAgfTtcblxuICBjb25zdCB6b29tUnVsZXNGb3JEYXNoYWJvYXJkTWFwcyA9ICgpID0+IHtcbiAgICBsZXQgcGF5bG9hZCA9IChcbiAgICAgIDw+XG4gICAgICAgIHttZW1vaXplZFVubW9uaXRvcmVkUG9pbnRzKCl9XG4gICAgICAgIHttZW1vaXplZE1vbml0b3JlZFBvaW50cygpfVxuICAgICAgPC8+XG4gICAgKTtcblxuICAgIGlmIChlZGdlc1pvb21MZXZlbHMuaW5jbHVkZXMoem9vbUxldmVsc1ttYXBab29tTGV2ZWxdKSkge1xuICAgICAgcGF5bG9hZCA9IHpvb21SdWxlc0ZvckV2ZW50c1ZpZXcoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcGF5bG9hZDtcbiAgfTtcblxuICBjb25zdCBtZW1vaXplZFpvb21Db250cm9sID0gKCkgPT4ge1xuICAgIGNvbnN0IHBheWxvYWQgPSBmb3JFdmVudHNWaWV3XG4gICAgICA/IHpvb21SdWxlc0ZvckV2ZW50c1ZpZXcoKVxuICAgICAgOiB6b29tUnVsZXNGb3JEYXNoYWJvYXJkTWFwcygpO1xuICAgIHJldHVybiBwYXlsb2FkO1xuICB9O1xuXG4gIGNvbnN0IG1lbW9pemVkRXZlbnQgPSAoKSA9PiB7XG4gICAgaWYgKGZvY3VzZWRFdmVudFByZXNlbnQpIHtcbiAgICAgIGZvY3VzZWRFdmVudCEuZm9jdXNlZCA9IGZvY3VzZWRFdmVudFByZXNlbnQ7XG4gICAgICBmb2N1c2VkRXZlbnQhLmhvdmVyZWQgPSAhZm9jdXNlZEV2ZW50UHJlc2VudDtcbiAgICB9XG5cbiAgICBpZiAoaG92ZXJlZEV2ZW50UHJlc2VudCkge1xuICAgICAgaG92ZXJlZEV2ZW50IS5ob3ZlcmVkID0gaG92ZXJlZEV2ZW50UHJlc2VudDtcbiAgICAgIGhvdmVyZWRFdmVudCEuZm9jdXNlZCA9ICFob3ZlcmVkRXZlbnRQcmVzZW50O1xuICAgIH1cblxuICAgIGlmICghaG92ZXJlZEV2ZW50UHJlc2VudCAmJiAhZm9jdXNlZEV2ZW50UHJlc2VudCkgcmV0dXJuIDw+PC8+O1xuICAgIHJldHVybiAoXG4gICAgICA8RXZlbnRcbiAgICAgICAgZXZlbnQ9e2ZvY3VzZWRFdmVudCEgfHwgaG92ZXJlZEV2ZW50IX1cbiAgICAgICAgbWFwPXttYXB9XG4gICAgICAgIGVkZ2VzPXtlZGdlcyF9XG4gICAgICAgIHBvaW50cz17cG9pbnRzIX1cbiAgICAgICAgaW5jbHVkZU5ldHdvcms9eyFob3ZlcmVkRXZlbnRQcmVzZW50fVxuICAgICAgLz5cbiAgICApO1xuICB9O1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgZWRnZXNDaGVja2JveFJlZi5jdXJyZW50ID0gZWRnZXNDaGVja2JveDtcbiAgfSwgW2VkZ2VzQ2hlY2tib3hdKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIHJldHVybiBmdW5jdGlvbiBjbGVhbnVwKCkge1xuICAgICAgY29sbGVjdG9yc0xheWVyR3JvdXAuY2xlYXJMYXllcnMoKTtcbiAgICAgIG1hcFJlZi5jdXJyZW50Py5yZW1vdmVMYXllcihjb2xsZWN0b3JzTGF5ZXJHcm91cCk7XG4gICAgfTtcbiAgfSwgW2ZvY3VzZWRFdmVudCwgaG92ZXJlZEV2ZW50LCBnbG9iYWxfZGF0YS5ldmVudEZpbHRlclBhcmFtXSk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICByZXR1cm4gZnVuY3Rpb24gY2xlYW51cCgpIHtcbiAgICAgIGlmIChmb3JFdmVudHNWaWV3ICYmIG1hcFJlZi5jdXJyZW50KSB7XG4gICAgICAgIGRpc3BhdGNoKGNsZWFyUG9pbnRzKCkpO1xuICAgICAgICBkaXNwYXRjaChjbGVhckFyZWFzKCkpO1xuICAgICAgICB3d3Rwc0xheWVyR3JvdXAuY2xlYXJMYXllcnMoKTtcbiAgICAgICAgYXJlYXNMYXllckdyb3VwLmNsZWFyTGF5ZXJzKCk7XG4gICAgICAgIG1vbml0b3JlZEVkZ2VzR3JvdXAuY2xlYXJMYXllcnMoKTtcbiAgICAgICAgY29sbGVjdG9yc0xheWVyR3JvdXAuY2xlYXJMYXllcnMoKTtcbiAgICAgICAgdW5tb25pdG9yZWRFZGdlc0dyb3VwLmNsZWFyTGF5ZXJzKCk7XG4gICAgICAgIG1vbml0b3JlZEZhY3Rvcmllc0dyb3VwLmNsZWFyTGF5ZXJzKCk7XG4gICAgICAgIHVubW9uaXRvcmVkRmFjdG9yaWVzR3JvdXAuY2xlYXJMYXllcnMoKTtcbiAgICAgICAgZmFjdG9yaWVzUGFyZW50R3JvdXAuY2xlYXJMYXllcnMoKTtcbiAgICAgICAgbWFwUmVmLmN1cnJlbnQucmVtb3ZlTGF5ZXIodW5tb25pdG9yZWRFZGdlc0dyb3VwKTtcbiAgICAgICAgbWFwUmVmLmN1cnJlbnQucmVtb3ZlTGF5ZXIobW9uaXRvcmVkRWRnZXNHcm91cCk7XG4gICAgICAgIG1hcFJlZi5jdXJyZW50LnJlbW92ZUxheWVyKHd3dHBzTGF5ZXJHcm91cCk7XG4gICAgICAgIG1hcFJlZi5jdXJyZW50LnJlbW92ZUxheWVyKGNvbGxlY3RvcnNMYXllckdyb3VwKTtcbiAgICAgICAgbWFwUmVmLmN1cnJlbnQucmVtb3ZlTGF5ZXIoYXJlYXNMYXllckdyb3VwKTtcbiAgICAgICAgbWFwUmVmLmN1cnJlbnQucmVtb3ZlTGF5ZXIoZmFjdG9yaWVzUGFyZW50R3JvdXApO1xuXG4gICAgICAgIG1hcFJlZi5jdXJyZW50LmVhY2hMYXllcigobGF5ZXIpID0+IHtcbiAgICAgICAgICBpZiAobGF5ZXIgaW5zdGFuY2VvZiBMLlRpbGVMYXllcikge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cbiAgICAgICAgICBtYXBSZWYuY3VycmVudC5yZW1vdmVMYXllcihsYXllcik7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH07XG4gIH0sIFtnbG9iYWxfZGF0YS53YXRlckF1dGhvcml0eUlkXSk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIW1hcFJlZi5jdXJyZW50KSB7XG4gICAgICBpbml0aWFsaXplTWFwKFxuICAgICAgICBtYXBab29tTGV2ZWwsXG4gICAgICAgIG1hcEJveFN0eWxlLFxuICAgICAgICBsZWFmbGV0TWFwLnNhdGVsbGl0ZSxcbiAgICAgICAgbWFwUmVmLFxuICAgICAgICBkaXNwYXRjaCxcbiAgICAgICAgaXNWYWxpZEFyZWEsXG4gICAgICAgIGFyZWFUb0NlbnRlckJ5LFxuICAgICAgICBzZXRNYXBab29tTGV2ZWwsXG4gICAgICAgIGZvcldXVFBEYXNoYm9hcmQsXG4gICAgICAgIHRydWUsXG4gICAgICAgIGdsb2JhbF9kYXRhLndhdGVyQXV0aG9yaXR5SWQsXG4gICAgICApO1xuXG4gICAgICAvLyBJbml0aWFsaXplIHBhcmVudCBmYWN0b3J5IGdyb3VwXG4gICAgICBpZiAobWFwUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgZmFjdG9yaWVzUGFyZW50R3JvdXAuYWRkVG8obWFwUmVmLmN1cnJlbnQpO1xuICAgICAgICBmYWN0b3JpZXNQYXJlbnRHcm91cC5hZGRMYXllcihtb25pdG9yZWRGYWN0b3JpZXNHcm91cCk7XG4gICAgICAgIGZhY3Rvcmllc1BhcmVudEdyb3VwLmFkZExheWVyKHVubW9uaXRvcmVkRmFjdG9yaWVzR3JvdXApO1xuICAgICAgfVxuXG4gICAgICB0cmFja0xheWVyYm94KCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHNldE1hcFpvb21MZXZlbChtYXBSZWYuY3VycmVudC5nZXRab29tKCkpO1xuICAgICAgaWYgKCFhcmVhVG9DZW50ZXJCeSkge1xuICAgICAgICBhcmVhVG9DZW50ZXJCeSA9IGFyZWFzLm1hcCgoYXJlYSkgPT4gYXJlYS5zaGFwZV9kYXRhKS5mbGF0KCk7XG4gICAgICB9XG5cbiAgICAgIGlmICghZm9yRXZlbnRzVmlldyB8fCAhZm9jdXNlZEV2ZW50KSB7XG4gICAgICAgIGFyZWFGb2N1c0xvZ2ljKG1hcFJlZiwgaXNWYWxpZEFyZWEsIGFyZWFUb0NlbnRlckJ5KTtcbiAgICAgIH1cbiAgICB9XG4gIH0sIFthcmVhVG9DZW50ZXJCeV0pO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgbGV0IGNsaWNrZWQgPSBmYWxzZTtcblxuICAgIG1hcFJlZi5jdXJyZW50Py5lYWNoTGF5ZXIoKGxheWVyKSA9PiB7XG4gICAgICBpZiAoY2xpY2tlZCkgcmV0dXJuO1xuXG4gICAgICBpZiAoXG4gICAgICAgIGxheWVyPy5rYW5kb19vYmplY3RfaWQgPT09IHNlbGVjdGVkSXRlbSAmJlxuICAgICAgICBsYXllci5pc1BvcHVwT3BlbigpID09PSBmYWxzZVxuICAgICAgKSB7XG4gICAgICAgIGlmIChsYXllciBpbnN0YW5jZW9mIEwuTWFya2VyKSB7XG4gICAgICAgICAgbGF5ZXIuZmlyZSgnY2xpY2snKTtcbiAgICAgICAgfSBlbHNlIGlmIChsYXllciBpbnN0YW5jZW9mIEwuUG9seWdvbikge1xuICAgICAgICAgIGxheWVyLmZpcmUoJ2NsaWNrLWV2ZW50Jyk7XG4gICAgICAgIH1cbiAgICAgICAgY2xpY2tlZCA9IHRydWU7XG4gICAgICB9XG4gICAgfSk7XG4gIH0sIFtzZWxlY3RlZEl0ZW1dKTtcblxuICBjb25zdCByZW5kZXJBcmVhcyA9ICgpID0+IHtcbiAgICBpZiAoIXNob3VsZExvYWRNYXBPYmplY3RzKGdsb2JhbF9kYXRhLCBtYXBSZWYsIGVkZ2VzLCBwb2ludHMpKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICByZXR1cm4gKFxuICAgICAgPEFyZWFQb2x5Z29uc1xuICAgICAgICBhcmVhcz17YXJlYXN9XG4gICAgICAgIG1hcD17bWFwUmVmLmN1cnJlbnR9XG4gICAgICAgIEw9e0x9XG4gICAgICAgIGFyZWFUb0NlbnRlckJ5PXthcmVhVG9DZW50ZXJCeX1cbiAgICAgICAgbWFwWm9vbT17bWFwWm9vbUxldmVsfVxuICAgICAgICBnbG9iYWxfZGF0YT17Z2xvYmFsX2RhdGF9XG4gICAgICAgIGZlYXR1cmVHcm91cD17YXJlYXNMYXllckdyb3VwfVxuICAgICAgLz5cbiAgICApO1xuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9XCJrZC1tYXAtY29udGFpbmVyXCIgc3R5bGU9e3N0eWxlfT5cbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3NOYW1lPXtgIG1hcC1jb250YWluZXIgJHtcbiAgICAgICAgICBnbG9iYWxfZGF0YS5zaWRlbmF2RXhwYW5kZWQgPyAnJyA6ICdtYXAtY29udGFpbmVyLS1zaWRlbmF2LWNvbGxhcHNlZCdcbiAgICAgICAgfWB9XG4gICAgICA+XG4gICAgICAgIDxFcnJvckJvdW5kYXJ5PlxuICAgICAgICAgIDxkaXYgaWQ9XCJtYXBcIj5cbiAgICAgICAgICAgIHtyZW5kZXJBcmVhcygpfVxuICAgICAgICAgICAge3Nob3VkTG9hZERlcGVuZGVudE1hcE9iamVjdHMoXG4gICAgICAgICAgICAgIGVkZ2VzLFxuICAgICAgICAgICAgICBhcmVhcyxcbiAgICAgICAgICAgICAgZ2xvYmFsX2RhdGEsXG4gICAgICAgICAgICAgIG1hcFJlZixcbiAgICAgICAgICAgICAgcG9pbnRzLFxuICAgICAgICAgICAgKSAmJiAoXG4gICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAge21lbW9pemVkRXZlbnQoKX1cbiAgICAgICAgICAgICAgICB7bWVtb2l6ZWRab29tQ29udHJvbCgpfVxuICAgICAgICAgICAgICAgIHtjaGlsZHJlbn1cbiAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICApfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L0Vycm9yQm91bmRhcnk+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgKTtcbn07XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUNBLElBQUFBLENBQUEsR0FBQUMsdUJBQUEsQ0FBQUMsT0FBQTtBQUNBQSxPQUFBO0FBQ0FBLE9BQUE7QUFDQUEsT0FBQTtBQUNBQSxPQUFBO0FBQ0EsSUFBQUMsTUFBQSxHQUFBRix1QkFBQSxDQUFBQyxPQUFBO0FBT0EsSUFBQUUsV0FBQSxHQUFBRixPQUFBO0FBT0EsSUFBQUcsY0FBQSxHQUFBQyxzQkFBQSxDQUFBSixPQUFBO0FBQ0EsSUFBQUssYUFBQSxHQUFBTCxPQUFBO0FBQ0EsSUFBQU0sTUFBQSxHQUFBRixzQkFBQSxDQUFBSixPQUFBO0FBQ0FBLE9BQUE7QUFDQUEsT0FBQTtBQUNBLElBQUFPLGFBQUEsR0FBQVAsT0FBQTtBQUVBLElBQUFRLE1BQUEsR0FBQVIsT0FBQTtBQUNBLElBQUFTLFNBQUEsR0FBQVQsT0FBQTtBQVdBLElBQUFVLE1BQUEsR0FBQVYsT0FBQTtBQUNBLElBQUFXLFlBQUEsR0FBQVgsT0FBQTtBQUNBLElBQUFZLFFBQUEsR0FBQVosT0FBQTtBQUNBLElBQUFhLFNBQUEsR0FBQWIsT0FBQTtBQUF1RCxTQUFBYyx5QkFBQUMsV0FBQSxlQUFBQyxPQUFBLGtDQUFBQyxpQkFBQSxPQUFBRCxPQUFBLFFBQUFFLGdCQUFBLE9BQUFGLE9BQUEsWUFBQUYsd0JBQUEsWUFBQUEseUJBQUFDLFdBQUEs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
|
|
364
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJMIiwiX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQiLCJyZXF1aXJlIiwiX3JlYWN0IiwiX3JlYWN0UmVkdXgiLCJfRXJyb3JCb3VuZGFyeSIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfQXJlYVBvbHlnb25zIiwiX0VkZ2VzIiwiX1BvaW50TWFya2VycyIsIl9FdmVudCIsIl9NYXBVdGlscyIsIl90aGVtZSIsIl9MaXN0Q29udGV4dCIsIl9hY3Rpb25zIiwiX2FjdGlvbnMyIiwiX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlIiwibm9kZUludGVyb3AiLCJXZWFrTWFwIiwiY2FjaGVCYWJlbEludGVyb3AiLCJjYWNoZU5vZGVJbnRlcm9wIiwib2JqIiwiX19lc01vZHVsZSIsIl90eXBlb2YiLCJkZWZhdWx0IiwiY2FjaGUiLCJoYXMiLCJnZXQiLCJuZXdPYmoiLCJoYXNQcm9wZXJ0eURlc2NyaXB0b3IiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsImtleSIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImRlc2MiLCJzZXQiLCJNYXAiLCJfcmVmIiwiYXJlYXMiLCJlZGdlcyIsInBvaW50cyIsImdsb2JhbF9kYXRhIiwiYXJlYVRvQ2VudGVyQnkiLCJmb2N1c2VkRXZlbnQiLCJob3ZlcmVkRXZlbnQiLCJfcmVmJGhpZGVFZGdlcyIsImhpZGVFZGdlcyIsIl9yZWYkbWFwQm94U3R5bGUiLCJtYXBCb3hTdHlsZSIsImxlYWZsZXRNYXAiLCJtYXBEZWZhdWx0IiwiY2hpbGRyZW4iLCJfcmVmJGluY2x1ZGVVbm1vbml0b3IiLCJpbmNsdWRlVW5tb25pdG9yZWRQb2ludHMiLCJfcmVmJGluY2x1ZGVVbm1vbml0b3IyIiwiaW5jbHVkZVVubW9uaXRvcmVkRGVzY2VuZGFudHNGb3JFZGdlcyIsIl9yZWYkZm9yRXZlbnRzVmlldyIsImZvckV2ZW50c1ZpZXciLCJfcmVmJHN0eWxlIiwic3R5bGUiLCJfcmVmJGZvcldXVFBEYXNoYm9hcmQiLCJmb3JXV1RQRGFzaGJvYXJkIiwibWFwIiwibWFwUmVmIiwidXNlUmVmIiwiZGlzcGF0Y2giLCJ1c2VEaXNwYXRjaCIsIl91c2VTdGF0ZSIsInVzZVN0YXRlIiwiX3VzZVN0YXRlMiIsIl9zbGljZWRUb0FycmF5MiIsIm1hcFpvb21MZXZlbCIsInNldE1hcFpvb21MZXZlbCIsIl91c2VTZWxlY3RlZEl0ZW0iLCJ1c2VTZWxlY3RlZEl0ZW0iLCJzZWxlY3RlZEl0ZW0iLCJfdXNlU3RhdGUzIiwiX3VzZVN0YXRlNCIsImVkZ2VzQ2hlY2tib3giLCJzZXRFZGdlc0NoZWNrYm94IiwiX3VzZVN0YXRlNSIsIl91c2VTdGF0ZTYiLCJvbmx5TW9uaXRvcmVkUG9pbnRzIiwic2V0T25seU1vbml0b3JlZFBvaW50cyIsIl91c2VTdGF0ZTciLCJfdXNlU3RhdGU4Iiwib25seVdpdGhTYW1wbGVyUG9pbnRzIiwic2V0T25seVdpdGhTYW1wbGVyUG9pbnRzIiwiZWRnZXNDaGVja2JveFJlZiIsImhvdmVyZWRFdmVudFByZXNlbnQiLCJ1c2VNZW1vIiwidW5kZWZpbmVkIiwiZm9jdXNlZEV2ZW50UHJlc2VudCIsIl91c2VTdGF0ZTkiLCJsYXllckdyb3VwIiwiX3VzZVN0YXRlMTAiLCJmYWN0b3JpZXNQYXJlbnRHcm91cCIsIl91c2VTdGF0ZTExIiwiX3VzZVN0YXRlMTIiLCJ1bm1vbml0b3JlZEZhY3Rvcmllc0dyb3VwIiwiX3VzZVN0YXRlMTMiLCJfdXNlU3RhdGUxNCIsIm1vbml0b3JlZEZhY3Rvcmllc0dyb3VwIiwiX3VzZVN0YXRlMTUiLCJfdXNlU3RhdGUxNiIsInVubW9uaXRvcmVkRWRnZXNHcm91cCIsIl91c2VTdGF0ZTE3IiwiX3VzZVN0YXRlMTgiLCJtb25pdG9yZWRFZGdlc0dyb3VwIiwiX3VzZVN0YXRlMTkiLCJfdXNlU3RhdGUyMCIsInd3dHBzTGF5ZXJHcm91cCIsIl91c2VTdGF0ZTIxIiwiX3VzZVN0YXRlMjIiLCJjb2xsZWN0b3JzTGF5ZXJHcm91cCIsIl91c2VTdGF0ZTIzIiwiRmVhdHVyZUdyb3VwIiwiX3VzZVN0YXRlMjQiLCJhcmVhc0xheWVyR3JvdXAiLCJyZW5kZXJQb2ludE1hcmtlcnMiLCJmaWx0ZXJlZFBvaW50cyIsInByb3BzIiwiY3VycmVudCIsImNyZWF0ZUVsZW1lbnQiLCJQb2ludE1hcmtlcnMiLCJhc3NpZ24iLCJtZW1vaXplZE1vbml0b3JlZFBvaW50cyIsIm1vbml0b3JlZFBvaW50cyIsImZpbHRlclBvaW50cyIsIm9ubHlNb25pdG9yZWQiLCJyZXJlbmRlciIsInpvb21MZXZlbHMiLCJmYWN0b3JpZXNHcm91cCIsInd3dHBzR3JvdXAiLCJjb2xsZWN0b3JzR3JvdXAiLCJtZW1vaXplZFVubW9uaXRvcmVkUG9pbnRzIiwidW5tb25pdG9yZWRQb2ludHMiLCJyZW5kZXJFZGdlcyIsImZpbHRlcmVkRWRnZXMiLCJtZW1vaXplZEVkZ2VzIiwibW9uaXRvcmVkRWRnZXMiLCJmaWx0ZXJFZGdlcyIsImhpZGVBcnJvd3MiLCJhbGxvd1VubW9uaXRvcmVkRGVzY2VuZGFudHMiLCJncm91cCIsIm1lbW9pemVkVW5tb25pdG9yZWRFZGdlcyIsInVubW9uaXRvcmVkRWRnZXMiLCJoYW5kbGVFZGdlc0NoZWNrYm94Q2hhbmdlIiwiaXNDaGVja2VkIiwiZWRnZXNab29tTGV2ZWxzIiwiaGFuZGxlUG9pbnRzQ2hlY2tib3hDaGFuZ2UiLCJ6b29tIiwiZ2V0Wm9vbSIsInJlbW92ZUxheWVyIiwicmVtb3ZlRnJvbSIsImFkZExheWVyIiwiaW5jbHVkZXMiLCJhZGRUbyIsImhhbmRsZVBvaW50c1dpdGhTYW1wbGVyQ2hlY2tib3hDaGFuZ2UiLCJyZW1vdmVQb2ludHNXaXRoTm9TYW1wbGVyIiwiZWFjaExheWVyIiwibGF5ZXIiLCJ0cmFja0xheWVyYm94Iiwic2V0dXBDaGVja2JveExpc3RlbmVyIiwiem9vbVJ1bGVzRm9yRXZlbnRzVmlldyIsInBheWxvYWQiLCJGcmFnbWVudCIsInpvb21SdWxlc0ZvckRhc2hhYm9hcmRNYXBzIiwibWVtb2l6ZWRab29tQ29udHJvbCIsIm1lbW9pemVkRXZlbnQiLCJmb2N1c2VkIiwiaG92ZXJlZCIsIkV2ZW50IiwiZXZlbnQiLCJpbmNsdWRlTmV0d29yayIsInVzZUVmZmVjdCIsImNsZWFudXAiLCJfbWFwUmVmJGN1cnJlbnQiLCJjbGVhckxheWVycyIsImV2ZW50RmlsdGVyUGFyYW0iLCJjbGVhclBvaW50cyIsImNsZWFyQXJlYXMiLCJUaWxlTGF5ZXIiLCJ3YXRlckF1dGhvcml0eUlkIiwiaW5pdGlhbGl6ZU1hcCIsInNhdGVsbGl0ZSIsImlzVmFsaWRBcmVhIiwiYXJlYSIsInNoYXBlX2RhdGEiLCJmbGF0IiwiYXJlYUZvY3VzTG9naWMiLCJfbWFwUmVmJGN1cnJlbnQyIiwiY2xpY2tlZCIsImthbmRvX29iamVjdF9pZCIsImlzUG9wdXBPcGVuIiwiTWFya2VyIiwiZmlyZSIsIlBvbHlnb24iLCJyZW5kZXJBcmVhcyIsInNob3VsZExvYWRNYXBPYmplY3RzIiwiQXJlYVBvbHlnb25zIiwibWFwWm9vbSIsImZlYXR1cmVHcm91cCIsImNsYXNzTmFtZSIsImNvbmNhdCIsInNpZGVuYXZFeHBhbmRlZCIsImlkIiwic2hvdWRMb2FkRGVwZW5kZW50TWFwT2JqZWN0cyIsImV4cG9ydHMiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvV2lkZ2V0cy9NYXAvTWFwLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBAdHMtaWdub3JlXG5pbXBvcnQgKiBhcyBMIGZyb20gJ2xlYWZsZXQnO1xuaW1wb3J0ICdzcmMvdXRpbGl0aWVzL3BvbHlsaW5lZGVjb3JhdG9yJztcbmltcG9ydCAnbGVhZmxldC5tYXJrZXJjbHVzdGVyJztcbmltcG9ydCAnbGVhZmxldC5wYXR0ZXJuJztcbmltcG9ydCAnbGVhZmxldC5oZWF0JztcbmltcG9ydCBSZWFjdCwge1xuICBDU1NQcm9wZXJ0aWVzLFxuICB1c2VFZmZlY3QsXG4gIHVzZU1lbW8sXG4gIHVzZVJlZixcbiAgdXNlU3RhdGUsXG59IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHVzZURpc3BhdGNoIH0gZnJvbSAncmVhY3QtcmVkdXgnO1xuaW1wb3J0IHsgSUFyZWEgfSBmcm9tICdzcmMvc3RvcmUvYXJlYXMvbW9kZWxzL0lBcmVhJztcbmltcG9ydCB7IElFZGdlIH0gZnJvbSAnc3JjL3N0b3JlL2VkZ2VzL21vZGVscy9JRWRnZSc7XG5pbXBvcnQgeyBJRXZlbnQgfSBmcm9tICdzcmMvc3RvcmUvZXZlbnRzL21vZGVscy9JRXZlbnQnO1xuaW1wb3J0IHsgSUdsb2JhbFN0YXRlIH0gZnJvbSAnc3JjL3N0b3JlL2dsb2JhbC9tb2RlbHMvSUdsb2JhbFN0YXRlJztcbmltcG9ydCB7IElQb2ludCB9IGZyb20gJ3NyYy9zdG9yZS9wb2ludHMvbW9kZWxzL0lQb2ludCc7XG5pbXBvcnQgRXJyb3JCb3VuZGFyeSBmcm9tICdzcmMvdXRpbGl0aWVzL0Vycm9yQm91bmRhcnknO1xuaW1wb3J0IHsgQXJlYVBvbHlnb25zIH0gZnJvbSAnLi9hcmVhcy9BcmVhUG9seWdvbnMnO1xuaW1wb3J0IEVkZ2VzIGZyb20gJy4vZWRnZXMvRWRnZXMnO1xuaW1wb3J0ICcuL01hcC5zY3NzJztcbmltcG9ydCAnLi9wb2ludHMvUG9pbnRJY29uLnNjc3MnO1xuaW1wb3J0IHsgUG9pbnRNYXJrZXJzIH0gZnJvbSAnLi9wb2ludHMvUG9pbnRNYXJrZXJzJztcbmltcG9ydCB7IEV2ZW50IH0gZnJvbSAnLi9ldmVudHMvRXZlbnQnO1xuaW1wb3J0IHtcbiAgYXJlYUZvY3VzTG9naWMsXG4gIGZpbHRlckVkZ2VzLFxuICBmaWx0ZXJQb2ludHMsXG4gIGluaXRpYWxpemVNYXAsXG4gIGlzVmFsaWRBcmVhLFxuICBzZXR1cENoZWNrYm94TGlzdGVuZXIsXG4gIHNob3VkTG9hZERlcGVuZGVudE1hcE9iamVjdHMsXG4gIHNob3VsZExvYWRNYXBPYmplY3RzLFxuICB6b29tTGV2ZWxzLFxufSBmcm9tICcuL01hcFV0aWxzJztcbmltcG9ydCB7IGxlYWZsZXRNYXAgfSBmcm9tICcuLi8uLi9zdHlsZXMvdGhlbWUvdGhlbWUnO1xuaW1wb3J0IHsgdXNlU2VsZWN0ZWRJdGVtIH0gZnJvbSAnc3JjL3BhZ2VzL0Rhc2hib2FyZE1hcC9MaXN0Q29udGV4dCc7XG5pbXBvcnQgeyBjbGVhckFyZWFzIH0gZnJvbSAnc3JjL3N0b3JlL2FyZWFzL2FjdGlvbnMnO1xuaW1wb3J0IHsgY2xlYXJQb2ludHMgfSBmcm9tICdzcmMvc3RvcmUvcG9pbnRzL2FjdGlvbnMnO1xucmVxdWlyZSgnbGVhZmxldC5tYXJrZXJjbHVzdGVyJyk7XG5cbmludGVyZmFjZSBNYXBQcm9wcyB7XG4gIGFyZWFzOiBJQXJlYVtdO1xuICBlZGdlcz86IElFZGdlW107XG4gIHBvaW50cz86IElQb2ludFtdO1xuICBnbG9iYWxfZGF0YTogSUdsb2JhbFN0YXRlO1xuICBhcmVhVG9DZW50ZXJCeT86IGFueTtcbiAgZm9jdXNlZEV2ZW50PzogSUV2ZW50IHwgbnVsbDtcbiAgaG92ZXJlZEV2ZW50PzogSUV2ZW50IHwgbnVsbDtcbiAgaGlkZUVkZ2VzPzogYm9vbGVhbjtcbiAgbWFwQm94U3R5bGU/OiBzdHJpbmc7XG4gIGNoaWxkcmVuPzogYW55O1xuICBzdHlsZT86IENTU1Byb3BlcnRpZXM7XG4gIGluY2x1ZGVVbm1vbml0b3JlZFBvaW50cz86IGJvb2xlYW47XG4gIGluY2x1ZGVVbm1vbml0b3JlZERlc2NlbmRhbnRzRm9yRWRnZXM/OiBib29sZWFuO1xuICBmb3JFdmVudHNWaWV3OiBib29sZWFuO1xuICBmb3JXV1RQRGFzaGJvYXJkPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGNvbnN0IE1hcDogUmVhY3QuRkM8TWFwUHJvcHM+ID0gKHtcbiAgYXJlYXMsXG4gIGVkZ2VzLFxuICBwb2ludHMsXG4gIGdsb2JhbF9kYXRhLFxuICBhcmVhVG9DZW50ZXJCeSxcbiAgZm9jdXNlZEV2ZW50LFxuICBob3ZlcmVkRXZlbnQsXG4gIGhpZGVFZGdlcyA9IGZhbHNlLFxuICBtYXBCb3hTdHlsZSA9IGxlYWZsZXRNYXAubWFwRGVmYXVsdCxcbiAgY2hpbGRyZW4sXG4gIGluY2x1ZGVVbm1vbml0b3JlZFBvaW50cyA9IHRydWUsXG4gIGluY2x1ZGVVbm1vbml0b3JlZERlc2NlbmRhbnRzRm9yRWRnZXMgPSBmYWxzZSxcbiAgZm9yRXZlbnRzVmlldyA9IGZhbHNlLFxuICBzdHlsZSA9IHt9LFxuICBmb3JXV1RQRGFzaGJvYXJkID0gZmFsc2UsXG59KSA9PiB7XG4gIGNvbnN0IHsgbWFwIH0gPSBnbG9iYWxfZGF0YTtcbiAgY29uc3QgbWFwUmVmID0gdXNlUmVmPEwuTWFwIHwgbnVsbD4obnVsbCk7XG4gIGNvbnN0IGRpc3BhdGNoID0gdXNlRGlzcGF0Y2goKTtcbiAgY29uc3QgW21hcFpvb21MZXZlbCwgc2V0TWFwWm9vbUxldmVsXSA9IHVzZVN0YXRlKDIpO1xuICBjb25zdCB7IHNlbGVjdGVkSXRlbSB9ID0gdXNlU2VsZWN0ZWRJdGVtKCk7XG4gIGNvbnN0IFtlZGdlc0NoZWNrYm94LCBzZXRFZGdlc0NoZWNrYm94XSA9IHVzZVN0YXRlKHRydWUpO1xuICBjb25zdCBbb25seU1vbml0b3JlZFBvaW50cywgc2V0T25seU1vbml0b3JlZFBvaW50c10gPSB1c2VTdGF0ZShmYWxzZSk7XG4gIGNvbnN0IFtvbmx5V2l0aFNhbXBsZXJQb2ludHMsIHNldE9ubHlXaXRoU2FtcGxlclBvaW50c10gPSB1c2VTdGF0ZShmYWxzZSk7XG4gIGNvbnN0IGVkZ2VzQ2hlY2tib3hSZWYgPSB1c2VSZWYoZWRnZXNDaGVja2JveCk7XG5cbiAgY29uc3QgaG92ZXJlZEV2ZW50UHJlc2VudCA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIHJldHVybiBob3ZlcmVkRXZlbnQgIT09IG51bGwgJiYgaG92ZXJlZEV2ZW50ICE9PSB1bmRlZmluZWQ7XG4gIH0sIFtob3ZlcmVkRXZlbnRdKTtcblxuICBjb25zdCBmb2N1c2VkRXZlbnRQcmVzZW50ID0gdXNlTWVtbygoKSA9PiB7XG4gICAgcmV0dXJuIGZvY3VzZWRFdmVudCAhPT0gbnVsbCAmJiBmb2N1c2VkRXZlbnQgIT09IHVuZGVmaW5lZDtcbiAgfSwgW2ZvY3VzZWRFdmVudF0pO1xuXG4gIC8vIEFkZCBwYXJlbnQgbGF5ZXIgZ3JvdXAgZm9yIGFsbCBmYWN0b3JpZXNcbiAgY29uc3QgW2ZhY3Rvcmllc1BhcmVudEdyb3VwXSA9IHVzZVN0YXRlKEwubGF5ZXJHcm91cCgpKTtcbiAgY29uc3QgW3VubW9uaXRvcmVkRmFjdG9yaWVzR3JvdXBdID0gdXNlU3RhdGUoTC5sYXllckdyb3VwKCkpO1xuICBjb25zdCBbbW9uaXRvcmVkRmFjdG9yaWVzR3JvdXBdID0gdXNlU3RhdGUoTC5sYXllckdyb3VwKCkpO1xuICBjb25zdCBbdW5tb25pdG9yZWRFZGdlc0dyb3VwXSA9IHVzZVN0YXRlKEwubGF5ZXJHcm91cCgpKTtcbiAgY29uc3QgW21vbml0b3JlZEVkZ2VzR3JvdXBdID0gdXNlU3RhdGUoTC5sYXllckdyb3VwKCkpO1xuICBjb25zdCBbd3d0cHNMYXllckdyb3VwXSA9IHVzZVN0YXRlKEwubGF5ZXJHcm91cCgpKTtcbiAgY29uc3QgW2NvbGxlY3RvcnNMYXllckdyb3VwXSA9IHVzZVN0YXRlKEwubGF5ZXJHcm91cCgpKTtcbiAgY29uc3QgW2FyZWFzTGF5ZXJHcm91cF0gPSB1c2VTdGF0ZShuZXcgTC5GZWF0dXJlR3JvdXAoKSk7XG5cbiAgY29uc3QgcmVuZGVyUG9pbnRNYXJrZXJzID0gKGZpbHRlcmVkUG9pbnRzLCBtYXBSZWYsIHByb3BzKSA9PlxuICAgIG1hcFJlZi5jdXJyZW50ICE9PSBudWxsICYmXG4gICAgcG9pbnRzICYmIChcbiAgICAgIDxQb2ludE1hcmtlcnMgbWFwPXttYXBSZWYuY3VycmVudH0gcG9pbnRzPXtmaWx0ZXJlZFBvaW50c30gey4uLnByb3BzfSAvPlxuICAgICk7XG5cbiAgY29uc3QgbWVtb2l6ZWRNb25pdG9yZWRQb2ludHMgPSB1c2VNZW1vKCgpID0+IHtcbiAgICBjb25zdCBtb25pdG9yZWRQb2ludHMgPSBmaWx0ZXJQb2ludHMocG9pbnRzLCB7IG9ubHlNb25pdG9yZWQ6IHRydWUgfSk7XG5cbiAgICByZW5kZXJQb2ludE1hcmtlcnMoW10sIG1hcFJlZiwge30pO1xuICAgIHJldHVybiByZW5kZXJQb2ludE1hcmtlcnMobW9uaXRvcmVkUG9pbnRzLCBtYXBSZWYsIHtcbiAgICAgIGluY2x1ZGVVbm1vbml0b3JlZFBvaW50czogdHJ1ZSxcbiAgICAgIHJlcmVuZGVyOiB6b29tTGV2ZWxzW21hcFpvb21MZXZlbF0sXG4gICAgICBmYWN0b3JpZXNHcm91cDogbW9uaXRvcmVkRmFjdG9yaWVzR3JvdXAsXG4gICAgICB3d3Rwc0dyb3VwOiB3d3Rwc0xheWVyR3JvdXAsXG4gICAgICBjb2xsZWN0b3JzR3JvdXA6IGNvbGxlY3RvcnNMYXllckdyb3VwLFxuICAgICAgZm9yRXZlbnRzVmlldzogZm9yRXZlbnRzVmlldyxcbiAgICB9KTtcbiAgfSwgW3BvaW50cywgbWFwWm9vbUxldmVsLCBvbmx5V2l0aFNhbXBsZXJQb2ludHNdKTtcblxuICBjb25zdCBtZW1vaXplZFVubW9uaXRvcmVkUG9pbnRzID0gdXNlTWVtbygoKSA9PiB7XG4gICAgY29uc3QgdW5tb25pdG9yZWRQb2ludHMgPSBmaWx0ZXJQb2ludHMocG9pbnRzLCB7IG9ubHlNb25pdG9yZWQ6IGZhbHNlIH0pO1xuICAgIHJldHVybiByZW5kZXJQb2ludE1hcmtlcnModW5tb25pdG9yZWRQb2ludHMsIG1hcFJlZiwge1xuICAgICAgaW5jbHVkZVVubW9uaXRvcmVkUG9pbnRzOiB0cnVlLFxuICAgICAgcmVyZW5kZXI6IHpvb21MZXZlbHNbbWFwWm9vbUxldmVsXSxcbiAgICAgIGZhY3Rvcmllc0dyb3VwOiB1bm1vbml0b3JlZEZhY3Rvcmllc0dyb3VwLFxuICAgICAgd3d0cHNHcm91cDogd3d0cHNMYXllckdyb3VwLFxuICAgICAgY29sbGVjdG9yc0dyb3VwOiBjb2xsZWN0b3JzTGF5ZXJHcm91cCxcbiAgICAgIGZvckV2ZW50c1ZpZXc6IGZvckV2ZW50c1ZpZXcsXG4gICAgfSk7XG4gIH0sIFtwb2ludHMsIG1hcFpvb21MZXZlbF0pO1xuXG4gIGNvbnN0IHJlbmRlckVkZ2VzID0gKGZpbHRlcmVkRWRnZXMsIG1hcFJlZiwgZWRnZXNDaGVja2JveCwgcHJvcHMpID0+XG4gICAgbWFwUmVmLmN1cnJlbnQgIT09IG51bGwgJiZcbiAgICBlZGdlc0NoZWNrYm94ICYmIChcbiAgICAgIDxFZGdlcyBlZGdlcz17ZmlsdGVyZWRFZGdlc30gbWFwPXttYXBSZWYuY3VycmVudH0gey4uLnByb3BzfSAvPlxuICAgICk7XG5cbiAgY29uc3QgbWVtb2l6ZWRFZGdlcyA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIGNvbnN0IG1vbml0b3JlZEVkZ2VzID0gZmlsdGVyRWRnZXMoZWRnZXMsIHBvaW50cywgdHJ1ZSk7XG4gICAgcmV0dXJuIHJlbmRlckVkZ2VzKG1vbml0b3JlZEVkZ2VzLCBtYXBSZWYsIGVkZ2VzQ2hlY2tib3gsIHtcbiAgICAgIEwsXG4gICAgICBwb2ludHMsXG4gICAgICBoaWRlRWRnZXM6IGZhbHNlLFxuICAgICAgaGlkZUFycm93czogdHJ1ZSxcbiAgICAgIGFsbG93VW5tb25pdG9yZWREZXNjZW5kYW50czogaW5jbHVkZVVubW9uaXRvcmVkRGVzY2VuZGFudHNGb3JFZGdlcyxcbiAgICAgIGdyb3VwOiBtb25pdG9yZWRFZGdlc0dyb3VwLFxuICAgIH0pO1xuICB9LCBbcG9pbnRzLCBlZGdlc0NoZWNrYm94LCBtYXBab29tTGV2ZWxdKTtcblxuICBjb25zdCBtZW1vaXplZFVubW9uaXRvcmVkRWRnZXMgPSB1c2VNZW1vKCgpID0+IHtcbiAgICBpZiAob25seU1vbml0b3JlZFBvaW50cyB8fCBvbmx5V2l0aFNhbXBsZXJQb2ludHMpIHJldHVybiBudWxsO1xuXG4gICAgY29uc3QgdW5tb25pdG9yZWRFZGdlcyA9IGZpbHRlckVkZ2VzKGVkZ2VzLCBwb2ludHMsIGZhbHNlKTtcbiAgICByZXR1cm4gcmVuZGVyRWRnZXModW5tb25pdG9yZWRFZGdlcywgbWFwUmVmLCBlZGdlc0NoZWNrYm94LCB7XG4gICAgICBMLFxuICAgICAgcG9pbnRzLFxuICAgICAgaGlkZUVkZ2VzOiBmYWxzZSxcbiAgICAgIGhpZGVBcnJvd3M6IHRydWUsXG4gICAgICBhbGxvd1VubW9uaXRvcmVkRGVzY2VuZGFudHM6IGluY2x1ZGVVbm1vbml0b3JlZERlc2NlbmRhbnRzRm9yRWRnZXMsXG4gICAgICBncm91cDogdW5tb25pdG9yZWRFZGdlc0dyb3VwLFxuICAgIH0pO1xuICB9LCBbcG9pbnRzLCBlZGdlc0NoZWNrYm94LCBtYXBab29tTGV2ZWxdKTtcblxuICBjb25zdCBoYW5kbGVFZGdlc0NoZWNrYm94Q2hhbmdlID0gKGlzQ2hlY2tlZCkgPT4ge1xuICAgIHNldEVkZ2VzQ2hlY2tib3goaXNDaGVja2VkKTtcbiAgfTtcblxuICAvLyBUaGlzIHZhcmlhYmxlIHN0b3JlcyB0aGUgem9vbSBsZXZlbHMgdGhlIGVkZ2VzIGFyZSBkaXNwbGF5ZWRcbiAgLy8gSXQgaXMgdXNlZCBpbiB0d28gcGxhY2VzIGluIHRoZSBjb2RlLCBzbyBpdCBpcyBiZXR0ZXIgdG8gc3RvcmUgaXQgaW4gb25lIHBsYWNlXG4gIGNvbnN0IGVkZ2VzWm9vbUxldmVscyA9IFsnU21hbGwnLCAnTWVkaXVtJywgJ01MYXJnZScsICdMYXJnZSddO1xuXG4gIGNvbnN0IGhhbmRsZVBvaW50c0NoZWNrYm94Q2hhbmdlID0gKGlzQ2hlY2tlZCkgPT4ge1xuICAgIHNldE9ubHlNb25pdG9yZWRQb2ludHMoaXNDaGVja2VkKTtcbiAgICBpZiAobWFwUmVmLmN1cnJlbnQgIT09IG51bGwpIHtcbiAgICAgIGxldCB6b29tID0gem9vbUxldmVsc1ttYXBSZWYuY3VycmVudC5nZXRab29tKCldO1xuXG4gICAgICBpZiAoaXNDaGVja2VkKSB7XG4gICAgICAgIC8vIEhpZGUgdW5tb25pdG9yZWQgcG9pbnRzIHdoZW4gXCJzaG93IG9ubHkgbW9uaXRvcmVkXCIgaXMgY2hlY2tlZFxuICAgICAgICBmYWN0b3JpZXNQYXJlbnRHcm91cC5yZW1vdmVMYXllcih1bm1vbml0b3JlZEZhY3Rvcmllc0dyb3VwKTtcbiAgICAgICAgdW5tb25pdG9yZWRFZGdlc0dyb3VwLnJlbW92ZUZyb20obWFwUmVmLmN1cnJlbnQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gU2hvdyBhbGwgcG9pbnRzIHdoZW4gXCJzaG93IG9ubHkgbW9uaXRvcmVkXCIgaXMgdW5jaGVja2VkXG4gICAgICAgIGZhY3Rvcmllc1BhcmVudEdyb3VwLmFkZExheWVyKHVubW9uaXRvcmVkRmFjdG9yaWVzR3JvdXApO1xuXG4gICAgICAgIC8vIFNob3cgdW5tb25pdG9yZWQgZWRnZXMgaWYgYXQgYXBwcm9wcmlhdGUgem9vbSBsZXZlbFxuICAgICAgICBpZiAoZWRnZXNDaGVja2JveFJlZi5jdXJyZW50ICYmIGVkZ2VzWm9vbUxldmVscy5pbmNsdWRlcyh6b29tKSkge1xuICAgICAgICAgIHVubW9uaXRvcmVkRWRnZXNHcm91cC5hZGRUbyhtYXBSZWYuY3VycmVudCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlUG9pbnRzV2l0aFNhbXBsZXJDaGVja2JveENoYW5nZSA9IChpc0NoZWNrZWQpID0+IHtcbiAgICBzZXRPbmx5V2l0aFNhbXBsZXJQb2ludHMoaXNDaGVja2VkKTtcblxuICAgIGNvbnN0IHJlbW92ZVBvaW50c1dpdGhOb1NhbXBsZXIgPSAoZ3JvdXApID0+IHtcbiAgICAgIGdyb3VwLmVhY2hMYXllcigobGF5ZXIpID0+IHtcbiAgICAgICAgaWYgKGxheWVyWydrYW5kb19oYXNfc2FtcGxlciddID09PSBmYWxzZSkge1xuICAgICAgICAgIGdyb3VwLnJlbW92ZUxheWVyKGxheWVyKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfTtcblxuICAgIGlmIChtYXBSZWYuY3VycmVudCAhPT0gbnVsbCkge1xuICAgICAgaWYgKGlzQ2hlY2tlZCkge1xuICAgICAgICBmYWN0b3JpZXNQYXJlbnRHcm91cC5yZW1vdmVMYXllcih1bm1vbml0b3JlZEZhY3Rvcmllc0dyb3VwKTtcbiAgICAgICAgdW5tb25pdG9yZWRFZGdlc0dyb3VwLnJlbW92ZUZyb20obWFwUmVmLmN1cnJlbnQpO1xuICAgICAgICByZW1vdmVQb2ludHNXaXRoTm9TYW1wbGVyKG1vbml0b3JlZEZhY3Rvcmllc0dyb3VwKTtcbiAgICAgICAgcmVtb3ZlUG9pbnRzV2l0aE5vU2FtcGxlcih3d3Rwc0xheWVyR3JvdXApO1xuICAgICAgICByZW1vdmVQb2ludHNXaXRoTm9TYW1wbGVyKGNvbGxlY3RvcnNMYXllckdyb3VwKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGxldCB6b29tID0gem9vbUxldmVsc1ttYXBSZWYuY3VycmVudC5nZXRab29tKCldO1xuICAgICAgICBmYWN0b3JpZXNQYXJlbnRHcm91cC5hZGRMYXllcih1bm1vbml0b3JlZEZhY3Rvcmllc0dyb3VwKTtcblxuICAgICAgICAvLyBTaG93IHVubW9uaXRvcmVkIGVkZ2VzIGlmIGF0IGFwcHJvcHJpYXRlIHpvb20gbGV2ZWxcbiAgICAgICAgaWYgKGVkZ2VzQ2hlY2tib3hSZWYuY3VycmVudCAmJiBlZGdlc1pvb21MZXZlbHMuaW5jbHVkZXMoem9vbSkpIHtcbiAgICAgICAgICB1bm1vbml0b3JlZEVkZ2VzR3JvdXAuYWRkVG8obWFwUmVmLmN1cnJlbnQpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IHRyYWNrTGF5ZXJib3ggPSAoKSA9PiB7XG4gICAgc2V0dXBDaGVja2JveExpc3RlbmVyKCcjZWRnZXMtY2hlY2tib3gnLCBoYW5kbGVFZGdlc0NoZWNrYm94Q2hhbmdlKTtcbiAgICBzZXR1cENoZWNrYm94TGlzdGVuZXIoXG4gICAgICAnI21vbml0b3JlZC1wb2ludHMtY2hlY2tib3gnLFxuICAgICAgaGFuZGxlUG9pbnRzQ2hlY2tib3hDaGFuZ2UsXG4gICAgKTtcbiAgICBzZXR1cENoZWNrYm94TGlzdGVuZXIoXG4gICAgICAnI21vbml0b3JlZC1wb2ludHMtd2l0aC1zYW1wbGVyLWNoZWNrYm94JyxcbiAgICAgIGhhbmRsZVBvaW50c1dpdGhTYW1wbGVyQ2hlY2tib3hDaGFuZ2UsXG4gICAgKTtcbiAgfTtcblxuICBjb25zdCB6b29tUnVsZXNGb3JFdmVudHNWaWV3ID0gKCkgPT4ge1xuICAgIGNvbnN0IHBheWxvYWQgPSAoXG4gICAgICA8PlxuICAgICAgICB7bWVtb2l6ZWRFZGdlc31cbiAgICAgICAge21lbW9pemVkVW5tb25pdG9yZWRFZGdlc31cbiAgICAgICAge21lbW9pemVkVW5tb25pdG9yZWRQb2ludHN9XG4gICAgICAgIHttZW1vaXplZE1vbml0b3JlZFBvaW50c31cbiAgICAgIDwvPlxuICAgICk7XG5cbiAgICByZXR1cm4gcGF5bG9hZDtcbiAgfTtcblxuICBjb25zdCB6b29tUnVsZXNGb3JEYXNoYWJvYXJkTWFwcyA9ICgpID0+IHtcbiAgICBsZXQgcGF5bG9hZCA9IChcbiAgICAgIDw+XG4gICAgICAgIHttZW1vaXplZFVubW9uaXRvcmVkUG9pbnRzfVxuICAgICAgICB7bWVtb2l6ZWRNb25pdG9yZWRQb2ludHN9XG4gICAgICA8Lz5cbiAgICApO1xuXG4gICAgaWYgKGVkZ2VzWm9vbUxldmVscy5pbmNsdWRlcyh6b29tTGV2ZWxzW21hcFpvb21MZXZlbF0pKSB7XG4gICAgICBwYXlsb2FkID0gem9vbVJ1bGVzRm9yRXZlbnRzVmlldygpO1xuICAgIH1cblxuICAgIHJldHVybiBwYXlsb2FkO1xuICB9O1xuXG4gIGNvbnN0IG1lbW9pemVkWm9vbUNvbnRyb2wgPSAoKSA9PiB7XG4gICAgY29uc3QgcGF5bG9hZCA9IGZvckV2ZW50c1ZpZXdcbiAgICAgID8gem9vbVJ1bGVzRm9yRXZlbnRzVmlldygpXG4gICAgICA6IHpvb21SdWxlc0ZvckRhc2hhYm9hcmRNYXBzKCk7XG4gICAgcmV0dXJuIHBheWxvYWQ7XG4gIH07XG5cbiAgY29uc3QgbWVtb2l6ZWRFdmVudCA9ICgpID0+IHtcbiAgICBpZiAoZm9jdXNlZEV2ZW50UHJlc2VudCkge1xuICAgICAgZm9jdXNlZEV2ZW50IS5mb2N1c2VkID0gZm9jdXNlZEV2ZW50UHJlc2VudDtcbiAgICAgIGZvY3VzZWRFdmVudCEuaG92ZXJlZCA9ICFmb2N1c2VkRXZlbnRQcmVzZW50O1xuICAgIH1cblxuICAgIGlmIChob3ZlcmVkRXZlbnRQcmVzZW50KSB7XG4gICAgICBob3ZlcmVkRXZlbnQhLmhvdmVyZWQgPSBob3ZlcmVkRXZlbnRQcmVzZW50O1xuICAgICAgaG92ZXJlZEV2ZW50IS5mb2N1c2VkID0gIWhvdmVyZWRFdmVudFByZXNlbnQ7XG4gICAgfVxuXG4gICAgaWYgKCFob3ZlcmVkRXZlbnRQcmVzZW50ICYmICFmb2N1c2VkRXZlbnRQcmVzZW50KSByZXR1cm4gPD48Lz47XG4gICAgcmV0dXJuIChcbiAgICAgIDxFdmVudFxuICAgICAgICBldmVudD17Zm9jdXNlZEV2ZW50ISB8fCBob3ZlcmVkRXZlbnQhfVxuICAgICAgICBtYXA9e21hcH1cbiAgICAgICAgZWRnZXM9e2VkZ2VzIX1cbiAgICAgICAgcG9pbnRzPXtwb2ludHMhfVxuICAgICAgICBpbmNsdWRlTmV0d29yaz17IWhvdmVyZWRFdmVudFByZXNlbnR9XG4gICAgICAvPlxuICAgICk7XG4gIH07XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBlZGdlc0NoZWNrYm94UmVmLmN1cnJlbnQgPSBlZGdlc0NoZWNrYm94O1xuICB9LCBbZWRnZXNDaGVja2JveF0pO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uIGNsZWFudXAoKSB7XG4gICAgICBjb2xsZWN0b3JzTGF5ZXJHcm91cC5jbGVhckxheWVycygpO1xuICAgICAgbWFwUmVmLmN1cnJlbnQ/LnJlbW92ZUxheWVyKGNvbGxlY3RvcnNMYXllckdyb3VwKTtcbiAgICB9O1xuICB9LCBbZm9jdXNlZEV2ZW50LCBob3ZlcmVkRXZlbnQsIGdsb2JhbF9kYXRhLmV2ZW50RmlsdGVyUGFyYW1dKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIHJldHVybiBmdW5jdGlvbiBjbGVhbnVwKCkge1xuICAgICAgaWYgKGZvckV2ZW50c1ZpZXcgJiYgbWFwUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgZGlzcGF0Y2goY2xlYXJQb2ludHMoKSk7XG4gICAgICAgIGRpc3BhdGNoKGNsZWFyQXJlYXMoKSk7XG4gICAgICAgIHd3dHBzTGF5ZXJHcm91cC5jbGVhckxheWVycygpO1xuICAgICAgICBhcmVhc0xheWVyR3JvdXAuY2xlYXJMYXllcnMoKTtcbiAgICAgICAgdW5tb25pdG9yZWRGYWN0b3JpZXNHcm91cC5jbGVhckxheWVycygpO1xuICAgICAgICBtb25pdG9yZWRGYWN0b3JpZXNHcm91cC5jbGVhckxheWVycygpO1xuICAgICAgICBmYWN0b3JpZXNQYXJlbnRHcm91cC5jbGVhckxheWVycygpO1xuICAgICAgICBtb25pdG9yZWRFZGdlc0dyb3VwLmNsZWFyTGF5ZXJzKCk7XG4gICAgICAgIGNvbGxlY3RvcnNMYXllckdyb3VwLmNsZWFyTGF5ZXJzKCk7XG4gICAgICAgIHVubW9uaXRvcmVkRWRnZXNHcm91cC5jbGVhckxheWVycygpO1xuICAgICAgICBtYXBSZWYuY3VycmVudC5yZW1vdmVMYXllcih1bm1vbml0b3JlZEVkZ2VzR3JvdXApO1xuICAgICAgICBtYXBSZWYuY3VycmVudC5yZW1vdmVMYXllcihtb25pdG9yZWRFZGdlc0dyb3VwKTtcbiAgICAgICAgbWFwUmVmLmN1cnJlbnQucmVtb3ZlTGF5ZXIod3d0cHNMYXllckdyb3VwKTtcbiAgICAgICAgbWFwUmVmLmN1cnJlbnQucmVtb3ZlTGF5ZXIoY29sbGVjdG9yc0xheWVyR3JvdXApO1xuICAgICAgICBtYXBSZWYuY3VycmVudC5yZW1vdmVMYXllcihhcmVhc0xheWVyR3JvdXApO1xuICAgICAgICBtYXBSZWYuY3VycmVudC5yZW1vdmVMYXllcihmYWN0b3JpZXNQYXJlbnRHcm91cCk7XG5cbiAgICAgICAgbWFwUmVmLmN1cnJlbnQuZWFjaExheWVyKChsYXllcikgPT4ge1xuICAgICAgICAgIGlmIChsYXllciBpbnN0YW5jZW9mIEwuVGlsZUxheWVyKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuICAgICAgICAgIG1hcFJlZi5jdXJyZW50LnJlbW92ZUxheWVyKGxheWVyKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfTtcbiAgfSwgW2dsb2JhbF9kYXRhLndhdGVyQXV0aG9yaXR5SWRdKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghbWFwUmVmLmN1cnJlbnQpIHtcbiAgICAgIGluaXRpYWxpemVNYXAoXG4gICAgICAgIG1hcFpvb21MZXZlbCxcbiAgICAgICAgbWFwQm94U3R5bGUsXG4gICAgICAgIGxlYWZsZXRNYXAuc2F0ZWxsaXRlLFxuICAgICAgICBtYXBSZWYsXG4gICAgICAgIGRpc3BhdGNoLFxuICAgICAgICBpc1ZhbGlkQXJlYSxcbiAgICAgICAgYXJlYVRvQ2VudGVyQnksXG4gICAgICAgIHNldE1hcFpvb21MZXZlbCxcbiAgICAgICAgZm9yV1dUUERhc2hib2FyZCxcbiAgICAgICAgdHJ1ZSxcbiAgICAgICAgZ2xvYmFsX2RhdGEud2F0ZXJBdXRob3JpdHlJZCxcbiAgICAgICk7XG5cbiAgICAgIC8vIEluaXRpYWxpemUgcGFyZW50IGZhY3RvcnkgZ3JvdXBcbiAgICAgIGlmIChtYXBSZWYuY3VycmVudCkge1xuICAgICAgICBmYWN0b3JpZXNQYXJlbnRHcm91cC5hZGRUbyhtYXBSZWYuY3VycmVudCk7XG4gICAgICAgIGZhY3Rvcmllc1BhcmVudEdyb3VwLmFkZExheWVyKG1vbml0b3JlZEZhY3Rvcmllc0dyb3VwKTtcbiAgICAgICAgZmFjdG9yaWVzUGFyZW50R3JvdXAuYWRkTGF5ZXIodW5tb25pdG9yZWRGYWN0b3JpZXNHcm91cCk7XG4gICAgICB9XG5cbiAgICAgIHRyYWNrTGF5ZXJib3goKTtcbiAgICB9IGVsc2Uge1xuICAgICAgc2V0TWFwWm9vbUxldmVsKG1hcFJlZi5jdXJyZW50LmdldFpvb20oKSk7XG4gICAgICBpZiAoIWFyZWFUb0NlbnRlckJ5KSB7XG4gICAgICAgIGFyZWFUb0NlbnRlckJ5ID0gYXJlYXMubWFwKChhcmVhKSA9PiBhcmVhLnNoYXBlX2RhdGEpLmZsYXQoKTtcbiAgICAgIH1cblxuICAgICAgaWYgKCFmb3JFdmVudHNWaWV3IHx8ICFmb2N1c2VkRXZlbnQpIHtcbiAgICAgICAgYXJlYUZvY3VzTG9naWMobWFwUmVmLCBpc1ZhbGlkQXJlYSwgYXJlYVRvQ2VudGVyQnkpO1xuICAgICAgfVxuICAgIH1cbiAgfSwgW2FyZWFUb0NlbnRlckJ5XSk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBsZXQgY2xpY2tlZCA9IGZhbHNlO1xuXG4gICAgbWFwUmVmLmN1cnJlbnQ/LmVhY2hMYXllcigobGF5ZXIpID0+IHtcbiAgICAgIGlmIChjbGlja2VkKSByZXR1cm47XG5cbiAgICAgIGlmIChcbiAgICAgICAgbGF5ZXI/LmthbmRvX29iamVjdF9pZCA9PT0gc2VsZWN0ZWRJdGVtICYmXG4gICAgICAgIGxheWVyLmlzUG9wdXBPcGVuKCkgPT09IGZhbHNlXG4gICAgICApIHtcbiAgICAgICAgaWYgKGxheWVyIGluc3RhbmNlb2YgTC5NYXJrZXIpIHtcbiAgICAgICAgICBsYXllci5maXJlKCdjbGljaycpO1xuICAgICAgICB9IGVsc2UgaWYgKGxheWVyIGluc3RhbmNlb2YgTC5Qb2x5Z29uKSB7XG4gICAgICAgICAgbGF5ZXIuZmlyZSgnY2xpY2stZXZlbnQnKTtcbiAgICAgICAgfVxuICAgICAgICBjbGlja2VkID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSwgW3NlbGVjdGVkSXRlbV0pO1xuXG4gIGNvbnN0IHJlbmRlckFyZWFzID0gKCkgPT4ge1xuICAgIGlmICghc2hvdWxkTG9hZE1hcE9iamVjdHMoZ2xvYmFsX2RhdGEsIG1hcFJlZiwgZWRnZXMsIHBvaW50cykpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHJldHVybiAoXG4gICAgICA8QXJlYVBvbHlnb25zXG4gICAgICAgIGFyZWFzPXthcmVhc31cbiAgICAgICAgbWFwPXttYXBSZWYuY3VycmVudH1cbiAgICAgICAgTD17TH1cbiAgICAgICAgYXJlYVRvQ2VudGVyQnk9e2FyZWFUb0NlbnRlckJ5fVxuICAgICAgICBtYXBab29tPXttYXBab29tTGV2ZWx9XG4gICAgICAgIGdsb2JhbF9kYXRhPXtnbG9iYWxfZGF0YX1cbiAgICAgICAgZmVhdHVyZUdyb3VwPXthcmVhc0xheWVyR3JvdXB9XG4gICAgICAvPlxuICAgICk7XG4gIH07XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT1cImtkLW1hcC1jb250YWluZXJcIiBzdHlsZT17c3R5bGV9PlxuICAgICAgPGRpdlxuICAgICAgICBjbGFzc05hbWU9e2AgbWFwLWNvbnRhaW5lciAke1xuICAgICAgICAgIGdsb2JhbF9kYXRhLnNpZGVuYXZFeHBhbmRlZCA/ICcnIDogJ21hcC1jb250YWluZXItLXNpZGVuYXYtY29sbGFwc2VkJ1xuICAgICAgICB9YH1cbiAgICAgID5cbiAgICAgICAgPEVycm9yQm91bmRhcnk+XG4gICAgICAgICAgPGRpdiBpZD1cIm1hcFwiPjwvZGl2PlxuICAgICAgICAgIHtyZW5kZXJBcmVhcygpfVxuICAgICAgICAgIHtzaG91ZExvYWREZXBlbmRlbnRNYXBPYmplY3RzKFxuICAgICAgICAgICAgZWRnZXMsXG4gICAgICAgICAgICBhcmVhcyxcbiAgICAgICAgICAgIGdsb2JhbF9kYXRhLFxuICAgICAgICAgICAgbWFwUmVmLFxuICAgICAgICAgICAgcG9pbnRzLFxuICAgICAgICAgICkgJiYgKFxuICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAge21lbW9pemVkRXZlbnQoKX1cbiAgICAgICAgICAgICAge21lbW9pemVkWm9vbUNvbnRyb2woKX1cbiAgICAgICAgICAgICAge2NoaWxkcmVufVxuICAgICAgICAgICAgPC8+XG4gICAgICAgICAgKX1cbiAgICAgICAgPC9FcnJvckJvdW5kYXJ5PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICk7XG59O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFDQSxJQUFBQSxDQUFBLEdBQUFDLHVCQUFBLENBQUFDLE9BQUE7QUFDQUEsT0FBQTtBQUNBQSxPQUFBO0FBQ0FBLE9BQUE7QUFDQUEsT0FBQTtBQUNBLElBQUFDLE1BQUEsR0FBQUYsdUJBQUEsQ0FBQUMsT0FBQTtBQU9BLElBQUFFLFdBQUEsR0FBQUYsT0FBQTtBQU1BLElBQUFHLGNBQUEsR0FBQUMsc0JBQUEsQ0FBQUosT0FBQTtBQUNBLElBQUFLLGFBQUEsR0FBQUwsT0FBQTtBQUNBLElBQUFNLE1BQUEsR0FBQUYsc0JBQUEsQ0FBQUosT0FBQTtBQUNBQSxPQUFBO0FBQ0FBLE9BQUE7QUFDQSxJQUFBTyxhQUFBLEdBQUFQLE9BQUE7QUFDQSxJQUFBUSxNQUFBLEdBQUFSLE9BQUE7QUFDQSxJQUFBUyxTQUFBLEdBQUFULE9BQUE7QUFXQSxJQUFBVSxNQUFBLEdBQUFWLE9BQUE7QUFDQSxJQUFBVyxZQUFBLEdBQUFYLE9BQUE7QUFDQSxJQUFBWSxRQUFBLEdBQUFaLE9BQUE7QUFDQSxJQUFBYSxTQUFBLEdBQUFiLE9BQUE7QUFBdUQsU0FBQWMseUJBQUFDLFdBQUEsZUFBQUMsT0FBQSxrQ0FBQUMsaUJBQUEsT0FBQUQsT0FBQSxRQUFBRSxnQkFBQSxPQUFBRixPQUFBLFlBQUFGLHdCQUFBLFlBQUFBLHlCQUFBQyxXQUFBLFdBQUFBLFdBQUEsR0FBQUcsZ0JBQUEsR0FBQUQsaUJBQUEsS0FBQUYsV0FBQTtBQUFBLFNBQUFoQix3QkFBQW9CLEdBQUEsRUFBQUosV0FBQSxTQUFBQSxXQUFBLElBQUFJLEdBQUEsSUFBQUEsR0FBQSxDQUFBQyxVQUFBLFdBQUFELEdBQUEsUUFBQUEsR0FBQSxhQUFBRSxPQUFBLENBQUFGLEdBQUEseUJBQUFBLEdBQUEsNEJBQUFHLE9BQUEsRUFBQUgsR0FBQSxVQUFBSSxLQUFBLEdBQUFULHdCQUFBLENBQUFDLFdBQUEsT0FBQVEsS0FBQSxJQUFBQSxLQUFBLENBQUFDLEdBQUEsQ0FBQUwsR0FBQSxZQUFBSSxLQUFBLENBQUFFLEdBQUEsQ0FBQU4sR0FBQSxTQUFBTyxNQUFBLFdBQUFDLHFCQUFBLEdBQUFDLE1BQUEsQ0FBQUMsY0FBQSxJQUFBRCxNQUFBLENBQUFFLHdCQUFBLFdBQUFDLEdBQUEsSUFBQVosR0FBQSxRQUFBWSxHQUFBLGtCQUFBSCxNQUFBLENBQUFJLFNBQUEsQ0FBQUMsY0FBQSxDQUFBQyxJQUFBLENBQUFmLEdBQUEsRUFBQVksR0FBQSxTQUFBSSxJQUFBLEdBQUFSLHFCQUFBLEdBQUFDLE1BQUEsQ0FBQUUsd0JBQUEsQ0FBQVgsR0FBQSxFQUFBWSxHQUFBLGNBQUFJLElBQUEsS0FBQUEsSUFBQSxDQUFBVixHQUFBLElBQUFVLElBQUEsQ0FBQUMsR0FBQSxLQUFBUixNQUFBLENBQUFDLGNBQUEsQ0FBQUgsTUFBQSxFQUFBSyxHQUFBLEVBQUFJLElBQUEsWUFBQVQsTUFBQSxDQUFBSyxHQUFBLElBQUFaLEdBQUEsQ0FBQVksR0FBQSxTQUFBTCxNQUFBLENBQUFKLE9BQUEsR0FBQUgsR0FBQSxNQUFBSSxLQUFBLElBQUFBLEtBQUEsQ0FBQWEsR0FBQSxDQUFBakIsR0FBQSxFQUFBTyxNQUFBLFlBQUFBLE1BQUE7QUF4Q3ZEOztBQXlDQTFCLE9BQU8sQ0FBQyx1QkFBdUIsQ0FBQztBQW9CekIsSUFBTXFDLEdBQXVCLEdBQUcsU0FBMUJBLEdBQXVCQSxDQUFBQyxJQUFBLEVBZ0I5QjtFQUFBLElBZkpDLEtBQUssR0FBQUQsSUFBQSxDQUFMQyxLQUFLO0lBQ0xDLEtBQUssR0FBQUYsSUFBQSxDQUFMRSxLQUFLO0lBQ0xDLE1BQU0sR0FBQUgsSUFBQSxDQUFORyxNQUFNO0lBQ05DLFdBQVcsR0FBQUosSUFBQSxDQUFYSSxXQUFXO0lBQ1hDLGNBQWMsR0FBQUwsSUFBQSxDQUFkSyxjQUFjO0lBQ2RDLFlBQVksR0FBQU4sSUFBQSxDQUFaTSxZQUFZO0lBQ1pDLFlBQVksR0FBQVAsSUFBQSxDQUFaTyxZQUFZO0lBQUFDLGNBQUEsR0FBQVIsSUFBQSxDQUNaUyxTQUFTO0lBQVRBLFNBQVMsR0FBQUQsY0FBQSxjQUFHLEtBQUssR0FBQUEsY0FBQTtJQUFBRSxnQkFBQSxHQUFBVixJQUFBLENBQ2pCVyxXQUFXO0lBQVhBLFdBQVcsR0FBQUQsZ0JBQUEsY0FBR0UsaUJBQVUsQ0FBQ0MsVUFBVSxHQUFBSCxnQkFBQTtJQUNuQ0ksUUFBUSxHQUFBZCxJQUFBLENBQVJjLFFBQVE7SUFBQUMscUJBQUEsR0FBQWYsSUFBQSxDQUNSZ0Isd0JBQXdCO0lBQXhCQSx3QkFBd0IsR0FBQUQscUJBQUEsY0FBRyxJQUFJLEdBQUFBLHFCQUFBO0lBQUFFLHNCQUFBLEdBQUFqQixJQUFBLENBQy9Ca0IscUNBQXFDO0lBQXJDQSxxQ0FBcUMsR0FBQUQsc0JBQUEsY0FBRyxLQUFLLEdBQUFBLHNCQUFBO0lBQUFFLGtCQUFBLEdBQUFuQixJQUFBLENBQzdDb0IsYUFBYTtJQUFiQSxhQUFhLEdBQUFELGtCQUFBLGNBQUcsS0FBSyxHQUFBQSxrQkFBQTtJQUFBRSxVQUFBLEdBQUFyQixJQUFBLENBQ3JCc0IsS0FBSztJQUFMQSxLQUFLLEdBQUFELFVBQUEsY0FBRyxDQUFDLENBQUMsR0FBQUEsVUFBQTtJQUFBRSxxQkFBQSxHQUFBdkIsSUFBQSxDQUNWd0IsZ0JBQWdCO0lBQWhCQSxnQkFBZ0IsR0FBQUQscUJBQUEsY0FBRyxLQUFLLEdBQUFBLHFCQUFBO0VBRXhCLElBQVFFLEdBQUcsR0FBS3JCLFdBQVcsQ0FBbkJxQixHQUFHO0VBQ1gsSUFBTUMsTUFBTSxHQUFHLElBQUFDLGFBQU0sRUFBZSxJQUFJLENBQUM7RUFDekMsSUFBTUMsUUFBUSxHQUFHLElBQUFDLHVCQUFXLEVBQUMsQ0FBQztFQUM5QixJQUFBQyxTQUFBLEdBQXdDLElBQUFDLGVBQVEsRUFBQyxDQUFDLENBQUM7SUFBQUMsVUFBQSxPQUFBQyxlQUFBLENBQUFqRCxPQUFBLEVBQUE4QyxTQUFBO0lBQTVDSSxZQUFZLEdBQUFGLFVBQUE7SUFBRUcsZUFBZSxHQUFBSCxVQUFBO0VBQ3BDLElBQUFJLGdCQUFBLEdBQXlCLElBQUFDLDRCQUFlLEVBQUMsQ0FBQztJQUFsQ0MsWUFBWSxHQUFBRixnQkFBQSxDQUFaRSxZQUFZO0VBQ3BCLElBQUFDLFVBQUEsR0FBMEMsSUFBQVIsZUFBUSxFQUFDLElBQUksQ0FBQztJQUFBUyxVQUFBLE9BQUFQLGVBQUEsQ0FBQWpELE9BQUEsRUFBQXVELFVBQUE7SUFBakRFLGFBQWEsR0FBQUQsVUFBQTtJQUFFRSxnQkFBZ0IsR0FBQUYsVUFBQTtFQUN0QyxJQUFBRyxVQUFBLEdBQXNELElBQUFaLGVBQVEsRUFBQyxLQUFLLENBQUM7SUFBQWEsVUFBQSxPQUFBWCxlQUFBLENBQUFqRCxPQUFBLEVBQUEyRCxVQUFBO0lBQTlERSxtQkFBbUIsR0FBQUQsVUFBQTtJQUFFRSxzQkFBc0IsR0FBQUYsVUFBQTtFQUNsRCxJQUFBRyxVQUFBLEdBQTBELElBQUFoQixlQUFRLEVBQUMsS0FBSyxDQUFDO0lBQUFpQixVQUFBLE9BQUFmLGVBQUEsQ0FBQWpELE9BQUEsRUFBQStELFVBQUE7SUFBbEVFLHFCQUFxQixHQUFBRCxVQUFBO0lBQUVFLHdCQUF3QixHQUFBRixVQUFBO0VBQ3RELElBQU1HLGdCQUFnQixHQUFHLElBQUF4QixhQUFNLEVBQUNjLGFBQWEsQ0FBQztFQUU5QyxJQUFNVyxtQkFBbUIsR0FBRyxJQUFBQyxjQUFPLEVBQUMsWUFBTTtJQUN4QyxPQUFPOUMsWUFBWSxLQUFLLElBQUksSUFBSUEsWUFBWSxLQUFLK0MsU0FBUztFQUM1RCxDQUFDLEVBQUUsQ0FBQy9DLFlBQVksQ0FBQyxDQUFDO0VBRWxCLElBQU1nRCxtQkFBbUIsR0FBRyxJQUFBRixjQUFPLEVBQUMsWUFBTTtJQUN4QyxPQUFPL0MsWUFBWSxLQUFLLElBQUksSUFBSUEsWUFBWSxLQUFLZ0QsU0FBUztFQUM1RCxDQUFDLEVBQUUsQ0FBQ2hELFlBQVksQ0FBQyxDQUFDOztFQUVsQjtFQUNBLElBQUFrRCxVQUFBLEdBQStCLElBQUF6QixlQUFRLEVBQUN2RSxDQUFDLENBQUNpRyxVQUFVLENBQUMsQ0FBQyxDQUFDO0lBQUFDLFdBQUEsT0FBQXpCLGVBQUEsQ0FBQWpELE9BQUEsRUFBQXdFLFVBQUE7SUFBaERHLG9CQUFvQixHQUFBRCxXQUFBO0VBQzNCLElBQUFFLFdBQUEsR0FBb0MsSUFBQTdCLGVBQVEsRUFBQ3ZFLENBQUMsQ0FBQ2lHLFVBQVUsQ0FBQyxDQUFDLENBQUM7SUFBQUksV0FBQSxPQUFBNUIsZUFBQSxDQUFBakQsT0FBQSxFQUFBNEUsV0FBQTtJQUFyREUseUJBQXlCLEdBQUFELFdBQUE7RUFDaEMsSUFBQUUsV0FBQSxHQUFrQyxJQUFBaEMsZUFBUSxFQUFDdkUsQ0FBQyxDQUFDaUcsVUFBVSxDQUFDLENBQUMsQ0FBQztJQUFBTyxXQUFBLE9BQUEvQixlQUFBLENBQUFqRCxPQUFBLEVBQUErRSxXQUFBO0lBQW5ERSx1QkFBdUIsR0FBQUQsV0FBQTtFQUM5QixJQUFBRSxXQUFBLEdBQWdDLElBQUFuQyxlQUFRLEVBQUN2RSxDQUFDLENBQUNpRyxVQUFVLENBQUMsQ0FBQyxDQUFDO0lBQUFVLFdBQUEsT0FBQWxDLGVBQUEsQ0FBQWpELE9BQUEsRUFBQWtGLFdBQUE7SUFBakRFLHFCQUFxQixHQUFBRCxXQUFBO0VBQzVCLElBQUFFLFdBQUEsR0FBOEIsSUFBQXRDLGVBQVEsRUFBQ3ZFLENBQUMsQ0FBQ2lHLFVBQVUsQ0FBQyxDQUFDLENBQUM7SUFBQWEsV0FBQSxPQUFBckMsZUFBQSxDQUFBakQsT0FBQSxFQUFBcUYsV0FBQTtJQUEvQ0UsbUJBQW1CLEdBQUFELFdBQUE7RUFDMUIsSUFBQUUsV0FBQSxHQUEwQixJQUFBekMsZUFBUSxFQUFDdkUsQ0FBQyxDQUFDaUcsVUFBVSxDQUFDLENBQUMsQ0FBQztJQUFBZ0IsV0FBQSxPQUFBeEMsZUFBQSxDQUFBakQsT0FBQSxFQUFBd0YsV0FBQTtJQUEzQ0UsZUFBZSxHQUFBRCxXQUFBO0VBQ3RCLElBQUFFLFdBQUEsR0FBK0IsSUFBQTVDLGVBQVEsRUFBQ3ZFLENBQUMsQ0FBQ2lHLFVBQVUsQ0FBQyxDQUFDLENBQUM7SUFBQW1CLFdBQUEsT0FBQTNDLGVBQUEsQ0FBQWpELE9BQUEsRUFBQTJGLFdBQUE7SUFBaERFLG9CQUFvQixHQUFBRCxXQUFBO0VBQzNCLElBQUFFLFdBQUEsR0FBMEIsSUFBQS9DLGVBQVEsRUFBQyxJQUFJdkUsQ0FBQyxDQUFDdUgsWUFBWSxDQUFDLENBQUMsQ0FBQztJQUFBQyxXQUFBLE9BQUEvQyxlQUFBLENBQUFqRCxPQUFBLEVBQUE4RixXQUFBO0lBQWpERyxlQUFlLEdBQUFELFdBQUE7RUFFdEIsSUFBTUUsa0JBQWtCLEdBQUcsU0FBckJBLGtCQUFrQkEsQ0FBSUMsY0FBYyxFQUFFekQsTUFBTSxFQUFFMEQsS0FBSztJQUFBLE9BQ3ZEMUQsTUFBTSxDQUFDMkQsT0FBTyxLQUFLLElBQUksSUFDdkJsRixNQUFNLGlCQUNKeEMsTUFBQSxDQUFBcUIsT0FBQSxDQUFBc0csYUFBQSxDQUFDckgsYUFBQSxDQUFBc0gsWUFBWSxFQUFBakcsTUFBQSxDQUFBa0csTUFBQTtNQUFDL0QsR0FBRyxFQUFFQyxNQUFNLENBQUMyRCxPQUFRO01BQUNsRixNQUFNLEVBQUVnRjtJQUFlLEdBQUtDLEtBQUssQ0FBRyxDQUN4RTtFQUFBO0VBRUgsSUFBTUssdUJBQXVCLEdBQUcsSUFBQXBDLGNBQU8sRUFBQyxZQUFNO0lBQzVDLElBQU1xQyxlQUFlLEdBQUcsSUFBQUMsc0JBQVksRUFBQ3hGLE1BQU0sRUFBRTtNQUFFeUYsYUFBYSxFQUFFO0lBQUssQ0FBQyxDQUFDO0lBRXJFVixrQkFBa0IsQ0FBQyxFQUFFLEVBQUV4RCxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDbEMsT0FBT3dELGtCQUFrQixDQUFDUSxlQUFlLEVBQUVoRSxNQUFNLEVBQUU7TUFDakRWLHdCQUF3QixFQUFFLElBQUk7TUFDOUI2RSxRQUFRLEVBQUVDLG9CQUFVLENBQUM1RCxZQUFZLENBQUM7TUFDbEM2RCxjQUFjLEVBQUU5Qix1QkFBdUI7TUFDdkMrQixVQUFVLEVBQUV0QixlQUFlO01BQzNCdUIsZUFBZSxFQUFFcEIsb0JBQW9CO01BQ3JDekQsYUFBYSxFQUFFQTtJQUNqQixDQUFDLENBQUM7RUFDSixDQUFDLEVBQUUsQ0FBQ2pCLE1BQU0sRUFBRStCLFlBQVksRUFBRWUscUJBQXFCLENBQUMsQ0FBQztFQUVqRCxJQUFNaUQseUJBQXlCLEdBQUcsSUFBQTdDLGNBQU8sRUFBQyxZQUFNO0lBQzlDLElBQU04QyxpQkFBaUIsR0FBRyxJQUFBUixzQkFBWSxFQUFDeEYsTUFBTSxFQUFFO01BQUV5RixhQUFhLEVBQUU7SUFBTSxDQUFDLENBQUM7SUFDeEUsT0FBT1Ysa0JBQWtCLENBQUNpQixpQkFBaUIsRUFBRXpFLE1BQU0sRUFBRTtNQUNuRFYsd0JBQXdCLEVBQUUsSUFBSTtNQUM5QjZFLFFBQVEsRUFBRUMsb0JBQVUsQ0FBQzVELFlBQVksQ0FBQztNQUNsQzZELGNBQWMsRUFBRWpDLHlCQUF5QjtNQUN6Q2tDLFVBQVUsRUFBRXRCLGVBQWU7TUFDM0J1QixlQUFlLEVBQUVwQixvQkFBb0I7TUFDckN6RCxhQUFhLEVBQUVBO0lBQ2pCLENBQUMsQ0FBQztFQUNKLENBQUMsRUFBRSxDQUFDakIsTUFBTSxFQUFFK0IsWUFBWSxDQUFDLENBQUM7RUFFMUIsSUFBTWtFLFdBQVcsR0FBRyxTQUFkQSxXQUFXQSxDQUFJQyxhQUFhLEVBQUUzRSxNQUFNLEVBQUVlLGFBQWEsRUFBRTJDLEtBQUs7SUFBQSxPQUM5RDFELE1BQU0sQ0FBQzJELE9BQU8sS0FBSyxJQUFJLElBQ3ZCNUMsYUFBYSxpQkFDWDlFLE1BQUEsQ0FBQXFCLE9BQUEsQ0FBQXNHLGFBQUEsQ0FBQ3RILE1BQUEsQ0FBQWdCLE9BQUssRUFBQU0sTUFBQSxDQUFBa0csTUFBQTtNQUFDdEYsS0FBSyxFQUFFbUcsYUFBYztNQUFDNUUsR0FBRyxFQUFFQyxNQUFNLENBQUMyRDtJQUFRLEdBQUtELEtBQUssQ0FBRyxDQUMvRDtFQUFBO0VBRUgsSUFBTWtCLGFBQWEsR0FBRyxJQUFBakQsY0FBTyxFQUFDLFlBQU07SUFDbEMsSUFBTWtELGNBQWMsR0FBRyxJQUFBQyxxQkFBVyxFQUFDdEcsS0FBSyxFQUFFQyxNQUFNLEVBQUUsSUFBSSxDQUFDO0lBQ3ZELE9BQU9pRyxXQUFXLENBQUNHLGNBQWMsRUFBRTdFLE1BQU0sRUFBRWUsYUFBYSxFQUFFO01BQ3hEakYsQ0FBQyxFQUFEQSxDQUFDO01BQ0QyQyxNQUFNLEVBQU5BLE1BQU07TUFDTk0sU0FBUyxFQUFFLEtBQUs7TUFDaEJnRyxVQUFVLEVBQUUsSUFBSTtNQUNoQkMsMkJBQTJCLEVBQUV4RixxQ0FBcUM7TUFDbEV5RixLQUFLLEVBQUVwQztJQUNULENBQUMsQ0FBQztFQUNKLENBQUMsRUFBRSxDQUFDcEUsTUFBTSxFQUFFc0MsYUFBYSxFQUFFUCxZQUFZLENBQUMsQ0FBQztFQUV6QyxJQUFNMEUsd0JBQXdCLEdBQUcsSUFBQXZELGNBQU8sRUFBQyxZQUFNO0lBQzdDLElBQUlSLG1CQUFtQixJQUFJSSxxQkFBcUIsRUFBRSxPQUFPLElBQUk7SUFFN0QsSUFBTTRELGdCQUFnQixHQUFHLElBQUFMLHFCQUFXLEVBQUN0RyxLQUFLLEVBQUVDLE1BQU0sRUFBRSxLQUFLLENBQUM7SUFDMUQsT0FBT2lHLFdBQVcsQ0FBQ1MsZ0JBQWdCLEVBQUVuRixNQUFNLEVBQUVlLGFBQWEsRUFBRTtNQUMxRGpGLENBQUMsRUFBREEsQ0FBQztNQUNEMkMsTUFBTSxFQUFOQSxNQUFNO01BQ05NLFNBQVMsRUFBRSxLQUFLO01BQ2hCZ0csVUFBVSxFQUFFLElBQUk7TUFDaEJDLDJCQUEyQixFQUFFeEYscUNBQXFDO01BQ2xFeUYsS0FBSyxFQUFFdkM7SUFDVCxDQUFDLENBQUM7RUFDSixDQUFDLEVBQUUsQ0FBQ2pFLE1BQU0sRUFBRXNDLGFBQWEsRUFBRVAsWUFBWSxDQUFDLENBQUM7RUFFekMsSUFBTTRFLHlCQUF5QixHQUFHLFNBQTVCQSx5QkFBeUJBLENBQUlDLFNBQVMsRUFBSztJQUMvQ3JFLGdCQUFnQixDQUFDcUUsU0FBUyxDQUFDO0VBQzdCLENBQUM7O0VBRUQ7RUFDQTtFQUNBLElBQU1DLGVBQWUsR0FBRyxDQUFDLE9BQU8sRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLE9BQU8sQ0FBQztFQUU5RCxJQUFNQywwQkFBMEIsR0FBRyxTQUE3QkEsMEJBQTBCQSxDQUFJRixTQUFTLEVBQUs7SUFDaERqRSxzQkFBc0IsQ0FBQ2lFLFNBQVMsQ0FBQztJQUNqQyxJQUFJckYsTUFBTSxDQUFDMkQsT0FBTyxLQUFLLElBQUksRUFBRTtNQUMzQixJQUFJNkIsSUFBSSxHQUFHcEIsb0JBQVUsQ0FBQ3BFLE1BQU0sQ0FBQzJELE9BQU8sQ0FBQzhCLE9BQU8sQ0FBQyxDQUFDLENBQUM7TUFFL0MsSUFBSUosU0FBUyxFQUFFO1FBQ2I7UUFDQXBELG9CQUFvQixDQUFDeUQsV0FBVyxDQUFDdEQseUJBQXlCLENBQUM7UUFDM0RNLHFCQUFxQixDQUFDaUQsVUFBVSxDQUFDM0YsTUFBTSxDQUFDMkQsT0FBTyxDQUFDO01BQ2xELENBQUMsTUFBTTtRQUNMO1FBQ0ExQixvQkFBb0IsQ0FBQzJELFFBQVEsQ0FBQ3hELHlCQUF5QixDQUFDOztRQUV4RDtRQUNBLElBQUlYLGdCQUFnQixDQUFDa0MsT0FBTyxJQUFJMkIsZUFBZSxDQUFDTyxRQUFRLENBQUNMLElBQUksQ0FBQyxFQUFFO1VBQzlEOUMscUJBQXFCLENBQUNvRCxLQUFLLENBQUM5RixNQUFNLENBQUMyRCxPQUFPLENBQUM7UUFDN0M7TUFDRjtJQUNGO0VBQ0YsQ0FBQztFQUVELElBQU1vQyxxQ0FBcUMsR0FBRyxTQUF4Q0EscUNBQXFDQSxDQUFJVixTQUFTLEVBQUs7SUFDM0Q3RCx3QkFBd0IsQ0FBQzZELFNBQVMsQ0FBQztJQUVuQyxJQUFNVyx5QkFBeUIsR0FBRyxTQUE1QkEseUJBQXlCQSxDQUFJZixLQUFLLEVBQUs7TUFDM0NBLEtBQUssQ0FBQ2dCLFNBQVMsQ0FBQyxVQUFDQyxLQUFLLEVBQUs7UUFDekIsSUFBSUEsS0FBSyxDQUFDLG1CQUFtQixDQUFDLEtBQUssS0FBSyxFQUFFO1VBQ3hDakIsS0FBSyxDQUFDUyxXQUFXLENBQUNRLEtBQUssQ0FBQztRQUMxQjtNQUNGLENBQUMsQ0FBQztJQUNKLENBQUM7SUFFRCxJQUFJbEcsTUFBTSxDQUFDMkQsT0FBTyxLQUFLLElBQUksRUFBRTtNQUMzQixJQUFJMEIsU0FBUyxFQUFFO1FBQ2JwRCxvQkFBb0IsQ0FBQ3lELFdBQVcsQ0FBQ3RELHlCQUF5QixDQUFDO1FBQzNETSxxQkFBcUIsQ0FBQ2lELFVBQVUsQ0FBQzNGLE1BQU0sQ0FBQzJELE9BQU8sQ0FBQztRQUNoRHFDLHlCQUF5QixDQUFDekQsdUJBQXVCLENBQUM7UUFDbER5RCx5QkFBeUIsQ0FBQ2hELGVBQWUsQ0FBQztRQUMxQ2dELHlCQUF5QixDQUFDN0Msb0JBQW9CLENBQUM7TUFDakQsQ0FBQyxNQUFNO1FBQ0wsSUFBSXFDLElBQUksR0FBR3BCLG9CQUFVLENBQUNwRSxNQUFNLENBQUMyRCxPQUFPLENBQUM4QixPQUFPLENBQUMsQ0FBQyxDQUFDO1FBQy9DeEQsb0JBQW9CLENBQUMyRCxRQUFRLENBQUN4RCx5QkFBeUIsQ0FBQzs7UUFFeEQ7UUFDQSxJQUFJWCxnQkFBZ0IsQ0FBQ2tDLE9BQU8sSUFBSTJCLGVBQWUsQ0FBQ08sUUFBUSxDQUFDTCxJQUFJLENBQUMsRUFBRTtVQUM5RDlDLHFCQUFxQixDQUFDb0QsS0FBSyxDQUFDOUYsTUFBTSxDQUFDMkQsT0FBTyxDQUFDO1FBQzdDO01BQ0Y7SUFDRjtFQUNGLENBQUM7RUFFRCxJQUFNd0MsYUFBYSxHQUFHLFNBQWhCQSxhQUFhQSxDQUFBLEVBQVM7SUFDMUIsSUFBQUMsK0JBQXFCLEVBQUMsaUJBQWlCLEVBQUVoQix5QkFBeUIsQ0FBQztJQUNuRSxJQUFBZ0IsK0JBQXFCLEVBQ25CLDRCQUE0QixFQUM1QmIsMEJBQ0YsQ0FBQztJQUNELElBQUFhLCtCQUFxQixFQUNuQix5Q0FBeUMsRUFDekNMLHFDQUNGLENBQUM7RUFDSCxDQUFDO0VBRUQsSUFBTU0sc0JBQXNCLEdBQUcsU0FBekJBLHNCQUFzQkEsQ0FBQSxFQUFTO0lBQ25DLElBQU1DLE9BQU8sZ0JBQ1hySyxNQUFBLENBQUFxQixPQUFBLENBQUFzRyxhQUFBLENBQUEzSCxNQUFBLENBQUFxQixPQUFBLENBQUFpSixRQUFBLFFBQ0czQixhQUFhLEVBQ2JNLHdCQUF3QixFQUN4QlYseUJBQXlCLEVBQ3pCVCx1QkFDRCxDQUNIO0lBRUQsT0FBT3VDLE9BQU87RUFDaEIsQ0FBQztFQUVELElBQU1FLDBCQUEwQixHQUFHLFNBQTdCQSwwQkFBMEJBLENBQUEsRUFBUztJQUN2QyxJQUFJRixPQUFPLGdCQUNUckssTUFBQSxDQUFBcUIsT0FBQSxDQUFBc0csYUFBQSxDQUFBM0gsTUFBQSxDQUFBcUIsT0FBQSxDQUFBaUosUUFBQSxRQUNHL0IseUJBQXlCLEVBQ3pCVCx1QkFDRCxDQUNIO0lBRUQsSUFBSXVCLGVBQWUsQ0FBQ08sUUFBUSxDQUFDekIsb0JBQVUsQ0FBQzVELFlBQVksQ0FBQyxDQUFDLEVBQUU7TUFDdEQ4RixPQUFPLEdBQUdELHNCQUFzQixDQUFDLENBQUM7SUFDcEM7SUFFQSxPQUFPQyxPQUFPO0VBQ2hCLENBQUM7RUFFRCxJQUFNRyxtQkFBbUIsR0FBRyxTQUF0QkEsbUJBQW1CQSxDQUFBLEVBQVM7SUFDaEMsSUFBTUgsT0FBTyxHQUFHNUcsYUFBYSxHQUN6QjJHLHNCQUFzQixDQUFDLENBQUMsR0FDeEJHLDBCQUEwQixDQUFDLENBQUM7SUFDaEMsT0FBT0YsT0FBTztFQUNoQixDQUFDO0VBRUQsSUFBTUksYUFBYSxHQUFHLFNBQWhCQSxhQUFhQSxDQUFBLEVBQVM7SUFDMUIsSUFBSTdFLG1CQUFtQixFQUFFO01BQ3ZCakQsWUFBWSxDQUFFK0gsT0FBTyxHQUFHOUUsbUJBQW1CO01BQzNDakQsWUFBWSxDQUFFZ0ksT0FBTyxHQUFHLENBQUMvRSxtQkFBbUI7SUFDOUM7SUFFQSxJQUFJSCxtQkFBbUIsRUFBRTtNQUN2QjdDLFlBQVksQ0FBRStILE9BQU8sR0FBR2xGLG1CQUFtQjtNQUMzQzdDLFlBQVksQ0FBRThILE9BQU8sR0FBRyxDQUFDakYsbUJBQW1CO0lBQzlDO0lBRUEsSUFBSSxDQUFDQSxtQkFBbUIsSUFBSSxDQUFDRyxtQkFBbUIsRUFBRSxvQkFBTzVGLE1BQUEsQ0FBQXFCLE9BQUEsQ0FBQXNHLGFBQUEsQ0FBQTNILE1BQUEsQ0FBQXFCLE9BQUEsQ0FBQWlKLFFBQUEsTUFBSSxDQUFDO0lBQzlELG9CQUNFdEssTUFBQSxDQUFBcUIsT0FBQSxDQUFBc0csYUFBQSxDQUFDcEgsTUFBQSxDQUFBcUssS0FBSztNQUNKQyxLQUFLLEVBQUVsSSxZQUFZLElBQUtDLFlBQWM7TUFDdENrQixHQUFHLEVBQUVBLEdBQUk7TUFDVHZCLEtBQUssRUFBRUEsS0FBTztNQUNkQyxNQUFNLEVBQUVBLE1BQVE7TUFDaEJzSSxjQUFjLEVBQUUsQ0FBQ3JGO0lBQW9CLENBQ3RDLENBQUM7RUFFTixDQUFDO0VBRUQsSUFBQXNGLGdCQUFTLEVBQUMsWUFBTTtJQUNkdkYsZ0JBQWdCLENBQUNrQyxPQUFPLEdBQUc1QyxhQUFhO0VBQzFDLENBQUMsRUFBRSxDQUFDQSxhQUFhLENBQUMsQ0FBQztFQUVuQixJQUFBaUcsZ0JBQVMsRUFBQyxZQUFNO0lBQ2QsT0FBTyxTQUFTQyxPQUFPQSxDQUFBLEVBQUc7TUFBQSxJQUFBQyxlQUFBO01BQ3hCL0Qsb0JBQW9CLENBQUNnRSxXQUFXLENBQUMsQ0FBQztNQUNsQyxDQUFBRCxlQUFBLEdBQUFsSCxNQUFNLENBQUMyRCxPQUFPLGNBQUF1RCxlQUFBLHVCQUFkQSxlQUFBLENBQWdCeEIsV0FBVyxDQUFDdkMsb0JBQW9CLENBQUM7SUFDbkQsQ0FBQztFQUNILENBQUMsRUFBRSxDQUFDdkUsWUFBWSxFQUFFQyxZQUFZLEVBQUVILFdBQVcsQ0FBQzBJLGdCQUFnQixDQUFDLENBQUM7RUFFOUQsSUFBQUosZ0JBQVMsRUFBQyxZQUFNO0lBQ2QsT0FBTyxTQUFTQyxPQUFPQSxDQUFBLEVBQUc7TUFDeEIsSUFBSXZILGFBQWEsSUFBSU0sTUFBTSxDQUFDMkQsT0FBTyxFQUFFO1FBQ25DekQsUUFBUSxDQUFDLElBQUFtSCxxQkFBVyxFQUFDLENBQUMsQ0FBQztRQUN2Qm5ILFFBQVEsQ0FBQyxJQUFBb0gsbUJBQVUsRUFBQyxDQUFDLENBQUM7UUFDdEJ0RSxlQUFlLENBQUNtRSxXQUFXLENBQUMsQ0FBQztRQUM3QjVELGVBQWUsQ0FBQzRELFdBQVcsQ0FBQyxDQUFDO1FBQzdCL0UseUJBQXlCLENBQUMrRSxXQUFXLENBQUMsQ0FBQztRQUN2QzVFLHVCQUF1QixDQUFDNEUsV0FBVyxDQUFDLENBQUM7UUFDckNsRixvQkFBb0IsQ0FBQ2tGLFdBQVcsQ0FBQyxDQUFDO1FBQ2xDdEUsbUJBQW1CLENBQUNzRSxXQUFXLENBQUMsQ0FBQztRQUNqQ2hFLG9CQUFvQixDQUFDZ0UsV0FBVyxDQUFDLENBQUM7UUFDbEN6RSxxQkFBcUIsQ0FBQ3lFLFdBQVcsQ0FBQyxDQUFDO1FBQ25DbkgsTUFBTSxDQUFDMkQsT0FBTyxDQUFDK0IsV0FBVyxDQUFDaEQscUJBQXFCLENBQUM7UUFDakQxQyxNQUFNLENBQUMyRCxPQUFPLENBQUMrQixXQUFXLENBQUM3QyxtQkFBbUIsQ0FBQztRQUMvQzdDLE1BQU0sQ0FBQzJELE9BQU8sQ0FBQytCLFdBQVcsQ0FBQzFDLGVBQWUsQ0FBQztRQUMzQ2hELE1BQU0sQ0FBQzJELE9BQU8sQ0FBQytCLFdBQVcsQ0FBQ3ZDLG9CQUFvQixDQUFDO1FBQ2hEbkQsTUFBTSxDQUFDMkQsT0FBTyxDQUFDK0IsV0FBVyxDQUFDbkMsZUFBZSxDQUFDO1FBQzNDdkQsTUFBTSxDQUFDMkQsT0FBTyxDQUFDK0IsV0FBVyxDQUFDekQsb0JBQW9CLENBQUM7UUFFaERqQyxNQUFNLENBQUMyRCxPQUFPLENBQUNzQyxTQUFTLENBQUMsVUFBQ0MsS0FBSyxFQUFLO1VBQ2xDLElBQUlBLEtBQUssWUFBWXBLLENBQUMsQ0FBQ3lMLFNBQVMsRUFBRTtZQUNoQztVQUNGO1VBQ0F2SCxNQUFNLENBQUMyRCxPQUFPLENBQUMrQixXQUFXLENBQUNRLEtBQUssQ0FBQztRQUNuQyxDQUFDLENBQUM7TUFDSjtJQUNGLENBQUM7RUFDSCxDQUFDLEVBQUUsQ0FBQ3hILFdBQVcsQ0FBQzhJLGdCQUFnQixDQUFDLENBQUM7RUFFbEMsSUFBQVIsZ0JBQVMsRUFBQyxZQUFNO0lBQ2QsSUFBSSxDQUFDaEgsTUFBTSxDQUFDMkQsT0FBTyxFQUFFO01BQ25CLElBQUE4RCx1QkFBYSxFQUNYakgsWUFBWSxFQUNadkIsV0FBVyxFQUNYQyxpQkFBVSxDQUFDd0ksU0FBUyxFQUNwQjFILE1BQU0sRUFDTkUsUUFBUSxFQUNSeUgscUJBQVcsRUFDWGhKLGNBQWMsRUFDZDhCLGVBQWUsRUFDZlgsZ0JBQWdCLEVBQ2hCLElBQUksRUFDSnBCLFdBQVcsQ0FBQzhJLGdCQUNkLENBQUM7O01BRUQ7TUFDQSxJQUFJeEgsTUFBTSxDQUFDMkQsT0FBTyxFQUFFO1FBQ2xCMUIsb0JBQW9CLENBQUM2RCxLQUFLLENBQUM5RixNQUFNLENBQUMyRCxPQUFPLENBQUM7UUFDMUMxQixvQkFBb0IsQ0FBQzJELFFBQVEsQ0FBQ3JELHVCQUF1QixDQUFDO1FBQ3RETixvQkFBb0IsQ0FBQzJELFFBQVEsQ0FBQ3hELHlCQUF5QixDQUFDO01BQzFEO01BRUErRCxhQUFhLENBQUMsQ0FBQztJQUNqQixDQUFDLE1BQU07TUFDTDFGLGVBQWUsQ0FBQ1QsTUFBTSxDQUFDMkQsT0FBTyxDQUFDOEIsT0FBTyxDQUFDLENBQUMsQ0FBQztNQUN6QyxJQUFJLENBQUM5RyxjQUFjLEVBQUU7UUFDbkJBLGNBQWMsR0FBR0osS0FBSyxDQUFDd0IsR0FBRyxDQUFDLFVBQUM2SCxJQUFJO1VBQUEsT0FBS0EsSUFBSSxDQUFDQyxVQUFVO1FBQUEsRUFBQyxDQUFDQyxJQUFJLENBQUMsQ0FBQztNQUM5RDtNQUVBLElBQUksQ0FBQ3BJLGFBQWEsSUFBSSxDQUFDZCxZQUFZLEVBQUU7UUFDbkMsSUFBQW1KLHdCQUFjLEVBQUMvSCxNQUFNLEVBQUUySCxxQkFBVyxFQUFFaEosY0FBYyxDQUFDO01BQ3JEO0lBQ0Y7RUFDRixDQUFDLEVBQUUsQ0FBQ0EsY0FBYyxDQUFDLENBQUM7RUFFcEIsSUFBQXFJLGdCQUFTLEVBQUMsWUFBTTtJQUFBLElBQUFnQixnQkFBQTtJQUNkLElBQUlDLE9BQU8sR0FBRyxLQUFLO0lBRW5CLENBQUFELGdCQUFBLEdBQUFoSSxNQUFNLENBQUMyRCxPQUFPLGNBQUFxRSxnQkFBQSx1QkFBZEEsZ0JBQUEsQ0FBZ0IvQixTQUFTLENBQUMsVUFBQ0MsS0FBSyxFQUFLO01BQ25DLElBQUkrQixPQUFPLEVBQUU7TUFFYixJQUNFLENBQUEvQixLQUFLLGFBQUxBLEtBQUssdUJBQUxBLEtBQUssQ0FBRWdDLGVBQWUsTUFBS3RILFlBQVksSUFDdkNzRixLQUFLLENBQUNpQyxXQUFXLENBQUMsQ0FBQyxLQUFLLEtBQUssRUFDN0I7UUFDQSxJQUFJakMsS0FBSyxZQUFZcEssQ0FBQyxDQUFDc00sTUFBTSxFQUFFO1VBQzdCbEMsS0FBSyxDQUFDbUMsSUFBSSxDQUFDLE9BQU8sQ0FBQztRQUNyQixDQUFDLE1BQU0sSUFBSW5DLEtBQUssWUFBWXBLLENBQUMsQ0FBQ3dNLE9BQU8sRUFBRTtVQUNyQ3BDLEtBQUssQ0FBQ21DLElBQUksQ0FBQyxhQUFhLENBQUM7UUFDM0I7UUFDQUosT0FBTyxHQUFHLElBQUk7TUFDaEI7SUFDRixDQUFDLENBQUM7RUFDSixDQUFDLEVBQUUsQ0FBQ3JILFlBQVksQ0FBQyxDQUFDO0VBRWxCLElBQU0ySCxXQUFXLEdBQUcsU0FBZEEsV0FBV0EsQ0FBQSxFQUFTO0lBQ3hCLElBQUksQ0FBQyxJQUFBQyw4QkFBb0IsRUFBQzlKLFdBQVcsRUFBRXNCLE1BQU0sRUFBRXhCLEtBQUssRUFBRUMsTUFBTSxDQUFDLEVBQUU7TUFDN0QsT0FBTyxJQUFJO0lBQ2I7SUFFQSxvQkFDRXhDLE1BQUEsQ0FBQXFCLE9BQUEsQ0FBQXNHLGFBQUEsQ0FBQ3ZILGFBQUEsQ0FBQW9NLFlBQVk7TUFDWGxLLEtBQUssRUFBRUEsS0FBTTtNQUNid0IsR0FBRyxFQUFFQyxNQUFNLENBQUMyRCxPQUFRO01BQ3BCN0gsQ0FBQyxFQUFFQSxDQUFFO01BQ0w2QyxjQUFjLEVBQUVBLGNBQWU7TUFDL0IrSixPQUFPLEVBQUVsSSxZQUFhO01BQ3RCOUIsV0FBVyxFQUFFQSxXQUFZO01BQ3pCaUssWUFBWSxFQUFFcEY7SUFBZ0IsQ0FDL0IsQ0FBQztFQUVOLENBQUM7RUFFRCxvQkFDRXRILE1BQUEsQ0FBQXFCLE9BQUEsQ0FBQXNHLGFBQUE7SUFBS2dGLFNBQVMsRUFBQyxrQkFBa0I7SUFBQ2hKLEtBQUssRUFBRUE7RUFBTSxnQkFDN0MzRCxNQUFBLENBQUFxQixPQUFBLENBQUFzRyxhQUFBO0lBQ0VnRixTQUFTLG9CQUFBQyxNQUFBLENBQ1BuSyxXQUFXLENBQUNvSyxlQUFlLEdBQUcsRUFBRSxHQUFHLGtDQUFrQztFQUNwRSxnQkFFSDdNLE1BQUEsQ0FBQXFCLE9BQUEsQ0FBQXNHLGFBQUEsQ0FBQ3pILGNBQUEsQ0FBQW1CLE9BQWEscUJBQ1pyQixNQUFBLENBQUFxQixPQUFBLENBQUFzRyxhQUFBO0lBQUttRixFQUFFLEVBQUM7RUFBSyxDQUFNLENBQUMsRUFDbkJSLFdBQVcsQ0FBQyxDQUFDLEVBQ2IsSUFBQVMsc0NBQTRCLEVBQzNCeEssS0FBSyxFQUNMRCxLQUFLLEVBQ0xHLFdBQVcsRUFDWHNCLE1BQU0sRUFDTnZCLE1BQ0YsQ0FBQyxpQkFDQ3hDLE1BQUEsQ0FBQXFCLE9BQUEsQ0FBQXNHLGFBQUEsQ0FBQTNILE1BQUEsQ0FBQXFCLE9BQUEsQ0FBQWlKLFFBQUEsUUFDR0csYUFBYSxDQUFDLENBQUMsRUFDZkQsbUJBQW1CLENBQUMsQ0FBQyxFQUNyQnJILFFBQ0QsQ0FFUyxDQUNaLENBQ0YsQ0FBQztBQUVWLENBQUM7QUFBQzZKLE9BQUEsQ0FBQTVLLEdBQUEsR0FBQUEsR0FBQSJ9
|