@kando-env/kando-ui 1.2.418-alpha.8 → 1.2.418

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (34) hide show
  1. package/lib/Widgets/Map/Map.js +28 -61
  2. package/lib/Widgets/Map/MapUtils.js +4 -38
  3. package/lib/Widgets/Map/points/PointIcon.js +4 -13
  4. package/lib/Widgets/Map/points/PointMarkers.js +6 -1
  5. package/lib/Widgets/Map/points/PointUtils.js +7 -29
  6. package/lib/Widgets/MostPolluting/components/PotentialImpact.test.js +1 -2
  7. package/lib/Widgets/PotentialImpactSummary/Icon.js +1 -2
  8. package/lib/components/DamageType/DamageType.js +3 -3
  9. package/lib/components/DischargeHeatmap/mocks/handlers.js +3 -3
  10. package/lib/components/TrendGraphNVL/TrendGraphNVL.js +1 -2
  11. package/lib/hooks/useMap.js +2 -2
  12. package/lib/i18n/en.json +2 -4
  13. package/lib/macros/getVersion.js +2 -2
  14. package/lib/pages/CovidPage/components/TrendGraphNVL/TrendGraphNVL.js +1 -2
  15. package/lib/pages/EventsPage/EventsMapContainer/EventsMapContainer.js +3 -3
  16. package/lib/pages/EventsPage/events/event_info/EventSection.test.js +22 -21
  17. package/lib/pages/EventsPage/events/event_info/Header/Header.js +1 -1
  18. package/lib/pages/EventsPage/events/event_info/Header/HeaderContainer.js +1 -1
  19. package/lib/pages/EventsPage/events/event_info/Header/index.js +1 -1
  20. package/lib/pages/EventsPage/events/event_info/SeverityScore/index.js +1 -1
  21. package/lib/pages/EventsPage/events/event_info/Timelines/index.js +1 -1
  22. package/lib/pages/ImportSiteProcess/index.js +2 -2
  23. package/lib/pages/OperationsPage/Map/useMap.js +3 -3
  24. package/lib/pages/OperationsPage/OperationsFilePage.js +1 -4
  25. package/lib/pages/PollutionRiskAssessment/useMap.js +2 -2
  26. package/lib/store/points/models/IPoint.js +1 -1
  27. package/lib/test/mocks/browser.js +1 -1
  28. package/lib/test/test-utils.js +1 -1
  29. package/lib/ui-kit/KandoTable/KandoTable.test.js +1 -1
  30. package/lib/utilities/Enum.js +4 -4
  31. package/lib/utilities/map/icons.js +4 -12
  32. package/lib/utilities/scoreToData.test.js +1 -1
  33. package/package.json +1 -1
  34. package/lib/assets/map/sampler.svg +0 -9
@@ -30,6 +30,10 @@ 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
+
33
37
  require('leaflet.markercluster');
34
38
  var Map = function Map(_ref) {
35
39
  var areas = _ref.areas,
@@ -71,10 +75,6 @@ var Map = function Map(_ref) {
71
75
  _useState6 = (0, _slicedToArray2.default)(_useState5, 2),
72
76
  onlyMonitoredPoints = _useState6[0],
73
77
  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,41 +84,38 @@ 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];
87
90
  var _useState9 = (0, _react.useState)(L.layerGroup()),
88
91
  _useState10 = (0, _slicedToArray2.default)(_useState9, 1),
89
- factoriesParentGroup = _useState10[0];
92
+ unmonitoredFactoriesGroup = _useState10[0];
90
93
  var _useState11 = (0, _react.useState)(L.layerGroup()),
91
94
  _useState12 = (0, _slicedToArray2.default)(_useState11, 1),
92
- unmonitoredFactoriesGroup = _useState12[0];
95
+ monitoredFactoriesGroup = _useState12[0];
93
96
  var _useState13 = (0, _react.useState)(L.layerGroup()),
94
97
  _useState14 = (0, _slicedToArray2.default)(_useState13, 1),
95
- monitoredFactoriesGroup = _useState14[0];
98
+ unmonitoredEdgesGroup = _useState14[0];
96
99
  var _useState15 = (0, _react.useState)(L.layerGroup()),
97
100
  _useState16 = (0, _slicedToArray2.default)(_useState15, 1),
98
- unmonitoredEdgesGroup = _useState16[0];
101
+ monitoredEdgesGroup = _useState16[0];
99
102
  var _useState17 = (0, _react.useState)(L.layerGroup()),
100
103
  _useState18 = (0, _slicedToArray2.default)(_useState17, 1),
101
- monitoredEdgesGroup = _useState18[0];
104
+ wwtpsLayerGroup = _useState18[0];
102
105
  var _useState19 = (0, _react.useState)(L.layerGroup()),
103
106
  _useState20 = (0, _slicedToArray2.default)(_useState19, 1),
104
- wwtpsLayerGroup = _useState20[0];
105
- var _useState21 = (0, _react.useState)(L.layerGroup()),
107
+ collectorsLayerGroup = _useState20[0];
108
+ var _useState21 = (0, _react.useState)(new L.FeatureGroup()),
106
109
  _useState22 = (0, _slicedToArray2.default)(_useState21, 1),
107
- collectorsLayerGroup = _useState22[0];
108
- var _useState23 = (0, _react.useState)(new L.FeatureGroup()),
109
- _useState24 = (0, _slicedToArray2.default)(_useState23, 1),
110
- areasLayerGroup = _useState24[0];
110
+ areasLayerGroup = _useState22[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 = (0, _react.useMemo)(function () {
118
- var monitoredPoints = (0, _MapUtils.filterPoints)(points, {
119
- onlyMonitored: true
120
- });
121
- renderPointMarkers([], mapRef, {});
117
+ var memoizedMonitoredPoints = function memoizedMonitoredPoints() {
118
+ var monitoredPoints = (0, _MapUtils.filterPoints)(points, true);
122
119
  return renderPointMarkers(monitoredPoints, mapRef, {
123
120
  includeUnmonitoredPoints: true,
124
121
  rerender: _MapUtils.zoomLevels[mapZoomLevel],
@@ -127,11 +124,9 @@ var Map = function Map(_ref) {
127
124
  collectorsGroup: collectorsLayerGroup,
128
125
  forEventsView: forEventsView
129
126
  });
130
- }, [points, mapZoomLevel, onlyWithSamplerPoints]);
131
- var memoizedUnmonitoredPoints = (0, _react.useMemo)(function () {
132
- var unmonitoredPoints = (0, _MapUtils.filterPoints)(points, {
133
- onlyMonitored: false
134
- });
127
+ };
128
+ var memoizedUnmonitoredPoints = function memoizedUnmonitoredPoints() {
129
+ var unmonitoredPoints = (0, _MapUtils.filterPoints)(points, false);
135
130
  return renderPointMarkers(unmonitoredPoints, mapRef, {
136
131
  includeUnmonitoredPoints: true,
137
132
  rerender: _MapUtils.zoomLevels[mapZoomLevel],
@@ -140,7 +135,7 @@ var Map = function Map(_ref) {
140
135
  collectorsGroup: collectorsLayerGroup,
141
136
  forEventsView: forEventsView
142
137
  });
143
- }, [points, mapZoomLevel]);
138
+ };
144
139
  var renderEdges = function renderEdges(filteredEdges, mapRef, edgesCheckbox, props) {
145
140
  return mapRef.current !== null && edgesCheckbox && /*#__PURE__*/_react.default.createElement(_Edges.default, Object.assign({
146
141
  edges: filteredEdges,
@@ -159,7 +154,7 @@ var Map = function Map(_ref) {
159
154
  });
160
155
  }, [points, edgesCheckbox, mapZoomLevel]);
161
156
  var memoizedUnmonitoredEdges = (0, _react.useMemo)(function () {
162
- if (onlyMonitoredPoints || onlyWithSamplerPoints) return null;
157
+ if (onlyMonitoredPoints) return null;
163
158
  var unmonitoredEdges = (0, _MapUtils.filterEdges)(edges, points, false);
164
159
  return renderEdges(unmonitoredEdges, mapRef, edgesCheckbox, {
165
160
  L: L,
@@ -196,44 +191,16 @@ var Map = function Map(_ref) {
196
191
  }
197
192
  }
198
193
  };
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
- };
226
194
  var trackLayerbox = function trackLayerbox() {
227
195
  (0, _MapUtils.setupCheckboxListener)('#edges-checkbox', handleEdgesCheckboxChange);
228
196
  (0, _MapUtils.setupCheckboxListener)('#monitored-points-checkbox', handlePointsCheckboxChange);
229
- (0, _MapUtils.setupCheckboxListener)('#monitored-points-with-sampler-checkbox', handlePointsWithSamplerCheckboxChange);
230
197
  };
231
198
  var zoomRulesForEventsView = function zoomRulesForEventsView() {
232
- var payload = /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, memoizedEdges, memoizedUnmonitoredEdges, memoizedUnmonitoredPoints, memoizedMonitoredPoints);
199
+ var payload = /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, memoizedEdges, memoizedUnmonitoredEdges, memoizedUnmonitoredPoints(), memoizedMonitoredPoints());
233
200
  return payload;
234
201
  };
235
202
  var zoomRulesForDashaboardMaps = function zoomRulesForDashaboardMaps() {
236
- var payload = /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, memoizedUnmonitoredPoints, memoizedMonitoredPoints);
203
+ var payload = /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, memoizedUnmonitoredPoints(), memoizedMonitoredPoints());
237
204
  if (edgesZoomLevels.includes(_MapUtils.zoomLevels[mapZoomLevel])) {
238
205
  payload = zoomRulesForEventsView();
239
206
  }
@@ -278,12 +245,12 @@ var Map = function Map(_ref) {
278
245
  dispatch((0, _actions.clearAreas)());
279
246
  wwtpsLayerGroup.clearLayers();
280
247
  areasLayerGroup.clearLayers();
281
- unmonitoredFactoriesGroup.clearLayers();
282
- monitoredFactoriesGroup.clearLayers();
283
- factoriesParentGroup.clearLayers();
284
248
  monitoredEdgesGroup.clearLayers();
285
249
  collectorsLayerGroup.clearLayers();
286
250
  unmonitoredEdgesGroup.clearLayers();
251
+ monitoredFactoriesGroup.clearLayers();
252
+ unmonitoredFactoriesGroup.clearLayers();
253
+ factoriesParentGroup.clearLayers();
287
254
  mapRef.current.removeLayer(unmonitoredEdgesGroup);
288
255
  mapRef.current.removeLayer(monitoredEdgesGroup);
289
256
  mapRef.current.removeLayer(wwtpsLayerGroup);
@@ -361,4 +328,4 @@ var Map = function Map(_ref) {
361
328
  }, renderAreas(), (0, _MapUtils.shoudLoadDependentMapObjects)(edges, areas, global_data, mapRef, points) && /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, memoizedEvent(), memoizedZoomControl(), children)))));
362
329
  };
363
330
  exports.Map = Map;
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+XG4gICAgICAgICAgPGRpdiBpZD1cIm1hcFwiPlxuICAgICAgICAgICAge3JlbmRlckFyZWFzKCl9XG4gICAgICAgICAgICB7c2hvdWRMb2FkRGVwZW5kZW50TWFwT2JqZWN0cyhcbiAgICAgICAgICAgICAgZWRnZXMsXG4gICAgICAgICAgICAgIGFyZWFzLFxuICAgICAgICAgICAgICBnbG9iYWxfZGF0YSxcbiAgICAgICAgICAgICAgbWFwUmVmLFxuICAgICAgICAgICAgICBwb2ludHMsXG4gICAgICAgICAgICApICYmIChcbiAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICB7bWVtb2l6ZWRFdmVudCgpfVxuICAgICAgICAgICAgICAgIHttZW1vaXplZFpvb21Db250cm9sKCl9XG4gICAgICAgICAgICAgICAge2NoaWxkcmVufVxuICAgICAgICAgICAgICA8Lz5cbiAgICAgICAgICAgICl9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvRXJyb3JCb3VuZGFyeT5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICApO1xufTtcbiJd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
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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
@@ -209,14 +209,9 @@ var toggleEdgesVisibility = function toggleEdgesVisibility(visible, map) {
209
209
  // export const toggleMonitoredPointsVisibility = (visible) => {
210
210
  // console.warn('toggleMonitoredPointsVisibility', visible);
211
211
  // };
212
-
213
- // export const toggleMonitoredPointsWithSamplerVisibility = (visible) => {
214
- // console.warn('toggleMonitoredPointsWithSamplerVisibility', visible);
215
- // };
216
212
  exports.toggleEdgesVisibility = toggleEdgesVisibility;
217
213
  var edgesSpecificLogic = function edgesSpecificLogic(defaultOn, map) {
218
214
  var checkbox = document.querySelector('#edges-checkbox');
219
- if (checkbox == null) return;
220
215
  checkbox.checked = defaultOn;
221
216
  };
222
217
  exports.edgesSpecificLogic = edgesSpecificLogic;
@@ -236,24 +231,8 @@ var customControls = function customControls(map) {
236
231
  onChange: function onChange(isChecked) {
237
232
  return function () {};
238
233
  }
239
- }, {
240
- label: 'Show only points with sampler',
241
- id: 'monitored-points-with-sampler-checkbox',
242
- inputType: 'checkbox',
243
- onChange: function onChange(isChecked) {
244
- return function () {};
245
- }
246
- }
247
-
248
- // {
249
- // label: 'Another custom feature',
250
- // id: 'custom-feature-checkbox',
251
- // inputType: 'checkbox',
252
- // onChange: (isChecked) => console.log(`Another feature is now ${isChecked ? 'enabled' : 'disabled'}`),
253
- // },
254
- ];
234
+ }];
255
235
  };
256
-
257
236
  var appendCustomCheckboxToLeafletsLayerBox = function appendCustomCheckboxToLeafletsLayerBox(leafletsContainer, customContainer) {
258
237
  _leaflet.default.DomEvent.on(leafletsContainer, 'mouseover', function () {
259
238
  customContainer.style.display = 'block';
@@ -377,23 +356,10 @@ var zoomLevels = {
377
356
  17: 'Small',
378
357
  18: 'Small'
379
358
  };
380
-
381
- // export const filterPoints = (points, hasDevice) =>
382
- // points.filter((point) => point.has_device === hasDevice);
383
-
384
- // Utility function for filtering points based on options
385
359
  exports.zoomLevels = zoomLevels;
386
- var filterPoints = function filterPoints() {
387
- var points = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
388
- var _ref2 = arguments.length > 1 ? arguments[1] : undefined,
389
- _ref2$onlyMonitored = _ref2.onlyMonitored,
390
- onlyMonitored = _ref2$onlyMonitored === void 0 ? false : _ref2$onlyMonitored,
391
- _ref2$withSampler = _ref2.withSampler,
392
- withSampler = _ref2$withSampler === void 0 ? false : _ref2$withSampler;
360
+ var filterPoints = function filterPoints(points, hasDevice) {
393
361
  return points.filter(function (point) {
394
- if (onlyMonitored && !point.has_device) return false;
395
- if (withSampler && !point.has_sampler) return false;
396
- return true;
362
+ return point.has_device === hasDevice;
397
363
  });
398
364
  };
399
365
  exports.filterPoints = filterPoints;
@@ -423,4 +389,4 @@ var setupCheckboxListener = function setupCheckboxListener(selector, onChange) {
423
389
  });
424
390
  };
425
391
  exports.setupCheckboxListener = setupCheckboxListener;
426
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbGVhZmxldCIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiX2FjdGlvbnMiLCJfaTE4biIsIl9XV1RQRGFzaGJvYXJkU2xpY2UiLCJhcmVhRm9jdXNMb2dpYyIsIm1hcFJlZiIsImlzVmFsaWRBcmVhIiwiYXJlYVRvQ2VudGVyQnkiLCJtYXBJbnN0YW5jZSIsImN1cnJlbnQiLCJmaXRCb3VuZHMiLCJwYWRkaW5nIiwiZ3JvdXAiLCJwcm9wZXJ0eSIsIl9sYXllcnMiLCJrYW5kb19vYmplY3QiLCJwdXNoIiwiT2JqZWN0Iiwia2V5cyIsIkwiLCJmZWF0dXJlR3JvdXAiLCJnZXRCb3VuZHMiLCJsZW5ndGgiLCJleHBvcnRzIiwiYXJlYSIsInNob3VsZExvYWRNYXBPYmplY3RzIiwiZ2xvYmFsX2RhdGEiLCJwb2ludHMiLCJlZGdlcyIsIm1hcCIsInVuZGVmaW5lZCIsInNob3VkTG9hZERlcGVuZGVudE1hcE9iamVjdHMiLCJhcmVhcyIsImdsb2JhbCIsImZpbmRTcGVjaWZpY0xheWVyc0Zyb21NYXAiLCJsYXllcnNUb0ZpbmQiLCJjdXJyZW50TGF5ZXIiLCJpbmNsdWRlcyIsImthbmRvX3BvaW50X3R5cGUiLCJldmVudHNDb3VudGVySWNvbnMiLCJsYXllciIsInpvb21MZXZlbCIsImljb24iLCJvcHRpb25zIiwiaWNvblNpemUiLCJldmVudHNDb3VudEljb24iLCJpY29uQW5jaG9yIiwic2V0SWNvbiIsInNldE9wYWNpdHkiLCJtdWx0aXBsZUxheWVyZWRJY29ucyIsImlzQUZld0xheWVySWNvbiIsImthbmRvX2Zld19sYXllcl9pY29uIiwibWluaUljb24iLCJwcmVzZW50Iiwia2FuZG9fc2Vjb25kYXJ5Iiwia2FuZG9fdGhpcmQiLCJzZWNvbmRhcnkiLCJ0aGlyZCIsImthbmRvX2luZGV4X29iamVjdCIsImJ1YmJsZUljb25PcHRpb25zIiwib25lTGF5ZXJJY29uT3B0aW9ucyIsIm1pZGRsZUljb25PcHRpb25zIiwidG9wSWNvbk9wdGlvbnMiLCJpY29uWm9vbUNvbnRyb2wiLCJsYXllcnMiLCJfem9vbSIsIm1hcFN0eWxlIiwibWFwQm94U3R5bGUiLCJ0aWxlTGF5ZXIiLCJjb25jYXQiLCJhdHRyaWJ1dGlvbiIsIm1heFpvb20iLCJtaW5ab29tIiwiaWQiLCJ0aWxlU2l6ZSIsInpvb21PZmZzZXQiLCJ1cGRhdGVXaGVuWm9vbWluZyIsInVwZGF0ZVdoZW5JZGxlIiwiYmFzZU1hcHMiLCJtYXBCb3hTYXRlbGxpdGVTdHlsZSIsIl9yZWYiLCJkZWZhdWx0TWFwIiwiaTE4biIsInQiLCJzYXRlbGxpdGUiLCJfZGVmaW5lUHJvcGVydHkyIiwiZGVmYXVsdCIsInRvZ2dsZUVkZ2VzVmlzaWJpbGl0eSIsInZpc2libGUiLCJlYWNoTGF5ZXIiLCJQb2x5bGluZSIsIlN5bWJvbCIsImFycm93SGVhZCIsInNldFN0eWxlIiwib3BhY2l0eSIsImVkZ2VzU3BlY2lmaWNMb2dpYyIsImRlZmF1bHRPbiIsImNoZWNrYm94IiwiZG9jdW1lbnQiLCJxdWVyeVNlbGVjdG9yIiwiY2hlY2tlZCIsImN1c3RvbUNvbnRyb2xzIiwibGFiZWwiLCJpbnB1dFR5cGUiLCJkZW55Rm9yV2EiLCJvbkNoYW5nZSIsImlzQ2hlY2tlZCIsImFwcGVuZEN1c3RvbUNoZWNrYm94VG9MZWFmbGV0c0xheWVyQm94IiwibGVhZmxldHNDb250YWluZXIiLCJjdXN0b21Db250YWluZXIiLCJEb21FdmVudCIsIm9uIiwic3R5bGUiLCJkaXNwbGF5IiwiY3JlYXRlQ3VzdG9tQ29udHJvbCIsImNvbnRyb2wiLCJjb250YWluZXIiLCJjb250cm9sQ29udGFpbmVyIiwiY3JlYXRlRWxlbWVudCIsImNsYXNzTmFtZSIsImlubmVySFRNTCIsImFkZEV2ZW50TGlzdGVuZXIiLCJlIiwidGFyZ2V0IiwiYXBwZW5kQ2hpbGQiLCJjdXN0b21GdW5jdGlvbmFsaXR5Rm9yTWFwTGF5ZXJzIiwibWFwVHlwZXMiLCJhcmd1bWVudHMiLCJ3YUlkIiwiZm9yV1dUUERhc2hib2FyZCIsImNvbnRyb2xsZXIiLCJwb3NpdGlvbiIsImFkZFRvIiwiZ2V0Q29udGFpbmVyIiwiZm9yRWFjaCIsImluaXRpYWxpemVNYXAiLCJtYXBab29tTGV2ZWwiLCJkaXNwYXRjaCIsInNldE1hcFpvb21MZXZlbCIsInNob3dFZGdlc0J5RGVmYXVsdCIsIk1hcCIsImNlbnRlciIsInpvb21TbmFwIiwiem9vbSIsImF0dHJpYnV0aW9uQ29udHJvbCIsInByZWZlckNhbnZhcyIsInNldE1hcCIsIndoZW5SZWFkeSIsInZhbHVlcyIsInNldFRpbWVvdXQiLCJpbnZhbGlkYXRlU2l6ZSIsImVyciIsImNvbnNvbGUiLCJlcnJvciIsInN0b3JlTWFwIiwic2lkZU5hdkV4cGFuZGVkIiwiZXZlbnQiLCJvcmlnaW5hbEV2ZW50Iiwia2V5IiwiY2xvc2VQb3B1cCIsImJvZHkiLCJmb2N1cyIsImdldFpvb20iLCJjbHVzdGVyR3JvdXBPcHRpb25zIiwic3BpZGVyZnlPbk1heFpvb20iLCJzaG93Q292ZXJhZ2VPbkhvdmVyIiwiem9vbVRvQm91bmRzT25DbGljayIsImFuaW1hdGUiLCJkaXNhYmxlQ2x1c3RlcmluZ0F0Wm9vbSIsInJlbW92ZU91dHNpZGVWaXNpYmxlQm91bmRzIiwiY2h1bmtlZExvYWRpbmciLCJpY29uQ3JlYXRlRnVuY3Rpb24iLCJjbHVzdGVyIiwiRGl2SWNvbiIsImh0bWwiLCJfY2hpbGRDb3VudCIsIlBvaW50Iiwiem9vbUxldmVscyIsImZpbHRlclBvaW50cyIsIl9yZWYyIiwiX3JlZjIkb25seU1vbml0b3JlZCIsIm9ubHlNb25pdG9yZWQiLCJfcmVmMiR3aXRoU2FtcGxlciIsIndpdGhTYW1wbGVyIiwiZmlsdGVyIiwicG9pbnQiLCJoYXNfZGV2aWNlIiwiaGFzX3NhbXBsZXIiLCJmaW5kUG9pbnQiLCJwb2ludElkIiwiaGFzRGV2aWNlQ2hlY2siLCJmaW5kIiwiZmlsdGVyRWRnZXMiLCJpc01vbml0b3JlZCIsImVkZ2UiLCJzb3VyY2VQb2ludCIsInNvdXJjZV9wb2ludF9pZCIsImRlc2NlbmRhbnRzX2hhc19kZXZpY2UiLCJwYXJlbnRQb2ludCIsInRhcmdldF9wb2ludF9pZCIsInNldHVwQ2hlY2tib3hMaXN0ZW5lciIsInNlbGVjdG9yIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL1dpZGdldHMvTWFwL01hcFV0aWxzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBMLCB7IFBvaW50VHVwbGUgfSBmcm9tICdsZWFmbGV0JztcbmltcG9ydCB7IHNpZGVOYXZFeHBhbmRlZCwgc3RvcmVNYXAgfSBmcm9tICcuLi8uLi9zdG9yZS9nbG9iYWwvYWN0aW9ucyc7XG5pbXBvcnQgaTE4biBmcm9tICdzcmMvdXRpbGl0aWVzL2kxOG4nO1xuaW1wb3J0IHsgc2V0TWFwIH0gZnJvbSAnLi4vLi4vc3RvcmUvV1dUUERhc2hib2FyZC9XV1RQRGFzaGJvYXJkU2xpY2UnO1xuaW1wb3J0IHsgSVBvaW50IH0gZnJvbSAnc3JjL3N0b3JlL3BvaW50cy9tb2RlbHMvSVBvaW50JztcblxuZXhwb3J0IGNvbnN0IGFyZWFGb2N1c0xvZ2ljID0gKG1hcFJlZiwgaXNWYWxpZEFyZWEsIGFyZWFUb0NlbnRlckJ5KSA9PiB7XG4gIGxldCBtYXBJbnN0YW5jZTogYW55ID0gbWFwUmVmLmN1cnJlbnQ7XG4gIGlmIChpc1ZhbGlkQXJlYShhcmVhVG9DZW50ZXJCeSkpIHtcbiAgICBtYXBJbnN0YW5jZS5maXRCb3VuZHMoYXJlYVRvQ2VudGVyQnksIHsgcGFkZGluZzogWzAsIDBdIH0pO1xuICB9IGVsc2Uge1xuICAgIGNvbnN0IGdyb3VwOiBhbnlbXSA9IFtdO1xuXG4gICAgZm9yIChjb25zdCBwcm9wZXJ0eSBpbiBtYXBJbnN0YW5jZS5fbGF5ZXJzKSB7XG4gICAgICBpZiAoXG4gICAgICAgIG1hcEluc3RhbmNlLl9sYXllcnNbcHJvcGVydHldLmthbmRvX29iamVjdCA9PT0gJ0FyZWEnIHx8XG4gICAgICAgIG1hcEluc3RhbmNlLl9sYXllcnNbcHJvcGVydHldLmthbmRvX29iamVjdCA9PT0gJ1BvaW50J1xuICAgICAgKSB7XG4gICAgICAgIGdyb3VwLnB1c2gobWFwSW5zdGFuY2UuX2xheWVyc1twcm9wZXJ0eV0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChPYmplY3Qua2V5cyhMLmZlYXR1cmVHcm91cChncm91cCkuZ2V0Qm91bmRzKCkpLmxlbmd0aCAhPT0gMCkge1xuICAgICAgbWFwSW5zdGFuY2UuZml0Qm91bmRzKEwuZmVhdHVyZUdyb3VwKGdyb3VwKS5nZXRCb3VuZHMoKSwge1xuICAgICAgICBwYWRkaW5nOiBbMTAwLCAxMDBdLFxuICAgICAgfSk7XG4gICAgfVxuICB9XG4gIC8vIG1hcEluc3RhbmNlLmludmFsaWRhdGVTaXplKHRydWUpO1xufTtcblxuZXhwb3J0IGNvbnN0IGlzVmFsaWRBcmVhID0gKGFyZWEpID0+IHtcbiAgcmV0dXJuIGFyZWEgJiYgYXJlYS5sZW5ndGggPiAwICYmIE9iamVjdC5rZXlzKGFyZWFbMF0pLmxlbmd0aCA+IDA7XG59O1xuXG5leHBvcnQgY29uc3Qgc2hvdWxkTG9hZE1hcE9iamVjdHMgPSAoZ2xvYmFsX2RhdGEsIG1hcFJlZiwgcG9pbnRzLCBlZGdlcykgPT4ge1xuICByZXR1cm4gKFxuICAgIGdsb2JhbF9kYXRhLm1hcCAhPT0gdW5kZWZpbmVkICYmXG4gICAgbWFwUmVmLmN1cnJlbnQgIT09IG51bGwgJiZcbiAgICBlZGdlcyAhPT0gdW5kZWZpbmVkICYmXG4gICAgcG9pbnRzICE9PSB1bmRlZmluZWRcbiAgKTtcbn07XG5cbmV4cG9ydCBjb25zdCBzaG91ZExvYWREZXBlbmRlbnRNYXBPYmplY3RzID0gKFxuICBlZGdlcyxcbiAgYXJlYXMsXG4gIGdsb2JhbCxcbiAgbWFwUmVmLFxuICBwb2ludHMsXG4pID0+IHtcbiAgcmV0dXJuIChcbiAgICBnbG9iYWwubWFwICE9PSB1bmRlZmluZWQgJiZcbiAgICBtYXBSZWYuY3VycmVudCAhPT0gbnVsbCAmJlxuICAgIGVkZ2VzLmxlbmd0aCA+PSAwICYmXG4gICAgYXJlYXMubGVuZ3RoID49IDAgJiZcbiAgICBwb2ludHMubGVuZ3RoID49IDBcbiAgKTtcbn07XG5cbmV4cG9ydCBjb25zdCBmaW5kU3BlY2lmaWNMYXllcnNGcm9tTWFwID0gKFxuICBsYXllcnNUb0ZpbmQ6IHN0cmluZ1tdLFxuICBjdXJyZW50TGF5ZXIsXG4pID0+IHtcbiAgcmV0dXJuIChcbiAgICBsYXllcnNUb0ZpbmQuaW5jbHVkZXMoY3VycmVudExheWVyLmthbmRvX29iamVjdCkgJiZcbiAgICBjdXJyZW50TGF5ZXIua2FuZG9fcG9pbnRfdHlwZSAhPT0gJ01hbmhvbGUnXG4gICk7XG59O1xuXG5leHBvcnQgY29uc3QgZXZlbnRzQ291bnRlckljb25zID0gKGxheWVyLCB6b29tTGV2ZWwpID0+IHtcbiAgbGV0IGljb24gPSBsYXllci5vcHRpb25zLmljb247XG4gIGljb24ub3B0aW9ucy5pY29uU2l6ZSA9IGV2ZW50c0NvdW50SWNvbih6b29tTGV2ZWwpLmljb25TaXplO1xuICBpY29uLm9wdGlvbnMuaWNvbkFuY2hvciA9IGV2ZW50c0NvdW50SWNvbih6b29tTGV2ZWwpLmljb25BbmNob3I7XG4gIGxheWVyLnNldEljb24oaWNvbik7XG4gIGxheWVyLnNldE9wYWNpdHkoMSk7XG59O1xuXG5leHBvcnQgY29uc3QgbXVsdGlwbGVMYXllcmVkSWNvbnMgPSAobGF5ZXIsIHpvb21MZXZlbCkgPT4ge1xuICBsZXQgaWNvbiA9IGxheWVyLm9wdGlvbnMuaWNvbjtcbiAgbGV0IGlzQUZld0xheWVySWNvbiA9IGxheWVyLmthbmRvX2Zld19sYXllcl9pY29uO1xuICBsZXQgbWluaUljb24gPSB7XG4gICAgcHJlc2VudDogbGF5ZXIua2FuZG9fc2Vjb25kYXJ5IHx8IGxheWVyLmthbmRvX3RoaXJkLFxuICAgIHNlY29uZGFyeTogbGF5ZXIua2FuZG9fc2Vjb25kYXJ5LFxuICAgIHRoaXJkOiBsYXllci5rYW5kb190aGlyZCxcbiAgfTtcblxuICBpZiAobGF5ZXIua2FuZG9faW5kZXhfb2JqZWN0ID09PSAwKSB7XG4gICAgaWYgKGlzQUZld0xheWVySWNvbikge1xuICAgICAgaWNvbi5vcHRpb25zLmljb25TaXplID0gYnViYmxlSWNvbk9wdGlvbnMoem9vbUxldmVsLCBtaW5pSWNvbikuaWNvblNpemU7XG4gICAgICBpY29uLm9wdGlvbnMuaWNvbkFuY2hvciA9IGJ1YmJsZUljb25PcHRpb25zKFxuICAgICAgICB6b29tTGV2ZWwsXG4gICAgICAgIG1pbmlJY29uLFxuICAgICAgKS5pY29uQW5jaG9yO1xuICAgIH0gZWxzZSB7XG4gICAgICBpY29uLm9wdGlvbnMuaWNvblNpemUgPSBvbmVMYXllckljb25PcHRpb25zKHpvb21MZXZlbCkuaWNvblNpemU7XG4gICAgICBpY29uLm9wdGlvbnMuaWNvbkFuY2hvciA9IG9uZUxheWVySWNvbk9wdGlvbnMoem9vbUxldmVsKS5pY29uQW5jaG9yO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBpZiAobGF5ZXIua2FuZG9faW5kZXhfb2JqZWN0ID09PSAxKSB7XG4gICAgICBpY29uLm9wdGlvbnMuaWNvblNpemUgPSBtaWRkbGVJY29uT3B0aW9ucyh6b29tTGV2ZWwsIG1pbmlJY29uKS5pY29uU2l6ZTtcbiAgICAgIGljb24ub3B0aW9ucy5pY29uQW5jaG9yID0gbWlkZGxlSWNvbk9wdGlvbnMoXG4gICAgICAgIHpvb21MZXZlbCxcbiAgICAgICAgbWluaUljb24sXG4gICAgICApLmljb25BbmNob3I7XG4gICAgfSBlbHNlIHtcbiAgICAgIGljb24ub3B0aW9ucy5pY29uU2l6ZSA9IHRvcEljb25PcHRpb25zKHpvb21MZXZlbCwgbWluaUljb24pLmljb25TaXplO1xuICAgICAgaWNvbi5vcHRpb25zLmljb25BbmNob3IgPSB0b3BJY29uT3B0aW9ucyh6b29tTGV2ZWwsIG1pbmlJY29uKS5pY29uQW5jaG9yO1xuICAgIH1cbiAgfVxuXG4gIGxheWVyLnNldEljb24oaWNvbik7XG59O1xuXG5jb25zdCBvbmVMYXllckljb25PcHRpb25zID0gKHpvb21MZXZlbCkgPT4ge1xuICByZXR1cm4ge1xuICAgIGljb25TaXplOiBbem9vbUxldmVsICogMy4zLCB6b29tTGV2ZWwgKiAzLjNdIGFzIFBvaW50VHVwbGUsXG4gICAgaWNvbkFuY2hvcjogW3pvb21MZXZlbCAqIDEuNywgem9vbUxldmVsICogMy43XSBhcyBQb2ludFR1cGxlLFxuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IGV2ZW50c0NvdW50SWNvbiA9ICh6b29tTGV2ZWwpID0+IHtcbiAgcmV0dXJuIHtcbiAgICBpY29uU2l6ZTogW3pvb21MZXZlbCAqIDIuNSwgem9vbUxldmVsICogMi41XSBhcyBQb2ludFR1cGxlLFxuICAgIGljb25BbmNob3I6IFt6b29tTGV2ZWwgKiAwLCB6b29tTGV2ZWwgKiA0XSBhcyBQb2ludFR1cGxlLFxuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IGJ1YmJsZUljb25PcHRpb25zID0gKHpvb21MZXZlbCwgbWluaUljb24pID0+IHtcbiAgaWYgKG1pbmlJY29uLnByZXNlbnQpIHtcbiAgICBpZiAobWluaUljb24uc2Vjb25kYXJ5KSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBpY29uU2l6ZTogW3pvb21MZXZlbCAqIDEuOTgsIHpvb21MZXZlbCAqIDIuM10gYXMgUG9pbnRUdXBsZSxcbiAgICAgICAgaWNvbkFuY2hvcjogW3pvb21MZXZlbCAqIDAsIHpvb21MZXZlbCAqIDRdIGFzIFBvaW50VHVwbGUsXG4gICAgICB9O1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBpY29uU2l6ZTogW3pvb21MZXZlbCAqIDEuOTgsIHpvb21MZXZlbCAqIDIuM10gYXMgUG9pbnRUdXBsZSxcbiAgICAgICAgaWNvbkFuY2hvcjogW3pvb21MZXZlbCAqIDAsIHpvb21MZXZlbCAqIDJdIGFzIFBvaW50VHVwbGUsXG4gICAgICB9O1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICByZXR1cm4ge1xuICAgICAgaWNvblNpemU6IFt6b29tTGV2ZWwgKiAzLjk4LCB6b29tTGV2ZWwgKiA0LjNdIGFzIFBvaW50VHVwbGUsXG4gICAgICBpY29uQW5jaG9yOiBbem9vbUxldmVsICogMiwgem9vbUxldmVsICogNF0gYXMgUG9pbnRUdXBsZSxcbiAgICB9O1xuICB9XG59O1xuXG5leHBvcnQgY29uc3QgbWlkZGxlSWNvbk9wdGlvbnMgPSAoem9vbUxldmVsLCBtaW5pSWNvbikgPT4ge1xuICBpZiAobWluaUljb24ucHJlc2VudCkge1xuICAgIGlmIChtaW5pSWNvbi5zZWNvbmRhcnkpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGljb25TaXplOiBbem9vbUxldmVsICogMS4xLCB6b29tTGV2ZWwgKiAxLjFdLFxuICAgICAgICBpY29uQW5jaG9yOiBbem9vbUxldmVsICogLTAuNDUsIHpvb21MZXZlbCAqIDMuNV0sXG4gICAgICB9O1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBpY29uU2l6ZTogW3pvb21MZXZlbCAqIDEuMSwgem9vbUxldmVsICogMS4xXSxcbiAgICAgICAgaWNvbkFuY2hvcjogW3pvb21MZXZlbCAqIC0wLjQ1LCB6b29tTGV2ZWwgKiAxLjVdLFxuICAgICAgfTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGljb25TaXplOiBbem9vbUxldmVsICogMi41LCB6b29tTGV2ZWwgKiAyLjVdLFxuICAgICAgaWNvbkFuY2hvcjogW3pvb21MZXZlbCAqIDEuMjk1LCB6b29tTGV2ZWwgKiAzLjM1XSxcbiAgICB9O1xuICB9XG59O1xuXG5leHBvcnQgY29uc3QgdG9wSWNvbk9wdGlvbnMgPSAoem9vbUxldmVsLCBtaW5pSWNvbikgPT4ge1xuICBpZiAobWluaUljb24ucHJlc2VudCkge1xuICAgIGlmIChtaW5pSWNvbi5zZWNvbmRhcnkpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGljb25TaXplOiBbem9vbUxldmVsICogMC45LCB6b29tTGV2ZWwgKiAxLjhdLFxuICAgICAgICBpY29uQW5jaG9yOiBbem9vbUxldmVsICogLTAuNSwgem9vbUxldmVsICogMy44XSxcbiAgICAgIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGljb25TaXplOiBbem9vbUxldmVsICogMS42LCB6b29tTGV2ZWwgKiAyLjVdLFxuICAgICAgICBpY29uQW5jaG9yOiBbem9vbUxldmVsICogLTAuMiwgem9vbUxldmVsICogMi4xXSxcbiAgICAgIH07XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHJldHVybiB7XG4gICAgICBpY29uU2l6ZTogW3pvb21MZXZlbCAqIDMuOSwgem9vbUxldmVsICogMy44XSxcbiAgICAgIGljb25BbmNob3I6IFt6b29tTGV2ZWwgKiAyLCB6b29tTGV2ZWwgKiAzLjhdLFxuICAgIH07XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCBpY29uWm9vbUNvbnRyb2wgPSAobWFwKSA9PiB7XG4gIGxldCBsYXllcnMgPSBtYXAuX2xheWVycztcbiAgbGV0IHpvb21MZXZlbCA9IG1hcC5fem9vbTtcblxuICBmb3IgKGNvbnN0IHByb3BlcnR5IGluIGxheWVycykge1xuICAgIGlmIChmaW5kU3BlY2lmaWNMYXllcnNGcm9tTWFwKFsnSWNvbk51bWJlciddLCBsYXllcnNbcHJvcGVydHldKSkge1xuICAgICAgZXZlbnRzQ291bnRlckljb25zKGxheWVyc1twcm9wZXJ0eV0sIHpvb21MZXZlbCk7XG4gICAgfVxuXG4gICAgaWYgKGZpbmRTcGVjaWZpY0xheWVyc0Zyb21NYXAoWydQb2ludCcsICdJY29uJ10sIGxheWVyc1twcm9wZXJ0eV0pKSB7XG4gICAgICBtdWx0aXBsZUxheWVyZWRJY29ucyhsYXllcnNbcHJvcGVydHldLCB6b29tTGV2ZWwpO1xuICAgIH1cblxuICAgIGlmIChcbiAgICAgIGZpbmRTcGVjaWZpY0xheWVyc0Zyb21NYXAoWydTYW1wbGluZycsICdPYnNlcnZhdGlvbiddLCBsYXllcnNbcHJvcGVydHldKVxuICAgICkge1xuICAgICAgbXVsdGlwbGVMYXllcmVkSWNvbnMobGF5ZXJzW3Byb3BlcnR5XSwgem9vbUxldmVsKTtcbiAgICB9XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCBtYXBTdHlsZSA9IChtYXBCb3hTdHlsZSkgPT4ge1xuICByZXR1cm4gTC50aWxlTGF5ZXIoXG4gICAgYGh0dHBzOi8vYXBpLm1hcGJveC5jb20vc3R5bGVzL3YxL25hZGF2LWthbmRvLyR7bWFwQm94U3R5bGV9L3RpbGVzLzI1Ni97en0ve3h9L3t5fUAyeD9hY2Nlc3NfdG9rZW49cGsuZXlKMUlqb2libUZrWVhZdGEyRnVaRzhpTENKaElqb2lZMnB2ZUhwcmRHUnhNSGxtZERONGJEZzBkekp4T1hjNGRTSjkuSi0yb2hxN2o0eUtOYm00Tl8tUDZxd2AsXG4gICAge1xuICAgICAgYXR0cmlidXRpb246XG4gICAgICAgICdNYXAgZGF0YSAmY29weTsgPGEgaHJlZj1cImh0dHBzOi8vd3d3Lm9wZW5zdHJlZXRtYXAub3JnL1wiPk9wZW5TdHJlZXRNYXA8L2E+IGNvbnRyaWJ1dG9ycywgPGEgaHJlZj1cImh0dHBzOi8vY3JlYXRpdmVjb21tb25zLm9yZy9saWNlbnNlcy9ieS1zYS8yLjAvXCI+Q0MtQlktU0E8L2E+LCBJbWFnZXJ5IMKpIDxhIGhyZWY9XCJodHRwczovL3d3dy5tYXBib3guY29tL1wiPk1hcGJveDwvYT4nLFxuICAgICAgbWF4Wm9vbTogMTgsXG4gICAgICBtaW5ab29tOiAyLFxuICAgICAgaWQ6ICdtYXBib3gvc3RyZWV0cy12MTEnLFxuICAgICAgdGlsZVNpemU6IDUxMixcbiAgICAgIHpvb21PZmZzZXQ6IC0xLFxuICAgICAgdXBkYXRlV2hlblpvb21pbmc6IGZhbHNlLFxuICAgICAgdXBkYXRlV2hlbklkbGU6IGZhbHNlLFxuICAgIH0sXG4gICk7XG59O1xuXG5leHBvcnQgY29uc3QgYmFzZU1hcHMgPSAobWFwQm94U3R5bGUsIG1hcEJveFNhdGVsbGl0ZVN0eWxlKSA9PiB7XG4gIGxldCBkZWZhdWx0TWFwID0gaTE4bi50KCdtYXAubGF5ZXJzLmRlZmF1bHQnKTtcbiAgbGV0IHNhdGVsbGl0ZSA9IGkxOG4udCgnbWFwLmxheWVycy5zYXRlbGxpdGUnKTtcbiAgcmV0dXJuIHtcbiAgICBbZGVmYXVsdE1hcF06IG1hcFN0eWxlKG1hcEJveFN0eWxlKSxcbiAgICBbc2F0ZWxsaXRlXTogbWFwU3R5bGUobWFwQm94U2F0ZWxsaXRlU3R5bGUpLFxuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IHRvZ2dsZUVkZ2VzVmlzaWJpbGl0eSA9ICh2aXNpYmxlLCBtYXApID0+IHtcbiAgbWFwLmVhY2hMYXllcigobGF5ZXIpID0+IHtcbiAgICBpZiAoXG4gICAgICAobGF5ZXIgaW5zdGFuY2VvZiBMLlBvbHlsaW5lICYmIGxheWVyLmthbmRvX29iamVjdCAhPT0gJ0FyZWEnKSB8fFxuICAgICAgbGF5ZXIgaW5zdGFuY2VvZiBMLlN5bWJvbC5hcnJvd0hlYWRcbiAgICApIHtcbiAgICAgIGxheWVyLnNldFN0eWxlKHsgb3BhY2l0eTogdmlzaWJsZSA/IDEgOiAwIH0pO1xuICAgIH1cbiAgfSk7XG59O1xuXG4vLyBleHBvcnQgY29uc3QgdG9nZ2xlTW9uaXRvcmVkUG9pbnRzVmlzaWJpbGl0eSA9ICh2aXNpYmxlKSA9PiB7XG4vLyAgIGNvbnNvbGUud2FybigndG9nZ2xlTW9uaXRvcmVkUG9pbnRzVmlzaWJpbGl0eScsIHZpc2libGUpO1xuLy8gfTtcblxuLy8gZXhwb3J0IGNvbnN0IHRvZ2dsZU1vbml0b3JlZFBvaW50c1dpdGhTYW1wbGVyVmlzaWJpbGl0eSA9ICh2aXNpYmxlKSA9PiB7XG4vLyAgIGNvbnNvbGUud2FybigndG9nZ2xlTW9uaXRvcmVkUG9pbnRzV2l0aFNhbXBsZXJWaXNpYmlsaXR5JywgdmlzaWJsZSk7XG4vLyB9O1xuXG5leHBvcnQgY29uc3QgZWRnZXNTcGVjaWZpY0xvZ2ljID0gKGRlZmF1bHRPbiwgbWFwKSA9PiB7XG4gIGxldCBjaGVja2JveCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNlZGdlcy1jaGVja2JveCcpO1xuICBpZiAoY2hlY2tib3ggPT0gbnVsbCkgcmV0dXJuO1xuICBjaGVja2JveC5jaGVja2VkID0gZGVmYXVsdE9uO1xufTtcblxuY29uc3QgY3VzdG9tQ29udHJvbHMgPSAobWFwKSA9PiB7XG4gIHJldHVybiBbXG4gICAge1xuICAgICAgbGFiZWw6IGkxOG4udCgnbWFwLmxheWVycy5uZXR3b3JrX2xpbmVzJyksXG4gICAgICBpZDogJ2VkZ2VzLWNoZWNrYm94JyxcbiAgICAgIGlucHV0VHlwZTogJ2NoZWNrYm94JyxcbiAgICAgIGRlbnlGb3JXYTogWzUxOF0sXG4gICAgICBvbkNoYW5nZTogKGlzQ2hlY2tlZCkgPT4gdG9nZ2xlRWRnZXNWaXNpYmlsaXR5KGlzQ2hlY2tlZCwgbWFwKSxcbiAgICB9LFxuXG4gICAge1xuICAgICAgbGFiZWw6ICdTaG93IG9ubHkgbW9uaXRvcmVkIHBvaW50cycsXG4gICAgICBpZDogJ21vbml0b3JlZC1wb2ludHMtY2hlY2tib3gnLFxuICAgICAgaW5wdXRUeXBlOiAnY2hlY2tib3gnLFxuICAgICAgb25DaGFuZ2U6IChpc0NoZWNrZWQpID0+ICgpID0+IHt9LFxuICAgIH0sXG5cbiAgICB7XG4gICAgICBsYWJlbDogJ1Nob3cgb25seSBwb2ludHMgd2l0aCBzYW1wbGVyJyxcbiAgICAgIGlkOiAnbW9uaXRvcmVkLXBvaW50cy13aXRoLXNhbXBsZXItY2hlY2tib3gnLFxuICAgICAgaW5wdXRUeXBlOiAnY2hlY2tib3gnLFxuICAgICAgb25DaGFuZ2U6IChpc0NoZWNrZWQpID0+ICgpID0+IHt9LFxuICAgIH0sXG5cbiAgICAvLyB7XG4gICAgLy8gICBsYWJlbDogJ0Fub3RoZXIgY3VzdG9tIGZlYXR1cmUnLFxuICAgIC8vICAgaWQ6ICdjdXN0b20tZmVhdHVyZS1jaGVja2JveCcsXG4gICAgLy8gICBpbnB1dFR5cGU6ICdjaGVja2JveCcsXG4gICAgLy8gICBvbkNoYW5nZTogKGlzQ2hlY2tlZCkgPT4gY29uc29sZS5sb2coYEFub3RoZXIgZmVhdHVyZSBpcyBub3cgJHtpc0NoZWNrZWQgPyAnZW5hYmxlZCcgOiAnZGlzYWJsZWQnfWApLFxuICAgIC8vIH0sXG4gIF07XG59O1xuXG5jb25zdCBhcHBlbmRDdXN0b21DaGVja2JveFRvTGVhZmxldHNMYXllckJveCA9IChcbiAgbGVhZmxldHNDb250YWluZXIsXG4gIGN1c3RvbUNvbnRhaW5lcixcbikgPT4ge1xuICBMLkRvbUV2ZW50Lm9uKGxlYWZsZXRzQ29udGFpbmVyLCAnbW91c2VvdmVyJywgZnVuY3Rpb24gKCkge1xuICAgIGN1c3RvbUNvbnRhaW5lci5zdHlsZS5kaXNwbGF5ID0gJ2Jsb2NrJztcbiAgfSk7XG5cbiAgTC5Eb21FdmVudC5vbihsZWFmbGV0c0NvbnRhaW5lciwgJ21vdXNlb3V0JywgZnVuY3Rpb24gKCkge1xuICAgIGN1c3RvbUNvbnRhaW5lci5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnO1xuICB9KTtcbn07XG5cbmNvbnN0IGNyZWF0ZUN1c3RvbUNvbnRyb2wgPSAoY29udHJvbCwgY29udGFpbmVyKSA9PiB7XG4gIGxldCBjb250cm9sQ29udGFpbmVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gIGNvbnRyb2xDb250YWluZXIuY2xhc3NOYW1lID0gJ2xlYWZsZXQtY29udHJvbC1sYXllcnMtb3ZlcmxheXMnO1xuICBjb250cm9sQ29udGFpbmVyLmlubmVySFRNTCA9IGBcbiAgICAgIDxsYWJlbD5cbiAgICAgICAgPGlucHV0IHR5cGU9XCIke2NvbnRyb2wuaW5wdXRUeXBlfVwiIGlkPVwiJHtjb250cm9sLmlkfVwiIC8+ICR7Y29udHJvbC5sYWJlbH1cbiAgICAgIDwvbGFiZWw+XG4gICAgYDtcblxuICBjb250cm9sQ29udGFpbmVyXG4gICAgLnF1ZXJ5U2VsZWN0b3IoYCMke2NvbnRyb2wuaWR9YClcbiAgICAuYWRkRXZlbnRMaXN0ZW5lcignY2hhbmdlJywgZnVuY3Rpb24gKGUpIHtcbiAgICAgIGNvbnN0IGlzQ2hlY2tlZCA9IGUudGFyZ2V0LmNoZWNrZWQ7XG4gICAgICBjb250cm9sLm9uQ2hhbmdlKGlzQ2hlY2tlZCk7XG4gICAgfSk7XG5cbiAgY29udHJvbENvbnRhaW5lci5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnO1xuICBjb250YWluZXI/LmFwcGVuZENoaWxkKGNvbnRyb2xDb250YWluZXIpO1xuXG4gIGFwcGVuZEN1c3RvbUNoZWNrYm94VG9MZWFmbGV0c0xheWVyQm94KGNvbnRhaW5lciwgY29udHJvbENvbnRhaW5lcik7XG59O1xuXG5leHBvcnQgY29uc3QgY3VzdG9tRnVuY3Rpb25hbGl0eUZvck1hcExheWVycyA9IChcbiAgbWFwLFxuICBtYXBUeXBlcyxcbiAgZGVmYXVsdE9uID0gdHJ1ZSxcbiAgd2FJZCxcbiAgZm9yV1dUUERhc2hib2FyZCxcbikgPT4ge1xuICBsZXQgY29udHJvbGxlciA9IEwuY29udHJvbFxuICAgIC5sYXllcnMobWFwVHlwZXMsIHt9LCB7IHBvc2l0aW9uOiAnYm90dG9tcmlnaHQnIH0pXG4gICAgLmFkZFRvKG1hcCk7XG4gIGxldCBjb250YWluZXIgPSBjb250cm9sbGVyLmdldENvbnRhaW5lcigpO1xuXG4gIGlmIChmb3JXV1RQRGFzaGJvYXJkKSB7XG4gICAgY3VzdG9tQ29udHJvbHMobWFwKS5mb3JFYWNoKChjb250cm9sKSA9PiB7XG4gICAgICBpZiAoY29udHJvbC5kZW55Rm9yV2EgJiYgY29udHJvbC5kZW55Rm9yV2EuaW5jbHVkZXMod2FJZCkpIHJldHVybjtcblxuICAgICAgY3JlYXRlQ3VzdG9tQ29udHJvbChjb250cm9sLCBjb250YWluZXIpO1xuICAgICAgZWRnZXNTcGVjaWZpY0xvZ2ljKGRlZmF1bHRPbiwgbWFwKTtcbiAgICB9KTtcbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IGluaXRpYWxpemVNYXAgPSAoXG4gIG1hcFpvb21MZXZlbCxcbiAgbWFwQm94U3R5bGUsXG4gIG1hcEJveFNhdGVsbGl0ZVN0eWxlLFxuICBtYXBSZWYsXG4gIGRpc3BhdGNoLFxuICBpc1ZhbGlkQXJlYSxcbiAgYXJlYVRvQ2VudGVyQnksXG4gIHNldE1hcFpvb21MZXZlbCxcbiAgZm9yV1dUUERhc2hib2FyZCxcbiAgc2hvd0VkZ2VzQnlEZWZhdWx0LFxuICB3YUlkID0gMCxcbikgPT4ge1xuICAvLyBAdHMtaWdub3JlXG4gIG1hcFJlZi5jdXJyZW50ID0gbmV3IEwuTWFwKCdtYXAnLCB7XG4gICAgY2VudGVyOiBbMCwgMF0sXG4gICAgem9vbVNuYXA6IDEsXG4gICAgem9vbTogbWFwWm9vbUxldmVsLFxuICAgIGF0dHJpYnV0aW9uQ29udHJvbDogZmFsc2UsXG4gICAgcHJlZmVyQ2FudmFzOiBmYWxzZSxcbiAgfSk7XG5cbiAgaWYgKGZvcldXVFBEYXNoYm9hcmQpIGRpc3BhdGNoKHNldE1hcChtYXBSZWYuY3VycmVudCkpO1xuXG4gIG1hcFJlZi5jdXJyZW50LndoZW5SZWFkeSgoKSA9PiB7XG4gICAgbGV0IG1hcCA9IG1hcFJlZi5jdXJyZW50O1xuICAgIGNvbnN0IG1hcFR5cGVzID0gYmFzZU1hcHMobWFwQm94U3R5bGUsIG1hcEJveFNhdGVsbGl0ZVN0eWxlKTtcblxuICAgIGN1c3RvbUZ1bmN0aW9uYWxpdHlGb3JNYXBMYXllcnMoXG4gICAgICBtYXAsXG4gICAgICBtYXBUeXBlcyxcbiAgICAgIHNob3dFZGdlc0J5RGVmYXVsdCxcbiAgICAgIHdhSWQsXG4gICAgICBmb3JXV1RQRGFzaGJvYXJkLFxuICAgICk7XG5cbiAgICAvLyBUaGUgbmFtZSBvZiB0aGUgbGF5ZXIgY2hhbmdlcyBiZXR3ZWVuIGxhbmd1YWdlcyBzbyB0aGVyZSB3YXMgYSBuZWVkIHRvIGdldCB0byB0aGUgZmlyc3QgbGF5ZXJcbiAgICBPYmplY3QudmFsdWVzKG1hcFR5cGVzKVswXS5hZGRUbyhtYXApO1xuXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBpZiAoIW1hcFJlZi5jdXJyZW50KSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdHJ5IHtcbiAgICAgICAgbWFwUmVmLmN1cnJlbnQuaW52YWxpZGF0ZVNpemUodHJ1ZSk7XG4gICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcignZXJyJywgZXJyKTtcbiAgICAgIH1cblxuICAgICAgZGlzcGF0Y2goc3RvcmVNYXAobWFwUmVmLmN1cnJlbnQpKTtcbiAgICAgIGRpc3BhdGNoKHNpZGVOYXZFeHBhbmRlZCh0cnVlKSk7XG5cbiAgICAgIG1hcC5vbigna2V5ZG93bicsIChldmVudCkgPT4ge1xuICAgICAgICBpZiAoZXZlbnQub3JpZ2luYWxFdmVudC5rZXkgPT09ICdFc2NhcGUnKSB7XG4gICAgICAgICAgbWFwLmNsb3NlUG9wdXAoKTtcbiAgICAgICAgICBkb2N1bWVudC5ib2R5LmZvY3VzKCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0sIDApO1xuICAgIGlmIChtYXBSZWYuY3VycmVudCAmJiBpc1ZhbGlkQXJlYShhcmVhVG9DZW50ZXJCeSkpIHtcbiAgICAgIG1hcFJlZi5jdXJyZW50LmZpdEJvdW5kcyhhcmVhVG9DZW50ZXJCeSk7XG4gICAgfVxuICB9KTtcblxuICBtYXBSZWYuY3VycmVudC5vbignem9vbWVuZCcsIGZ1bmN0aW9uIChlKSB7XG4gICAgaWYgKCFtYXBSZWYuY3VycmVudCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBsZXQgem9vbSA9IG1hcFJlZi5jdXJyZW50LmdldFpvb20oKTtcbiAgICBzZXRNYXBab29tTGV2ZWwoem9vbSk7XG4gIH0pO1xufTtcblxuZXhwb3J0IGNvbnN0IGNsdXN0ZXJHcm91cE9wdGlvbnMgPSB7XG4gIHNwaWRlcmZ5T25NYXhab29tOiBmYWxzZSxcbiAgc2hvd0NvdmVyYWdlT25Ib3ZlcjogZmFsc2UsXG4gIHpvb21Ub0JvdW5kc09uQ2xpY2s6IHRydWUsXG4gIGFuaW1hdGU6IHRydWUsXG4gIGRpc2FibGVDbHVzdGVyaW5nQXRab29tOiAxMCxcbiAgcmVtb3ZlT3V0c2lkZVZpc2libGVCb3VuZHM6IGZhbHNlLFxuICBjaHVua2VkTG9hZGluZzogdHJ1ZSxcbiAgaWNvbkNyZWF0ZUZ1bmN0aW9uOiAoY2x1c3RlcikgPT4ge1xuICAgIHJldHVybiBuZXcgTC5EaXZJY29uKHtcbiAgICAgIGh0bWw6IGA8ZGl2PjxzcGFuPiR7Y2x1c3Rlci5fY2hpbGRDb3VudH08L3NwYW4+PC9kaXY+XG4gICAgICAgICAgICAgPGRpdiBjbGFzcz0nbWFya2VyLWNsdXN0ZXItbmFtZSc+JHtpMThuLnQoJ2luZHVzdHJpZXMnKX08L2Rpdj5gLFxuICAgICAgY2xhc3NOYW1lOiAnbWFya2VyLWNsdXN0ZXInLFxuICAgICAgaWNvblNpemU6IG5ldyBMLlBvaW50KDQwLCA0MCksXG4gICAgfSk7XG4gIH0sXG59O1xuXG5leHBvcnQgY29uc3Qgem9vbUxldmVscyA9IHtcbiAgMTogJ1hMYXJnZScsXG4gIDI6ICdYTGFyZ2UnLFxuICAzOiAnWExhcmdlJyxcbiAgNDogJ1hMYXJnZScsXG4gIDU6ICdYTGFyZ2UnLFxuICA2OiAnWExhcmdlJyxcbiAgNzogJ0xhcmdlJyxcbiAgODogJ0xhcmdlJyxcbiAgOTogJ0xhcmdlJyxcbiAgMTA6ICdMYXJnZScsXG4gIDExOiAnTUxhcmdlJyxcbiAgMTI6ICdNTGFyZ2UnLFxuICAxMzogJ01MYXJnZScsXG4gIDE0OiAnTUxhcmdlJyxcbiAgMTU6ICdNZWRpdW0nLFxuICAxNjogJ01lZGl1bScsXG4gIDE3OiAnU21hbGwnLFxuICAxODogJ1NtYWxsJyxcbn07XG5cbi8vIGV4cG9ydCBjb25zdCBmaWx0ZXJQb2ludHMgPSAocG9pbnRzLCBoYXNEZXZpY2UpID0+XG4vLyAgIHBvaW50cy5maWx0ZXIoKHBvaW50KSA9PiBwb2ludC5oYXNfZGV2aWNlID09PSBoYXNEZXZpY2UpO1xuXG4vLyBVdGlsaXR5IGZ1bmN0aW9uIGZvciBmaWx0ZXJpbmcgcG9pbnRzIGJhc2VkIG9uIG9wdGlvbnNcbmV4cG9ydCBjb25zdCBmaWx0ZXJQb2ludHMgPSAoXG4gIHBvaW50czogSVBvaW50W10gPSBbXSxcbiAge1xuICAgIG9ubHlNb25pdG9yZWQgPSBmYWxzZSxcbiAgICB3aXRoU2FtcGxlciA9IGZhbHNlLFxuICB9OiB7IG9ubHlNb25pdG9yZWQ/OiBib29sZWFuOyB3aXRoU2FtcGxlcj86IGJvb2xlYW4gfSxcbik6IElQb2ludFtdID0+IHtcbiAgcmV0dXJuIHBvaW50cy5maWx0ZXIoKHBvaW50KSA9PiB7XG4gICAgaWYgKG9ubHlNb25pdG9yZWQgJiYgIXBvaW50Lmhhc19kZXZpY2UpIHJldHVybiBmYWxzZTtcbiAgICBpZiAod2l0aFNhbXBsZXIgJiYgIXBvaW50Lmhhc19zYW1wbGVyKSByZXR1cm4gZmFsc2U7XG4gICAgcmV0dXJuIHRydWU7XG4gIH0pO1xufTtcblxuZXhwb3J0IGNvbnN0IGZpbmRQb2ludCA9IChwb2ludHMsIHBvaW50SWQsIGhhc0RldmljZUNoZWNrKSA9PlxuICBwb2ludHMuZmluZCgocG9pbnQpID0+IHBvaW50LmlkID09PSBwb2ludElkICYmIGhhc0RldmljZUNoZWNrKHBvaW50KSk7XG5cbmV4cG9ydCBjb25zdCBmaWx0ZXJFZGdlcyA9IChlZGdlcywgcG9pbnRzLCBpc01vbml0b3JlZCkgPT5cbiAgZWRnZXMuZmlsdGVyKChlZGdlKSA9PiB7XG4gICAgY29uc3Qgc291cmNlUG9pbnQgPSBmaW5kUG9pbnQocG9pbnRzLCBlZGdlLnNvdXJjZV9wb2ludF9pZCwgKHBvaW50KSA9PlxuICAgICAgaXNNb25pdG9yZWRcbiAgICAgICAgPyBwb2ludC5oYXNfZGV2aWNlIHx8IGVkZ2UuZGVzY2VuZGFudHNfaGFzX2RldmljZVxuICAgICAgICA6ICFwb2ludC5kZXNjZW5kYW50c19oYXNfZGV2aWNlLFxuICAgICk7XG5cbiAgICBjb25zdCBwYXJlbnRQb2ludCA9IGZpbmRQb2ludChwb2ludHMsIGVkZ2UudGFyZ2V0X3BvaW50X2lkLCAocG9pbnQpID0+XG4gICAgICBpc01vbml0b3JlZFxuICAgICAgICA/IGVkZ2UuZGVzY2VuZGFudHNfaGFzX2RldmljZSB8fCBzb3VyY2VQb2ludCAhPT0gdW5kZWZpbmVkXG4gICAgICAgIDogIXBvaW50LmRlc2NlbmRhbnRzX2hhc19kZXZpY2UsXG4gICAgKTtcblxuICAgIHJldHVybiBzb3VyY2VQb2ludCAmJiBwYXJlbnRQb2ludDtcbiAgfSk7XG5cbmV4cG9ydCBjb25zdCBzZXR1cENoZWNrYm94TGlzdGVuZXIgPSAoc2VsZWN0b3IsIG9uQ2hhbmdlKSA9PiB7XG4gIGNvbnN0IGNoZWNrYm94ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihzZWxlY3Rvcik7XG4gIGlmIChjaGVja2JveCA9PT0gbnVsbCkgcmV0dXJuO1xuICBjaGVja2JveC5hZGRFdmVudExpc3RlbmVyKCdjaGFuZ2UnLCAoKSA9PiBvbkNoYW5nZShjaGVja2JveC5jaGVja2VkKSk7XG59O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBLElBQUFBLFFBQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLFFBQUEsR0FBQUQsT0FBQTtBQUNBLElBQUFFLEtBQUEsR0FBQUgsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFHLG1CQUFBLEdBQUFILE9BQUE7QUFHTyxJQUFNSSxjQUFjLEdBQUcsU0FBakJBLGNBQWNBLENBQUlDLE1BQU0sRUFBRUMsV0FBVyxFQUFFQyxjQUFjLEVBQUs7RUFDckUsSUFBSUMsV0FBZ0IsR0FBR0gsTUFBTSxDQUFDSSxPQUFPO0VBQ3JDLElBQUlILFdBQVcsQ0FBQ0MsY0FBYyxDQUFDLEVBQUU7SUFDL0JDLFdBQVcsQ0FBQ0UsU0FBUyxDQUFDSCxjQUFjLEVBQUU7TUFBRUksT0FBTyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFBRSxDQUFDLENBQUM7RUFDNUQsQ0FBQyxNQUFNO0lBQ0wsSUFBTUMsS0FBWSxHQUFHLEVBQUU7SUFFdkIsS0FBSyxJQUFNQyxRQUFRLElBQUlMLFdBQVcsQ0FBQ00sT0FBTyxFQUFFO01BQzFDLElBQ0VOLFdBQVcsQ0FBQ00sT0FBTyxDQUFDRCxRQUFRLENBQUMsQ0FBQ0UsWUFBWSxLQUFLLE1BQU0sSUFDckRQLFdBQVcsQ0FBQ00sT0FBTyxDQUFDRCxRQUFRLENBQUMsQ0FBQ0UsWUFBWSxLQUFLLE9BQU8sRUFDdEQ7UUFDQUgsS0FBSyxDQUFDSSxJQUFJLENBQUNSLFdBQVcsQ0FBQ00sT0FBTyxDQUFDRCxR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
392
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbGVhZmxldCIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiX2FjdGlvbnMiLCJfaTE4biIsIl9XV1RQRGFzaGJvYXJkU2xpY2UiLCJhcmVhRm9jdXNMb2dpYyIsIm1hcFJlZiIsImlzVmFsaWRBcmVhIiwiYXJlYVRvQ2VudGVyQnkiLCJtYXBJbnN0YW5jZSIsImN1cnJlbnQiLCJmaXRCb3VuZHMiLCJwYWRkaW5nIiwiZ3JvdXAiLCJwcm9wZXJ0eSIsIl9sYXllcnMiLCJrYW5kb19vYmplY3QiLCJwdXNoIiwiT2JqZWN0Iiwia2V5cyIsIkwiLCJmZWF0dXJlR3JvdXAiLCJnZXRCb3VuZHMiLCJsZW5ndGgiLCJleHBvcnRzIiwiYXJlYSIsInNob3VsZExvYWRNYXBPYmplY3RzIiwiZ2xvYmFsX2RhdGEiLCJwb2ludHMiLCJlZGdlcyIsIm1hcCIsInVuZGVmaW5lZCIsInNob3VkTG9hZERlcGVuZGVudE1hcE9iamVjdHMiLCJhcmVhcyIsImdsb2JhbCIsImZpbmRTcGVjaWZpY0xheWVyc0Zyb21NYXAiLCJsYXllcnNUb0ZpbmQiLCJjdXJyZW50TGF5ZXIiLCJpbmNsdWRlcyIsImthbmRvX3BvaW50X3R5cGUiLCJldmVudHNDb3VudGVySWNvbnMiLCJsYXllciIsInpvb21MZXZlbCIsImljb24iLCJvcHRpb25zIiwiaWNvblNpemUiLCJldmVudHNDb3VudEljb24iLCJpY29uQW5jaG9yIiwic2V0SWNvbiIsInNldE9wYWNpdHkiLCJtdWx0aXBsZUxheWVyZWRJY29ucyIsImlzQUZld0xheWVySWNvbiIsImthbmRvX2Zld19sYXllcl9pY29uIiwibWluaUljb24iLCJwcmVzZW50Iiwia2FuZG9fc2Vjb25kYXJ5Iiwia2FuZG9fdGhpcmQiLCJzZWNvbmRhcnkiLCJ0aGlyZCIsImthbmRvX2luZGV4X29iamVjdCIsImJ1YmJsZUljb25PcHRpb25zIiwib25lTGF5ZXJJY29uT3B0aW9ucyIsIm1pZGRsZUljb25PcHRpb25zIiwidG9wSWNvbk9wdGlvbnMiLCJpY29uWm9vbUNvbnRyb2wiLCJsYXllcnMiLCJfem9vbSIsIm1hcFN0eWxlIiwibWFwQm94U3R5bGUiLCJ0aWxlTGF5ZXIiLCJjb25jYXQiLCJhdHRyaWJ1dGlvbiIsIm1heFpvb20iLCJtaW5ab29tIiwiaWQiLCJ0aWxlU2l6ZSIsInpvb21PZmZzZXQiLCJ1cGRhdGVXaGVuWm9vbWluZyIsInVwZGF0ZVdoZW5JZGxlIiwiYmFzZU1hcHMiLCJtYXBCb3hTYXRlbGxpdGVTdHlsZSIsIl9yZWYiLCJkZWZhdWx0TWFwIiwiaTE4biIsInQiLCJzYXRlbGxpdGUiLCJfZGVmaW5lUHJvcGVydHkyIiwiZGVmYXVsdCIsInRvZ2dsZUVkZ2VzVmlzaWJpbGl0eSIsInZpc2libGUiLCJlYWNoTGF5ZXIiLCJQb2x5bGluZSIsIlN5bWJvbCIsImFycm93SGVhZCIsInNldFN0eWxlIiwib3BhY2l0eSIsImVkZ2VzU3BlY2lmaWNMb2dpYyIsImRlZmF1bHRPbiIsImNoZWNrYm94IiwiZG9jdW1lbnQiLCJxdWVyeVNlbGVjdG9yIiwiY2hlY2tlZCIsImN1c3RvbUNvbnRyb2xzIiwibGFiZWwiLCJpbnB1dFR5cGUiLCJkZW55Rm9yV2EiLCJvbkNoYW5nZSIsImlzQ2hlY2tlZCIsImFwcGVuZEN1c3RvbUNoZWNrYm94VG9MZWFmbGV0c0xheWVyQm94IiwibGVhZmxldHNDb250YWluZXIiLCJjdXN0b21Db250YWluZXIiLCJEb21FdmVudCIsIm9uIiwic3R5bGUiLCJkaXNwbGF5IiwiY3JlYXRlQ3VzdG9tQ29udHJvbCIsImNvbnRyb2wiLCJjb250YWluZXIiLCJjb250cm9sQ29udGFpbmVyIiwiY3JlYXRlRWxlbWVudCIsImNsYXNzTmFtZSIsImlubmVySFRNTCIsImFkZEV2ZW50TGlzdGVuZXIiLCJlIiwidGFyZ2V0IiwiYXBwZW5kQ2hpbGQiLCJjdXN0b21GdW5jdGlvbmFsaXR5Rm9yTWFwTGF5ZXJzIiwibWFwVHlwZXMiLCJhcmd1bWVudHMiLCJ3YUlkIiwiZm9yV1dUUERhc2hib2FyZCIsImNvbnRyb2xsZXIiLCJwb3NpdGlvbiIsImFkZFRvIiwiZ2V0Q29udGFpbmVyIiwiZm9yRWFjaCIsImluaXRpYWxpemVNYXAiLCJtYXBab29tTGV2ZWwiLCJkaXNwYXRjaCIsInNldE1hcFpvb21MZXZlbCIsInNob3dFZGdlc0J5RGVmYXVsdCIsIk1hcCIsImNlbnRlciIsInpvb21TbmFwIiwiem9vbSIsImF0dHJpYnV0aW9uQ29udHJvbCIsInByZWZlckNhbnZhcyIsInNldE1hcCIsIndoZW5SZWFkeSIsInZhbHVlcyIsInNldFRpbWVvdXQiLCJpbnZhbGlkYXRlU2l6ZSIsImVyciIsImNvbnNvbGUiLCJlcnJvciIsInN0b3JlTWFwIiwic2lkZU5hdkV4cGFuZGVkIiwiZXZlbnQiLCJvcmlnaW5hbEV2ZW50Iiwia2V5IiwiY2xvc2VQb3B1cCIsImJvZHkiLCJmb2N1cyIsImdldFpvb20iLCJjbHVzdGVyR3JvdXBPcHRpb25zIiwic3BpZGVyZnlPbk1heFpvb20iLCJzaG93Q292ZXJhZ2VPbkhvdmVyIiwiem9vbVRvQm91bmRzT25DbGljayIsImFuaW1hdGUiLCJkaXNhYmxlQ2x1c3RlcmluZ0F0Wm9vbSIsInJlbW92ZU91dHNpZGVWaXNpYmxlQm91bmRzIiwiY2h1bmtlZExvYWRpbmciLCJpY29uQ3JlYXRlRnVuY3Rpb24iLCJjbHVzdGVyIiwiRGl2SWNvbiIsImh0bWwiLCJfY2hpbGRDb3VudCIsIlBvaW50Iiwiem9vbUxldmVscyIsImZpbHRlclBvaW50cyIsImhhc0RldmljZSIsImZpbHRlciIsInBvaW50IiwiaGFzX2RldmljZSIsImZpbmRQb2ludCIsInBvaW50SWQiLCJoYXNEZXZpY2VDaGVjayIsImZpbmQiLCJmaWx0ZXJFZGdlcyIsImlzTW9uaXRvcmVkIiwiZWRnZSIsInNvdXJjZVBvaW50Iiwic291cmNlX3BvaW50X2lkIiwiZGVzY2VuZGFudHNfaGFzX2RldmljZSIsInBhcmVudFBvaW50IiwidGFyZ2V0X3BvaW50X2lkIiwic2V0dXBDaGVja2JveExpc3RlbmVyIiwic2VsZWN0b3IiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvV2lkZ2V0cy9NYXAvTWFwVXRpbHMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IEwsIHsgUG9pbnRUdXBsZSB9IGZyb20gJ2xlYWZsZXQnO1xuaW1wb3J0IHsgc2lkZU5hdkV4cGFuZGVkLCBzdG9yZU1hcCB9IGZyb20gJy4uLy4uL3N0b3JlL2dsb2JhbC9hY3Rpb25zJztcbmltcG9ydCBpMThuIGZyb20gJ3NyYy91dGlsaXRpZXMvaTE4bic7XG5pbXBvcnQgeyBzZXRNYXAgfSBmcm9tICcuLi8uLi9zdG9yZS9XV1RQRGFzaGJvYXJkL1dXVFBEYXNoYm9hcmRTbGljZSc7XG5cbmV4cG9ydCBjb25zdCBhcmVhRm9jdXNMb2dpYyA9IChtYXBSZWYsIGlzVmFsaWRBcmVhLCBhcmVhVG9DZW50ZXJCeSkgPT4ge1xuICBsZXQgbWFwSW5zdGFuY2U6IGFueSA9IG1hcFJlZi5jdXJyZW50O1xuICBpZiAoaXNWYWxpZEFyZWEoYXJlYVRvQ2VudGVyQnkpKSB7XG4gICAgbWFwSW5zdGFuY2UuZml0Qm91bmRzKGFyZWFUb0NlbnRlckJ5LCB7IHBhZGRpbmc6IFswLCAwXSB9KTtcbiAgfSBlbHNlIHtcbiAgICBjb25zdCBncm91cDogYW55W10gPSBbXTtcblxuICAgIGZvciAoY29uc3QgcHJvcGVydHkgaW4gbWFwSW5zdGFuY2UuX2xheWVycykge1xuICAgICAgaWYgKFxuICAgICAgICBtYXBJbnN0YW5jZS5fbGF5ZXJzW3Byb3BlcnR5XS5rYW5kb19vYmplY3QgPT09ICdBcmVhJyB8fFxuICAgICAgICBtYXBJbnN0YW5jZS5fbGF5ZXJzW3Byb3BlcnR5XS5rYW5kb19vYmplY3QgPT09ICdQb2ludCdcbiAgICAgICkge1xuICAgICAgICBncm91cC5wdXNoKG1hcEluc3RhbmNlLl9sYXllcnNbcHJvcGVydHldKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoT2JqZWN0LmtleXMoTC5mZWF0dXJlR3JvdXAoZ3JvdXApLmdldEJvdW5kcygpKS5sZW5ndGggIT09IDApIHtcbiAgICAgIG1hcEluc3RhbmNlLmZpdEJvdW5kcyhMLmZlYXR1cmVHcm91cChncm91cCkuZ2V0Qm91bmRzKCksIHtcbiAgICAgICAgcGFkZGluZzogWzEwMCwgMTAwXSxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuICAvLyBtYXBJbnN0YW5jZS5pbnZhbGlkYXRlU2l6ZSh0cnVlKTtcbn07XG5cbmV4cG9ydCBjb25zdCBpc1ZhbGlkQXJlYSA9IChhcmVhKSA9PiB7XG4gIHJldHVybiBhcmVhICYmIGFyZWEubGVuZ3RoID4gMCAmJiBPYmplY3Qua2V5cyhhcmVhWzBdKS5sZW5ndGggPiAwO1xufTtcblxuZXhwb3J0IGNvbnN0IHNob3VsZExvYWRNYXBPYmplY3RzID0gKGdsb2JhbF9kYXRhLCBtYXBSZWYsIHBvaW50cywgZWRnZXMpID0+IHtcbiAgcmV0dXJuIChcbiAgICBnbG9iYWxfZGF0YS5tYXAgIT09IHVuZGVmaW5lZCAmJlxuICAgIG1hcFJlZi5jdXJyZW50ICE9PSBudWxsICYmXG4gICAgZWRnZXMgIT09IHVuZGVmaW5lZCAmJlxuICAgIHBvaW50cyAhPT0gdW5kZWZpbmVkXG4gICk7XG59O1xuXG5leHBvcnQgY29uc3Qgc2hvdWRMb2FkRGVwZW5kZW50TWFwT2JqZWN0cyA9IChcbiAgZWRnZXMsXG4gIGFyZWFzLFxuICBnbG9iYWwsXG4gIG1hcFJlZixcbiAgcG9pbnRzLFxuKSA9PiB7XG4gIHJldHVybiAoXG4gICAgZ2xvYmFsLm1hcCAhPT0gdW5kZWZpbmVkICYmXG4gICAgbWFwUmVmLmN1cnJlbnQgIT09IG51bGwgJiZcbiAgICBlZGdlcy5sZW5ndGggPj0gMCAmJlxuICAgIGFyZWFzLmxlbmd0aCA+PSAwICYmXG4gICAgcG9pbnRzLmxlbmd0aCA+PSAwXG4gICk7XG59O1xuXG5leHBvcnQgY29uc3QgZmluZFNwZWNpZmljTGF5ZXJzRnJvbU1hcCA9IChcbiAgbGF5ZXJzVG9GaW5kOiBzdHJpbmdbXSxcbiAgY3VycmVudExheWVyLFxuKSA9PiB7XG4gIHJldHVybiAoXG4gICAgbGF5ZXJzVG9GaW5kLmluY2x1ZGVzKGN1cnJlbnRMYXllci5rYW5kb19vYmplY3QpICYmXG4gICAgY3VycmVudExheWVyLmthbmRvX3BvaW50X3R5cGUgIT09ICdNYW5ob2xlJ1xuICApO1xufTtcblxuZXhwb3J0IGNvbnN0IGV2ZW50c0NvdW50ZXJJY29ucyA9IChsYXllciwgem9vbUxldmVsKSA9PiB7XG4gIGxldCBpY29uID0gbGF5ZXIub3B0aW9ucy5pY29uO1xuICBpY29uLm9wdGlvbnMuaWNvblNpemUgPSBldmVudHNDb3VudEljb24oem9vbUxldmVsKS5pY29uU2l6ZTtcbiAgaWNvbi5vcHRpb25zLmljb25BbmNob3IgPSBldmVudHNDb3VudEljb24oem9vbUxldmVsKS5pY29uQW5jaG9yO1xuICBsYXllci5zZXRJY29uKGljb24pO1xuICBsYXllci5zZXRPcGFjaXR5KDEpO1xufTtcblxuZXhwb3J0IGNvbnN0IG11bHRpcGxlTGF5ZXJlZEljb25zID0gKGxheWVyLCB6b29tTGV2ZWwpID0+IHtcbiAgbGV0IGljb24gPSBsYXllci5vcHRpb25zLmljb247XG4gIGxldCBpc0FGZXdMYXllckljb24gPSBsYXllci5rYW5kb19mZXdfbGF5ZXJfaWNvbjtcbiAgbGV0IG1pbmlJY29uID0ge1xuICAgIHByZXNlbnQ6IGxheWVyLmthbmRvX3NlY29uZGFyeSB8fCBsYXllci5rYW5kb190aGlyZCxcbiAgICBzZWNvbmRhcnk6IGxheWVyLmthbmRvX3NlY29uZGFyeSxcbiAgICB0aGlyZDogbGF5ZXIua2FuZG9fdGhpcmQsXG4gIH07XG5cbiAgaWYgKGxheWVyLmthbmRvX2luZGV4X29iamVjdCA9PT0gMCkge1xuICAgIGlmIChpc0FGZXdMYXllckljb24pIHtcbiAgICAgIGljb24ub3B0aW9ucy5pY29uU2l6ZSA9IGJ1YmJsZUljb25PcHRpb25zKHpvb21MZXZlbCwgbWluaUljb24pLmljb25TaXplO1xuICAgICAgaWNvbi5vcHRpb25zLmljb25BbmNob3IgPSBidWJibGVJY29uT3B0aW9ucyhcbiAgICAgICAgem9vbUxldmVsLFxuICAgICAgICBtaW5pSWNvbixcbiAgICAgICkuaWNvbkFuY2hvcjtcbiAgICB9IGVsc2Uge1xuICAgICAgaWNvbi5vcHRpb25zLmljb25TaXplID0gb25lTGF5ZXJJY29uT3B0aW9ucyh6b29tTGV2ZWwpLmljb25TaXplO1xuICAgICAgaWNvbi5vcHRpb25zLmljb25BbmNob3IgPSBvbmVMYXllckljb25PcHRpb25zKHpvb21MZXZlbCkuaWNvbkFuY2hvcjtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgaWYgKGxheWVyLmthbmRvX2luZGV4X29iamVjdCA9PT0gMSkge1xuICAgICAgaWNvbi5vcHRpb25zLmljb25TaXplID0gbWlkZGxlSWNvbk9wdGlvbnMoem9vbUxldmVsLCBtaW5pSWNvbikuaWNvblNpemU7XG4gICAgICBpY29uLm9wdGlvbnMuaWNvbkFuY2hvciA9IG1pZGRsZUljb25PcHRpb25zKFxuICAgICAgICB6b29tTGV2ZWwsXG4gICAgICAgIG1pbmlJY29uLFxuICAgICAgKS5pY29uQW5jaG9yO1xuICAgIH0gZWxzZSB7XG4gICAgICBpY29uLm9wdGlvbnMuaWNvblNpemUgPSB0b3BJY29uT3B0aW9ucyh6b29tTGV2ZWwsIG1pbmlJY29uKS5pY29uU2l6ZTtcbiAgICAgIGljb24ub3B0aW9ucy5pY29uQW5jaG9yID0gdG9wSWNvbk9wdGlvbnMoem9vbUxldmVsLCBtaW5pSWNvbikuaWNvbkFuY2hvcjtcbiAgICB9XG4gIH1cblxuICBsYXllci5zZXRJY29uKGljb24pO1xufTtcblxuY29uc3Qgb25lTGF5ZXJJY29uT3B0aW9ucyA9ICh6b29tTGV2ZWwpID0+IHtcbiAgcmV0dXJuIHtcbiAgICBpY29uU2l6ZTogW3pvb21MZXZlbCAqIDMuMywgem9vbUxldmVsICogMy4zXSBhcyBQb2ludFR1cGxlLFxuICAgIGljb25BbmNob3I6IFt6b29tTGV2ZWwgKiAxLjcsIHpvb21MZXZlbCAqIDMuN10gYXMgUG9pbnRUdXBsZSxcbiAgfTtcbn07XG5cbmV4cG9ydCBjb25zdCBldmVudHNDb3VudEljb24gPSAoem9vbUxldmVsKSA9PiB7XG4gIHJldHVybiB7XG4gICAgaWNvblNpemU6IFt6b29tTGV2ZWwgKiAyLjUsIHpvb21MZXZlbCAqIDIuNV0gYXMgUG9pbnRUdXBsZSxcbiAgICBpY29uQW5jaG9yOiBbem9vbUxldmVsICogMCwgem9vbUxldmVsICogNF0gYXMgUG9pbnRUdXBsZSxcbiAgfTtcbn07XG5cbmV4cG9ydCBjb25zdCBidWJibGVJY29uT3B0aW9ucyA9ICh6b29tTGV2ZWwsIG1pbmlJY29uKSA9PiB7XG4gIGlmIChtaW5pSWNvbi5wcmVzZW50KSB7XG4gICAgaWYgKG1pbmlJY29uLnNlY29uZGFyeSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgaWNvblNpemU6IFt6b29tTGV2ZWwgKiAxLjk4LCB6b29tTGV2ZWwgKiAyLjNdIGFzIFBvaW50VHVwbGUsXG4gICAgICAgIGljb25BbmNob3I6IFt6b29tTGV2ZWwgKiAwLCB6b29tTGV2ZWwgKiA0XSBhcyBQb2ludFR1cGxlLFxuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgaWNvblNpemU6IFt6b29tTGV2ZWwgKiAxLjk4LCB6b29tTGV2ZWwgKiAyLjNdIGFzIFBvaW50VHVwbGUsXG4gICAgICAgIGljb25BbmNob3I6IFt6b29tTGV2ZWwgKiAwLCB6b29tTGV2ZWwgKiAyXSBhcyBQb2ludFR1cGxlLFxuICAgICAgfTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGljb25TaXplOiBbem9vbUxldmVsICogMy45OCwgem9vbUxldmVsICogNC4zXSBhcyBQb2ludFR1cGxlLFxuICAgICAgaWNvbkFuY2hvcjogW3pvb21MZXZlbCAqIDIsIHpvb21MZXZlbCAqIDRdIGFzIFBvaW50VHVwbGUsXG4gICAgfTtcbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IG1pZGRsZUljb25PcHRpb25zID0gKHpvb21MZXZlbCwgbWluaUljb24pID0+IHtcbiAgaWYgKG1pbmlJY29uLnByZXNlbnQpIHtcbiAgICBpZiAobWluaUljb24uc2Vjb25kYXJ5KSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBpY29uU2l6ZTogW3pvb21MZXZlbCAqIDEuMSwgem9vbUxldmVsICogMS4xXSxcbiAgICAgICAgaWNvbkFuY2hvcjogW3pvb21MZXZlbCAqIC0wLjQ1LCB6b29tTGV2ZWwgKiAzLjVdLFxuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgaWNvblNpemU6IFt6b29tTGV2ZWwgKiAxLjEsIHpvb21MZXZlbCAqIDEuMV0sXG4gICAgICAgIGljb25BbmNob3I6IFt6b29tTGV2ZWwgKiAtMC40NSwgem9vbUxldmVsICogMS41XSxcbiAgICAgIH07XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHJldHVybiB7XG4gICAgICBpY29uU2l6ZTogW3pvb21MZXZlbCAqIDIuNSwgem9vbUxldmVsICogMi41XSxcbiAgICAgIGljb25BbmNob3I6IFt6b29tTGV2ZWwgKiAxLjI5NSwgem9vbUxldmVsICogMy4zNV0sXG4gICAgfTtcbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IHRvcEljb25PcHRpb25zID0gKHpvb21MZXZlbCwgbWluaUljb24pID0+IHtcbiAgaWYgKG1pbmlJY29uLnByZXNlbnQpIHtcbiAgICBpZiAobWluaUljb24uc2Vjb25kYXJ5KSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBpY29uU2l6ZTogW3pvb21MZXZlbCAqIDAuOSwgem9vbUxldmVsICogMS44XSxcbiAgICAgICAgaWNvbkFuY2hvcjogW3pvb21MZXZlbCAqIC0wLjUsIHpvb21MZXZlbCAqIDMuOF0sXG4gICAgICB9O1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBpY29uU2l6ZTogW3pvb21MZXZlbCAqIDEuNiwgem9vbUxldmVsICogMi41XSxcbiAgICAgICAgaWNvbkFuY2hvcjogW3pvb21MZXZlbCAqIC0wLjIsIHpvb21MZXZlbCAqIDIuMV0sXG4gICAgICB9O1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICByZXR1cm4ge1xuICAgICAgaWNvblNpemU6IFt6b29tTGV2ZWwgKiAzLjksIHpvb21MZXZlbCAqIDMuOF0sXG4gICAgICBpY29uQW5jaG9yOiBbem9vbUxldmVsICogMiwgem9vbUxldmVsICogMy44XSxcbiAgICB9O1xuICB9XG59O1xuXG5leHBvcnQgY29uc3QgaWNvblpvb21Db250cm9sID0gKG1hcCkgPT4ge1xuICBsZXQgbGF5ZXJzID0gbWFwLl9sYXllcnM7XG4gIGxldCB6b29tTGV2ZWwgPSBtYXAuX3pvb207XG5cbiAgZm9yIChjb25zdCBwcm9wZXJ0eSBpbiBsYXllcnMpIHtcbiAgICBpZiAoZmluZFNwZWNpZmljTGF5ZXJzRnJvbU1hcChbJ0ljb25OdW1iZXInXSwgbGF5ZXJzW3Byb3BlcnR5XSkpIHtcbiAgICAgIGV2ZW50c0NvdW50ZXJJY29ucyhsYXllcnNbcHJvcGVydHldLCB6b29tTGV2ZWwpO1xuICAgIH1cblxuICAgIGlmIChmaW5kU3BlY2lmaWNMYXllcnNGcm9tTWFwKFsnUG9pbnQnLCAnSWNvbiddLCBsYXllcnNbcHJvcGVydHldKSkge1xuICAgICAgbXVsdGlwbGVMYXllcmVkSWNvbnMobGF5ZXJzW3Byb3BlcnR5XSwgem9vbUxldmVsKTtcbiAgICB9XG5cbiAgICBpZiAoXG4gICAgICBmaW5kU3BlY2lmaWNMYXllcnNGcm9tTWFwKFsnU2FtcGxpbmcnLCAnT2JzZXJ2YXRpb24nXSwgbGF5ZXJzW3Byb3BlcnR5XSlcbiAgICApIHtcbiAgICAgIG11bHRpcGxlTGF5ZXJlZEljb25zKGxheWVyc1twcm9wZXJ0eV0sIHpvb21MZXZlbCk7XG4gICAgfVxuICB9XG59O1xuXG5leHBvcnQgY29uc3QgbWFwU3R5bGUgPSAobWFwQm94U3R5bGUpID0+IHtcbiAgcmV0dXJuIEwudGlsZUxheWVyKFxuICAgIGBodHRwczovL2FwaS5tYXBib3guY29tL3N0eWxlcy92MS9uYWRhdi1rYW5kby8ke21hcEJveFN0eWxlfS90aWxlcy8yNTYve3p9L3t4fS97eX1AMng/YWNjZXNzX3Rva2VuPXBrLmV5SjFJam9pYm1Ga1lYWXRhMkZ1Wkc4aUxDSmhJam9pWTJwdmVIcHJkR1J4TUhsbWRETjRiRGcwZHpKeE9YYzRkU0o5LkotMm9ocTdqNHlLTmJtNE5fLVA2cXdgLFxuICAgIHtcbiAgICAgIGF0dHJpYnV0aW9uOlxuICAgICAgICAnTWFwIGRhdGEgJmNvcHk7IDxhIGhyZWY9XCJodHRwczovL3d3dy5vcGVuc3RyZWV0bWFwLm9yZy9cIj5PcGVuU3RyZWV0TWFwPC9hPiBjb250cmlidXRvcnMsIDxhIGhyZWY9XCJodHRwczovL2NyZWF0aXZlY29tbW9ucy5vcmcvbGljZW5zZXMvYnktc2EvMi4wL1wiPkNDLUJZLVNBPC9hPiwgSW1hZ2VyeSDCqSA8YSBocmVmPVwiaHR0cHM6Ly93d3cubWFwYm94LmNvbS9cIj5NYXBib3g8L2E+JyxcbiAgICAgIG1heFpvb206IDE4LFxuICAgICAgbWluWm9vbTogMixcbiAgICAgIGlkOiAnbWFwYm94L3N0cmVldHMtdjExJyxcbiAgICAgIHRpbGVTaXplOiA1MTIsXG4gICAgICB6b29tT2Zmc2V0OiAtMSxcbiAgICAgIHVwZGF0ZVdoZW5ab29taW5nOiBmYWxzZSxcbiAgICAgIHVwZGF0ZVdoZW5JZGxlOiBmYWxzZSxcbiAgICB9LFxuICApO1xufTtcblxuZXhwb3J0IGNvbnN0IGJhc2VNYXBzID0gKG1hcEJveFN0eWxlLCBtYXBCb3hTYXRlbGxpdGVTdHlsZSkgPT4ge1xuICBsZXQgZGVmYXVsdE1hcCA9IGkxOG4udCgnbWFwLmxheWVycy5kZWZhdWx0Jyk7XG4gIGxldCBzYXRlbGxpdGUgPSBpMThuLnQoJ21hcC5sYXllcnMuc2F0ZWxsaXRlJyk7XG4gIHJldHVybiB7XG4gICAgW2RlZmF1bHRNYXBdOiBtYXBTdHlsZShtYXBCb3hTdHlsZSksXG4gICAgW3NhdGVsbGl0ZV06IG1hcFN0eWxlKG1hcEJveFNhdGVsbGl0ZVN0eWxlKSxcbiAgfTtcbn07XG5cbmV4cG9ydCBjb25zdCB0b2dnbGVFZGdlc1Zpc2liaWxpdHkgPSAodmlzaWJsZSwgbWFwKSA9PiB7XG4gIG1hcC5lYWNoTGF5ZXIoKGxheWVyKSA9PiB7XG4gICAgaWYgKFxuICAgICAgKGxheWVyIGluc3RhbmNlb2YgTC5Qb2x5bGluZSAmJiBsYXllci5rYW5kb19vYmplY3QgIT09ICdBcmVhJykgfHxcbiAgICAgIGxheWVyIGluc3RhbmNlb2YgTC5TeW1ib2wuYXJyb3dIZWFkXG4gICAgKSB7XG4gICAgICBsYXllci5zZXRTdHlsZSh7IG9wYWNpdHk6IHZpc2libGUgPyAxIDogMCB9KTtcbiAgICB9XG4gIH0pO1xufTtcblxuLy8gZXhwb3J0IGNvbnN0IHRvZ2dsZU1vbml0b3JlZFBvaW50c1Zpc2liaWxpdHkgPSAodmlzaWJsZSkgPT4ge1xuLy8gICBjb25zb2xlLndhcm4oJ3RvZ2dsZU1vbml0b3JlZFBvaW50c1Zpc2liaWxpdHknLCB2aXNpYmxlKTtcbi8vIH07XG5cbmV4cG9ydCBjb25zdCBlZGdlc1NwZWNpZmljTG9naWMgPSAoZGVmYXVsdE9uLCBtYXApID0+IHtcbiAgbGV0IGNoZWNrYm94ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI2VkZ2VzLWNoZWNrYm94Jyk7XG4gIGNoZWNrYm94LmNoZWNrZWQgPSBkZWZhdWx0T247XG59O1xuXG5jb25zdCBjdXN0b21Db250cm9scyA9IChtYXApID0+IHtcbiAgcmV0dXJuIFtcbiAgICB7XG4gICAgICBsYWJlbDogaTE4bi50KCdtYXAubGF5ZXJzLm5ldHdvcmtfbGluZXMnKSxcbiAgICAgIGlkOiAnZWRnZXMtY2hlY2tib3gnLFxuICAgICAgaW5wdXRUeXBlOiAnY2hlY2tib3gnLFxuICAgICAgZGVueUZvcldhOiBbNTE4XSxcbiAgICAgIG9uQ2hhbmdlOiAoaXNDaGVja2VkKSA9PiB0b2dnbGVFZGdlc1Zpc2liaWxpdHkoaXNDaGVja2VkLCBtYXApLFxuICAgIH0sXG5cbiAgICB7XG4gICAgICBsYWJlbDogJ1Nob3cgb25seSBtb25pdG9yZWQgcG9pbnRzJyxcbiAgICAgIGlkOiAnbW9uaXRvcmVkLXBvaW50cy1jaGVja2JveCcsXG4gICAgICBpbnB1dFR5cGU6ICdjaGVja2JveCcsXG4gICAgICBvbkNoYW5nZTogKGlzQ2hlY2tlZCkgPT4gKCkgPT4ge30sXG4gICAgfSxcbiAgXTtcbn07XG5cbmNvbnN0IGFwcGVuZEN1c3RvbUNoZWNrYm94VG9MZWFmbGV0c0xheWVyQm94ID0gKFxuICBsZWFmbGV0c0NvbnRhaW5lcixcbiAgY3VzdG9tQ29udGFpbmVyLFxuKSA9PiB7XG4gIEwuRG9tRXZlbnQub24obGVhZmxldHNDb250YWluZXIsICdtb3VzZW92ZXInLCBmdW5jdGlvbiAoKSB7XG4gICAgY3VzdG9tQ29udGFpbmVyLnN0eWxlLmRpc3BsYXkgPSAnYmxvY2snO1xuICB9KTtcblxuICBMLkRvbUV2ZW50Lm9uKGxlYWZsZXRzQ29udGFpbmVyLCAnbW91c2VvdXQnLCBmdW5jdGlvbiAoKSB7XG4gICAgY3VzdG9tQ29udGFpbmVyLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XG4gIH0pO1xufTtcblxuY29uc3QgY3JlYXRlQ3VzdG9tQ29udHJvbCA9IChjb250cm9sLCBjb250YWluZXIpID0+IHtcbiAgbGV0IGNvbnRyb2xDb250YWluZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgY29udHJvbENvbnRhaW5lci5jbGFzc05hbWUgPSAnbGVhZmxldC1jb250cm9sLWxheWVycy1vdmVybGF5cyc7XG4gIGNvbnRyb2xDb250YWluZXIuaW5uZXJIVE1MID0gYFxuICAgICAgPGxhYmVsPlxuICAgICAgICA8aW5wdXQgdHlwZT1cIiR7Y29udHJvbC5pbnB1dFR5cGV9XCIgaWQ9XCIke2NvbnRyb2wuaWR9XCIgLz4gJHtjb250cm9sLmxhYmVsfVxuICAgICAgPC9sYWJlbD5cbiAgICBgO1xuXG4gIGNvbnRyb2xDb250YWluZXJcbiAgICAucXVlcnlTZWxlY3RvcihgIyR7Y29udHJvbC5pZH1gKVxuICAgIC5hZGRFdmVudExpc3RlbmVyKCdjaGFuZ2UnLCBmdW5jdGlvbiAoZSkge1xuICAgICAgY29uc3QgaXNDaGVja2VkID0gZS50YXJnZXQuY2hlY2tlZDtcbiAgICAgIGNvbnRyb2wub25DaGFuZ2UoaXNDaGVja2VkKTtcbiAgICB9KTtcblxuICBjb250cm9sQ29udGFpbmVyLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XG4gIGNvbnRhaW5lcj8uYXBwZW5kQ2hpbGQoY29udHJvbENvbnRhaW5lcik7XG5cbiAgYXBwZW5kQ3VzdG9tQ2hlY2tib3hUb0xlYWZsZXRzTGF5ZXJCb3goY29udGFpbmVyLCBjb250cm9sQ29udGFpbmVyKTtcbn07XG5cbmV4cG9ydCBjb25zdCBjdXN0b21GdW5jdGlvbmFsaXR5Rm9yTWFwTGF5ZXJzID0gKFxuICBtYXAsXG4gIG1hcFR5cGVzLFxuICBkZWZhdWx0T24gPSB0cnVlLFxuICB3YUlkLFxuICBmb3JXV1RQRGFzaGJvYXJkLFxuKSA9PiB7XG4gIGxldCBjb250cm9sbGVyID0gTC5jb250cm9sXG4gICAgLmxheWVycyhtYXBUeXBlcywge30sIHsgcG9zaXRpb246ICdib3R0b21yaWdodCcgfSlcbiAgICAuYWRkVG8obWFwKTtcbiAgbGV0IGNvbnRhaW5lciA9IGNvbnRyb2xsZXIuZ2V0Q29udGFpbmVyKCk7XG5cbiAgaWYgKGZvcldXVFBEYXNoYm9hcmQpIHtcbiAgICBjdXN0b21Db250cm9scyhtYXApLmZvckVhY2goKGNvbnRyb2wpID0+IHtcbiAgICAgIGlmIChjb250cm9sLmRlbnlGb3JXYSAmJiBjb250cm9sLmRlbnlGb3JXYS5pbmNsdWRlcyh3YUlkKSkgcmV0dXJuO1xuXG4gICAgICBjcmVhdGVDdXN0b21Db250cm9sKGNvbnRyb2wsIGNvbnRhaW5lcik7XG4gICAgICBlZGdlc1NwZWNpZmljTG9naWMoZGVmYXVsdE9uLCBtYXApO1xuICAgIH0pO1xuICB9XG59O1xuXG5leHBvcnQgY29uc3QgaW5pdGlhbGl6ZU1hcCA9IChcbiAgbWFwWm9vbUxldmVsLFxuICBtYXBCb3hTdHlsZSxcbiAgbWFwQm94U2F0ZWxsaXRlU3R5bGUsXG4gIG1hcFJlZixcbiAgZGlzcGF0Y2gsXG4gIGlzVmFsaWRBcmVhLFxuICBhcmVhVG9DZW50ZXJCeSxcbiAgc2V0TWFwWm9vbUxldmVsLFxuICBmb3JXV1RQRGFzaGJvYXJkLFxuICBzaG93RWRnZXNCeURlZmF1bHQsXG4gIHdhSWQgPSAwLFxuKSA9PiB7XG4gIC8vIEB0cy1pZ25vcmVcbiAgbWFwUmVmLmN1cnJlbnQgPSBuZXcgTC5NYXAoJ21hcCcsIHtcbiAgICBjZW50ZXI6IFswLCAwXSxcbiAgICB6b29tU25hcDogMSxcbiAgICB6b29tOiBtYXBab29tTGV2ZWwsXG4gICAgYXR0cmlidXRpb25Db250cm9sOiBmYWxzZSxcbiAgICBwcmVmZXJDYW52YXM6IGZhbHNlLFxuICB9KTtcblxuICBpZiAoZm9yV1dUUERhc2hib2FyZCkgZGlzcGF0Y2goc2V0TWFwKG1hcFJlZi5jdXJyZW50KSk7XG5cbiAgbWFwUmVmLmN1cnJlbnQud2hlblJlYWR5KCgpID0+IHtcbiAgICBsZXQgbWFwID0gbWFwUmVmLmN1cnJlbnQ7XG4gICAgY29uc3QgbWFwVHlwZXMgPSBiYXNlTWFwcyhtYXBCb3hTdHlsZSwgbWFwQm94U2F0ZWxsaXRlU3R5bGUpO1xuXG4gICAgY3VzdG9tRnVuY3Rpb25hbGl0eUZvck1hcExheWVycyhcbiAgICAgIG1hcCxcbiAgICAgIG1hcFR5cGVzLFxuICAgICAgc2hvd0VkZ2VzQnlEZWZhdWx0LFxuICAgICAgd2FJZCxcbiAgICAgIGZvcldXVFBEYXNoYm9hcmQsXG4gICAgKTtcblxuICAgIC8vIFRoZSBuYW1lIG9mIHRoZSBsYXllciBjaGFuZ2VzIGJldHdlZW4gbGFuZ3VhZ2VzIHNvIHRoZXJlIHdhcyBhIG5lZWQgdG8gZ2V0IHRvIHRoZSBmaXJzdCBsYXllclxuICAgIE9iamVjdC52YWx1ZXMobWFwVHlwZXMpWzBdLmFkZFRvKG1hcCk7XG5cbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGlmICghbWFwUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICB0cnkge1xuICAgICAgICBtYXBSZWYuY3VycmVudC5pbnZhbGlkYXRlU2l6ZSh0cnVlKTtcbiAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICBjb25zb2xlLmVycm9yKCdlcnInLCBlcnIpO1xuICAgICAgfVxuXG4gICAgICBkaXNwYXRjaChzdG9yZU1hcChtYXBSZWYuY3VycmVudCkpO1xuICAgICAgZGlzcGF0Y2goc2lkZU5hdkV4cGFuZGVkKHRydWUpKTtcblxuICAgICAgbWFwLm9uKCdrZXlkb3duJywgKGV2ZW50KSA9PiB7XG4gICAgICAgIGlmIChldmVudC5vcmlnaW5hbEV2ZW50LmtleSA9PT0gJ0VzY2FwZScpIHtcbiAgICAgICAgICBtYXAuY2xvc2VQb3B1cCgpO1xuICAgICAgICAgIGRvY3VtZW50LmJvZHkuZm9jdXMoKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSwgMCk7XG4gICAgaWYgKG1hcFJlZi5jdXJyZW50ICYmIGlzVmFsaWRBcmVhKGFyZWFUb0NlbnRlckJ5KSkge1xuICAgICAgbWFwUmVmLmN1cnJlbnQuZml0Qm91bmRzKGFyZWFUb0NlbnRlckJ5KTtcbiAgICB9XG4gIH0pO1xuXG4gIG1hcFJlZi5jdXJyZW50Lm9uKCd6b29tZW5kJywgZnVuY3Rpb24gKGUpIHtcbiAgICBpZiAoIW1hcFJlZi5jdXJyZW50KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGxldCB6b29tID0gbWFwUmVmLmN1cnJlbnQuZ2V0Wm9vbSgpO1xuICAgIHNldE1hcFpvb21MZXZlbCh6b29tKTtcbiAgfSk7XG59O1xuXG5leHBvcnQgY29uc3QgY2x1c3Rlckdyb3VwT3B0aW9ucyA9IHtcbiAgc3BpZGVyZnlPbk1heFpvb206IGZhbHNlLFxuICBzaG93Q292ZXJhZ2VPbkhvdmVyOiBmYWxzZSxcbiAgem9vbVRvQm91bmRzT25DbGljazogdHJ1ZSxcbiAgYW5pbWF0ZTogdHJ1ZSxcbiAgZGlzYWJsZUNsdXN0ZXJpbmdBdFpvb206IDEwLFxuICByZW1vdmVPdXRzaWRlVmlzaWJsZUJvdW5kczogZmFsc2UsXG4gIGNodW5rZWRMb2FkaW5nOiB0cnVlLFxuICBpY29uQ3JlYXRlRnVuY3Rpb246IChjbHVzdGVyKSA9PiB7XG4gICAgcmV0dXJuIG5ldyBMLkRpdkljb24oe1xuICAgICAgaHRtbDogYDxkaXY+PHNwYW4+JHtjbHVzdGVyLl9jaGlsZENvdW50fTwvc3Bhbj48L2Rpdj5cbiAgICAgICAgICAgICA8ZGl2IGNsYXNzPSdtYXJrZXItY2x1c3Rlci1uYW1lJz4ke2kxOG4udCgnaW5kdXN0cmllcycpfTwvZGl2PmAsXG4gICAgICBjbGFzc05hbWU6ICdtYXJrZXItY2x1c3RlcicsXG4gICAgICBpY29uU2l6ZTogbmV3IEwuUG9pbnQoNDAsIDQwKSxcbiAgICB9KTtcbiAgfSxcbn07XG5cbmV4cG9ydCBjb25zdCB6b29tTGV2ZWxzID0ge1xuICAxOiAnWExhcmdlJyxcbiAgMjogJ1hMYXJnZScsXG4gIDM6ICdYTGFyZ2UnLFxuICA0OiAnWExhcmdlJyxcbiAgNTogJ1hMYXJnZScsXG4gIDY6ICdYTGFyZ2UnLFxuICA3OiAnTGFyZ2UnLFxuICA4OiAnTGFyZ2UnLFxuICA5OiAnTGFyZ2UnLFxuICAxMDogJ0xhcmdlJyxcbiAgMTE6ICdNTGFyZ2UnLFxuICAxMjogJ01MYXJnZScsXG4gIDEzOiAnTUxhcmdlJyxcbiAgMTQ6ICdNTGFyZ2UnLFxuICAxNTogJ01lZGl1bScsXG4gIDE2OiAnTWVkaXVtJyxcbiAgMTc6ICdTbWFsbCcsXG4gIDE4OiAnU21hbGwnLFxufTtcblxuZXhwb3J0IGNvbnN0IGZpbHRlclBvaW50cyA9IChwb2ludHMsIGhhc0RldmljZSkgPT5cbiAgcG9pbnRzLmZpbHRlcigocG9pbnQpID0+IHBvaW50Lmhhc19kZXZpY2UgPT09IGhhc0RldmljZSk7XG5cbmV4cG9ydCBjb25zdCBmaW5kUG9pbnQgPSAocG9pbnRzLCBwb2ludElkLCBoYXNEZXZpY2VDaGVjaykgPT5cbiAgcG9pbnRzLmZpbmQoKHBvaW50KSA9PiBwb2ludC5pZCA9PT0gcG9pbnRJZCAmJiBoYXNEZXZpY2VDaGVjayhwb2ludCkpO1xuXG5leHBvcnQgY29uc3QgZmlsdGVyRWRnZXMgPSAoZWRnZXMsIHBvaW50cywgaXNNb25pdG9yZWQpID0+XG4gIGVkZ2VzLmZpbHRlcigoZWRnZSkgPT4ge1xuICAgIGNvbnN0IHNvdXJjZVBvaW50ID0gZmluZFBvaW50KHBvaW50cywgZWRnZS5zb3VyY2VfcG9pbnRfaWQsIChwb2ludCkgPT5cbiAgICAgIGlzTW9uaXRvcmVkXG4gICAgICAgID8gcG9pbnQuaGFzX2RldmljZSB8fCBlZGdlLmRlc2NlbmRhbnRzX2hhc19kZXZpY2VcbiAgICAgICAgOiAhcG9pbnQuZGVzY2VuZGFudHNfaGFzX2RldmljZSxcbiAgICApO1xuXG4gICAgY29uc3QgcGFyZW50UG9pbnQgPSBmaW5kUG9pbnQocG9pbnRzLCBlZGdlLnRhcmdldF9wb2ludF9pZCwgKHBvaW50KSA9PlxuICAgICAgaXNNb25pdG9yZWRcbiAgICAgICAgPyBlZGdlLmRlc2NlbmRhbnRzX2hhc19kZXZpY2UgfHwgc291cmNlUG9pbnQgIT09IHVuZGVmaW5lZFxuICAgICAgICA6ICFwb2ludC5kZXNjZW5kYW50c19oYXNfZGV2aWNlLFxuICAgICk7XG5cbiAgICByZXR1cm4gc291cmNlUG9pbnQgJiYgcGFyZW50UG9pbnQ7XG4gIH0pO1xuXG5leHBvcnQgY29uc3Qgc2V0dXBDaGVja2JveExpc3RlbmVyID0gKHNlbGVjdG9yLCBvbkNoYW5nZSkgPT4ge1xuICBjb25zdCBjaGVja2JveCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3Ioc2VsZWN0b3IpO1xuICBpZiAoY2hlY2tib3ggPT09IG51bGwpIHJldHVybjtcbiAgY2hlY2tib3guYWRkRXZlbnRMaXN0ZW5lcignY2hhbmdlJywgKCkgPT4gb25DaGFuZ2UoY2hlY2tib3guY2hlY2tlZCkpO1xufTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQSxJQUFBQSxRQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxRQUFBLEdBQUFELE9B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