@kando-env/kando-ui 1.2.418-alpha.9 → 1.2.419

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 (38) hide show
  1. package/lib/Widgets/Map/Map.js +29 -62
  2. package/lib/Widgets/Map/MapUtils.js +4 -38
  3. package/lib/Widgets/Map/events/PointOfEvent.js +30 -50
  4. package/lib/Widgets/Map/events/PointsForSpecificEvent.js +5 -20
  5. package/lib/Widgets/Map/points/PointIcon.js +4 -12
  6. package/lib/Widgets/Map/points/PointMarkers.js +6 -1
  7. package/lib/Widgets/Map/points/PointUtils.js +7 -29
  8. package/lib/Widgets/MostPolluting/components/PotentialImpact.test.js +2 -1
  9. package/lib/Widgets/PotentialImpactSummary/Icon.js +2 -1
  10. package/lib/components/DamageType/DamageType.js +3 -3
  11. package/lib/components/DischargeHeatmap/mocks/handlers.js +3 -3
  12. package/lib/components/Graph/Graph.js +1 -18
  13. package/lib/components/TrendGraphNVL/TrendGraphNVL.js +2 -1
  14. package/lib/hooks/useMap.js +2 -2
  15. package/lib/i18n/en.json +1 -2
  16. package/lib/macros/getVersion.js +2 -2
  17. package/lib/pages/CovidPage/components/TrendGraphNVL/TrendGraphNVL.js +2 -1
  18. package/lib/pages/EventsPage/DragAndDropArea/DragAndDrop.module.scss +1 -2
  19. package/lib/pages/EventsPage/EventsMapContainer/EventsMapContainer.js +3 -3
  20. package/lib/pages/EventsPage/FloatingGraph/FloatingGraph.js +3 -11
  21. package/lib/pages/EventsPage/events/event_info/EventSection.test.js +22 -21
  22. package/lib/pages/EventsPage/events/event_info/Header/Header.js +1 -1
  23. package/lib/pages/EventsPage/events/event_info/Header/HeaderContainer.js +1 -1
  24. package/lib/pages/EventsPage/events/event_info/Header/index.js +1 -1
  25. package/lib/pages/EventsPage/events/event_info/SeverityScore/index.js +1 -1
  26. package/lib/pages/EventsPage/events/event_info/Timelines/index.js +1 -1
  27. package/lib/pages/ImportGisPage/importGisUtils.js +9 -1
  28. package/lib/pages/OperationsPage/Map/useMap.js +3 -3
  29. package/lib/pages/PollutionRiskAssessment/useMap.js +2 -2
  30. package/lib/store/points/models/IPoint.js +1 -1
  31. package/lib/test/mocks/browser.js +1 -1
  32. package/lib/test/test-utils.js +1 -1
  33. package/lib/ui-kit/KandoTable/KandoTable.test.js +1 -1
  34. package/lib/utilities/Enum.js +4 -4
  35. package/lib/utilities/map/icons.js +2 -7
  36. package/lib/utilities/scoreToData.test.js +1 -1
  37. package/package.json +1 -1
  38. package/lib/assets/map/sampler.svg +0 -9
@@ -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/IGVkZ2UuZGVzY2VuZGFudHNfaGFzX2RldmljZSB8fCBzb3VyY2VQb2ludCAhPT0gdW5kZWZpbmVkXG4gICAgICAgIDogIXBvaW50LmRlc2NlbmRhbnRzX2hhc19kZXZpY2UsXG4gICAgKTtcblxuICAgIHJldHVybiBzb3VyY2VQb2ludCAmJiBwYXJlbnRQb2ludDtcbiAgfSk7XG5cbmV4cG9ydCBjb25zdCBzZXR1cENoZWNrYm94TGlzdGVuZXIgPSAoc2VsZWN0b3IsIG9uQ2hhbmdlKSA9PiB7XG4gIGNvbnN0IGNoZWNrYm94ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihzZWxlY3Rvcik7XG4gIGlmIChjaGVja2JveCA9PT0gbnVsbCkgcmV0dXJuO1xuICBjaGVja2JveC5hZGRFdmVudExpc3RlbmVyKCdjaGFuZ2UnLCAoKSA9PiBvbkNoYW5nZShjaGVja2JveC5jaGVja2VkKSk7XG59O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBLElBQUFBLFFBQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLFFBQUEsR0FBQUQsT0FBQTtBQUNBLElBQUFFLEtBQUEsR0FBQUgsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFHLG1CQUFBLEdBQUFILE9BQUE7QUFHTyxJQUFNSSxjQUFjLEdBQUcsU0FBakJBLGNBQWNBLENBQUlDLE1BQU0sRUFBRUMsV0FBVyxFQUFFQyxjQUFjLEVBQUs7RUFDckUsSUFBSUMsV0FBZ0IsR0FBR0gsTUFBTSxDQUFDSSxPQUFPO0VBQ3JDLElBQUlILFdBQVcsQ0FBQ0MsY0FBYyxDQUFDLEVBQUU7SUFDL0JDLFdBQVcsQ0FBQ0UsU0FBUyxDQUFDSCxjQUFjLEVBQUU7TUFBRUksT0FBTyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFBRSxDQUFDLENBQUM7RUFDNUQsQ0FBQyxNQUFNO0lBQ0wsSUFBTUMsS0FBWSxHQUFHLEVBQUU7SUFFdkIsS0FBSyxJQUFNQyxRQUFRLElBQUlMLFdBQVcsQ0FBQ00sT0FBTyxFQUFFO01BQzFDLElBQ0VOLFdBQVcsQ0FBQ00sT0FBTyxDQUFDRCxRQUFRLENBQUMsQ0FBQ0UsWUFBWSxLQUFLLE1BQU0sSUFDckRQLFdBQVcsQ0FBQ00sT0FBTyxDQUFDRCxRQUFRLENBQUMsQ0FBQ0UsWUFBWSxLQUFLLE9BQU8sRUFDdEQ7UUFDQUgsS0FBSyxDQUFDSSxJQUFJLENBQUNSLFdBQVcsQ0FBQ00sT0FBTyxDQUFDRCxRQUFRLENBQUMsQ0FBQztNQUMzQztJQUNGO0lBRUEsSUFBSUksTUFBTSxDQUFDQyxJQUFJLENBQUNDLGdCQUFDLENBQUNDLFlBQVksQ0FBQ1IsS0FBSyxDQUFDLENBQUNTLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQ0MsTUFBTSxLQUFLLENBQUMsRUFBRTtNQUMvRGQsV0FBVyxDQUFDRSxTQUFTLENBQUNTLGdCQUFDLENBQUNDLFlBQVksQ0FBQ1IsS0FBSyxDQUFDLENBQUNTLFNBQVMsQ0FBQyxDQUFDLEVBQUU7UUFDdkRWLE9BQU8sRUFBRSxDQUFDLEdBQUcsRUFBRSxHQUFHO01BQ3BCLENBQUMsQ0FBQztJQUNKO0VBQ0Y7RUFDQTtBQUNGLENBQUM7QUFBQ1ksT0FBQSxDQUFBbkIsY0FBQSxHQUFBQSxjQUFBO0FBRUssSUFBTUUsV0FBVyxHQUFHLFNBQWRBLFdBQVdBLENBQUlrQixJQUFJLEVBQUs7RUFDbkMsT0FBT0EsSUFBSSxJQUFJQSxJQUFJLENBQUNGLE1BQU0sR0FBRyxDQUFDLElBQUlMLE1BQU0sQ0FBQ0MsSUFBSSxDQUFDTSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQ0YsTUFBTSxHQUFHLENBQUM7QUFDbkUsQ0FBQztBQUFDQyxPQUFBLENBQUFqQixXQUFBLEdBQUFBLFdBQUE7QUFFSyxJQUFNbUIsb0JBQW9CLEdBQUcsU0FBdkJBLG9CQUFvQkEsQ0FBSUMsV0FBVyxFQUFFckIsTUFBTSxFQUFFc0IsTUFBTSxFQUFFQyxLQUFLLEVBQUs7RUFDMUUsT0FDRUYsV0FBVyxDQUFDRyxHQUFHLEtBQUtDLFNBQVMsSUFDN0J6QixNQUFNLENBQUNJLE9BQU8sS0FBSyxJQUFJLElBQ3ZCbUIsS0FBSyxLQUFLRSxTQUFTLElBQ25CSCxNQUFNLEtBQUtHLFNBQVM7QUFFeEIsQ0FBQztBQUFDUCxPQUFBLENBQUFFLG9CQUFBLEdBQUFBLG9CQUFBO0FBRUssSUFBTU0sNEJBQTRCLEdBQUcsU0FBL0JBLDRCQUE0QkEsQ0FDdkNILEtBQUssRUFDTEksS0FBSyxFQUNMQyxNQUFNLEVBQ041QixNQUFNLEVBQ05zQixNQUFNLEVBQ0g7RUFDSCxPQUNFTSxNQUFNLENBQUNKLEdBQUcsS0FBS0MsU0FBUyxJQUN4QnpCLE1BQU0sQ0FBQ0ksT0FBTyxLQUFLLElBQUksSUFDdkJtQixLQUFLLENBQUNOLE1BQU0sSUFBSSxDQUFDLElBQ2pCVSxLQUFLLENBQUNWLE1BQU0sSUFBSSxDQUFDLElBQ2pCSyxNQUFNLENBQUNMLE1BQU0sSUFBSSxDQUFDO0FBRXRCLENBQUM7QUFBQ0MsT0FBQSxDQUFBUSw0QkFBQSxHQUFBQSw0QkFBQTtBQUVLLElBQU1HLHlCQUF5QixHQUFHLFNBQTVCQSx5QkFBeUJBLENBQ3BDQyxZQUFzQixFQUN0QkMsWUFBWSxFQUNUO0VBQ0gsT0FDRUQsWUFBWSxDQUFDRSxRQUFRLENBQUNELFlBQVksQ0FBQ3JCLFlBQVksQ0FBQyxJQUNoRHFCLFlBQVksQ0FBQ0UsZ0JBQWdCLEtBQUssU0FBUztBQUUvQyxDQUFDO0FBQUNmLE9BQUEsQ0FBQVcseUJBQUEsR0FBQUEseUJBQUE7QUFFSyxJQUFNSyxrQkFBa0IsR0FBRyxTQUFyQkEsa0JBQWtCQSxDQUFJQyxLQUFLLEVBQUVDLFNBQVMsRUFBSztFQUN0RCxJQUFJQyxJQUFJLEdBQUdGLEtBQUssQ0FBQ0csT0FBTyxDQUFDRCxJQUFJO0VBQzdCQSxJQUFJLENBQUNDLE9BQU8sQ0FBQ0MsUUFBUSxHQUFHQyxlQUFlLENBQUNKLFNBQVMsQ0FBQyxDQUFDRyxRQUFRO0VBQzNERixJQUFJLENBQUNDLE9BQU8sQ0FBQ0csVUFBVSxHQUFHRCxlQUFlLENBQUNKLFNBQVMsQ0FBQyxDQUFDSyxVQUFVO0VBQy9ETixLQUFLLENBQUNPLE9BQU8sQ0FBQ0wsSUFBSSxDQUFDO0VBQ25CRixLQUFLLENBQUNRLFVBQVUsQ0FBQyxDQUFDLENBQUM7QUFDckIsQ0FBQztBQUFDekIsT0FBQSxDQUFBZ0Isa0JBQUEsR0FBQUEsa0JBQUE7QUFFSyxJQUFNVSxvQkFBb0IsR0FBRyxTQUF2QkEsb0JBQW9CQSxDQUFJVCxLQUFLLEVBQUVDLFNBQVMsRUFBSztFQUN4RCxJQUFJQyxJQUFJLEdBQUdGLEtBQUssQ0FBQ0csT0FBTyxDQUFDRCxJQUFJO0VBQzdCLElBQUlRLGVBQWUsR0FBR1YsS0FBSyxDQUFDVyxvQkFBb0I7RUFDaEQsSUFBSUMsUUFBUSxHQUFHO0lBQ2JDLE9BQU8sRUFBRWIsS0FBSyxDQUFDYyxlQUFlLElBQUlkLEtBQUssQ0FBQ2UsV0FBVztJQUNuREMsU0FBUyxFQUFFaEIsS0FBSyxDQUFDYyxlQUFlO0lBQ2hDRyxLQUFLLEVBQUVqQixLQUFLLENBQUNlO0VBQ2YsQ0FBQztFQUVELElBQUlmLEtBQUssQ0FBQ2tCLGtCQUFrQixLQUFLLENBQUMsRUFBRTtJQUNsQyxJQUFJUixlQUFlLEVBQUU7TUFDbkJSLElBQUksQ0FBQ0MsT0FBTyxDQUFDQyxRQUFRLEdBQUdlLGlCQUFpQixDQUFDbEIsU0FBUyxFQUFFVyxRQUFRLENBQUMsQ0FBQ1IsUUFBUTtNQUN2RUYsSUFBSSxDQUFDQyxPQUFPLENBQUNHLFVBQVUsR0FBR2EsaUJBQWlCLENBQ3pDbEIsU0FBUyxFQUNUVyxRQUNGLENBQUMsQ0FBQ04sVUFBVTtJQUNkLENBQUMsTUFBTTtNQUNMSixJQUFJLENBQUNDLE9BQU8sQ0FBQ0MsUUFBUSxHQUFHZ0IsbUJBQW1CLENBQUNuQixTQUFTLENBQUMsQ0FBQ0csUUFBUTtNQUMvREYsSUFBSSxDQUFDQyxPQUFPLENBQUNHLFVBQVUsR0FBR2MsbUJBQW1CLENBQUNuQixTQUFTLENBQUMsQ0FBQ0ssVUFBVTtJQUNyRTtFQUNGLENBQUMsTUFBTTtJQUNMLElBQUlOLEtBQUssQ0FBQ2tCLGtCQUFrQixLQUFLLENBQUMsRUFBRTtNQUNsQ2hCLElBQUksQ0FBQ0MsT0FBTyxDQUFDQyxRQUFRLEdBQUdpQixpQkFBaUIsQ0FBQ3BCLFNBQVMsRUFBRVcsUUFBUSxDQUFDLENBQUNSLFFBQVE7TUFDdkVGLElBQUksQ0FBQ0MsT0FBTyxDQUFDRyxVQUFVLEdBQUdlLGlCQUFpQixDQUN6Q3BCLFNBQVMsRUFDVFcsUUFDRixDQUFDLENBQUNOLFVBQVU7SUFDZCxDQUFDLE1BQU07TUFDTEosSUFBSSxDQUFDQyxPQUFPLENBQUNDLFFBQVEsR0FBR2tCLGNBQWMsQ0FBQ3JCLFNBQVMsRUFBRVcsUUFBUSxDQUFDLENBQUNSLFFBQVE7TUFDcEVGLElBQUksQ0FBQ0MsT0FBTyxDQUFDRyxVQUFVLEdBQUdnQixjQUFjLENBQUNyQixTQUFTLEVBQUVXLFFBQVEsQ0FBQyxDQUFDTixVQUFVO0lBQzFFO0VBQ0Y7RUFFQU4sS0FBSyxDQUFDTyxPQUFPLENBQUNMLElBQUksQ0FBQztBQUNyQixDQUFDO0FBQUNuQixPQUFBLENBQUEwQixvQkFBQSxHQUFBQSxvQkFBQTtBQUVGLElBQU1XLG1CQUFtQixHQUFHLFNBQXRCQSxtQkFBbUJBLENBQUluQixTQUFTLEVBQUs7RUFDekMsT0FBTztJQUNMRyxRQUFRLEVBQUUsQ0FBQ0gsU0FBUyxHQUFHLEdBQUcsRUFBRUEsU0FBUyxHQUFHLEdBQUcsQ0FBZTtJQUMxREssVUFBVSxFQUFFLENBQUNMLFNBQVMsR0FBRyxHQUFHLEVBQUVBLFNBQVMsR0FBRyxHQUFHO0VBQy9DLENBQUM7QUFDSCxDQUFDO0FBRU0sSUFBTUksZUFBZSxHQUFHLFNBQWxCQSxlQUFlQSxDQUFJSixTQUFTLEVBQUs7RUFDNUMsT0FBTztJQUNMRyxRQUFRLEVBQUUsQ0FBQ0gsU0FBUyxHQUFHLEdBQUcsRUFBRUEsU0FBUyxHQUFHLEdBQUcsQ0FBZTtJQUMxREssVUFBVSxFQUFFLENBQUNMLFNBQVMsR0FBRyxDQUFDLEVBQUVBLFNBQVMsR0FBRyxDQUFDO0VBQzNDLENBQUM7QUFDSCxDQUFDO0FBQUNsQixPQUFBLENBQUFzQixlQUFBLEdBQUFBLGVBQUE7QUFFSyxJQUFNYyxpQkFBaUIsR0FBRyxTQUFwQkEsaUJBQWlCQSxDQUFJbEIsU0FBUyxFQUFFVyxRQUFRLEVBQUs7RUFDeEQsSUFBSUEsUUFBUSxDQUFDQyxPQUFPLEVBQUU7SUFDcEIsSUFBSUQsUUFBUSxDQUFDSSxTQUFTLEVBQUU7TUFDdEIsT0FBTztRQUNMWixRQUFRLEVBQUUsQ0FBQ0gsU0FBUyxHQUFHLElBQUksRUFBRUEsU0FBUyxHQUFHLEdBQUcsQ0FBZTtRQUMzREssVUFBVSxFQUFFLENBQUNMLFNBQVMsR0FBRyxDQUFDLEVBQUVBLFNBQVMsR0FBRyxDQUFDO01BQzNDLENBQUM7SUFDSCxDQUFDLE1BQU07TUFDTCxPQUFPO1FBQ0xHLFFBQVEsRUFBRSxDQUFDSCxTQUFTLEdBQUcsSUFBSSxFQUFFQSxTQUFTLEdBQUcsR0FBRyxDQUFlO1FBQzNESyxVQUFVLEVBQUUsQ0FBQ0wsU0FBUyxHQUFHLENBQUMsRUFBRUEsU0FBUyxHQUFHLENBQUM7TUFDM0MsQ0FBQztJQUNIO0VBQ0YsQ0FBQyxNQUFNO0lBQ0wsT0FBTztNQUNMRyxRQUFRLEVBQUUsQ0FBQ0gsU0FBUyxHQUFHLElBQUksRUFBRUEsU0FBUyxHQUFHLEdBQUcsQ0FBZTtNQUMzREssVUFBVSxFQUFFLENBQUNMLFNBQVMsR0FBRyxDQUFDLEVBQUVBLFNBQVMsR0FBRyxDQUFDO0lBQzNDLENBQUM7RUFDSDtBQUNGLENBQUM7QUFBQ2xCLE9BQUEsQ0FBQW9DLGlCQUFBLEdBQUFBLGlCQUFBO0FBRUssSUFBTUUsaUJBQWlCLEdBQUcsU0FBcEJBLGlCQUFpQkEsQ0FBSXBCLFNBQVMsRUFBRVcsUUFBUSxFQUFLO0VBQ3hELElBQUlBLFFBQVEsQ0FBQ0MsT0FBTyxFQUFFO0lBQ3BCLElBQUlELFFBQVEsQ0FBQ0ksU0FBUyxFQUFFO01BQ3RCLE9BQU87UUFDTFosUUFBUSxFQUFFLENBQUNILFNBQVMsR0FBRyxHQUFHLEVBQUVBLFNBQVMsR0FBRyxHQUFHLENBQUM7UUFDNUNLLFVBQVUsRUFBRSxDQUFDTCxTQUFTLEdBQUcsQ0FBQyxJQUFJLEVBQUVBLFNBQVMsR0FBRyxHQUFHO01BQ2pELENBQUM7SUFDSCxDQUFDLE1BQU07TUFDTCxPQUFPO1FBQ0xHLFFBQVEsRUFBRSxDQUFDSCxTQUFTLEdBQUcsR0FBRyxFQUFFQSxTQUFTLEdBQUcsR0FBRyxDQUFDO1FBQzVDSyxVQUFVLEVBQUUsQ0FBQ0wsU0FBUyxHQUFHLENBQUMsSUFBSSxFQUFFQSxTQUFTLEdBQUcsR0FBRztNQUNqRCxDQUFDO0lBQ0g7RUFDRixDQUFDLE1BQU07SUFDTCxPQUFPO01BQ0xHLFFBQVEsRUFBRSxDQUFDSCxTQUFTLEdBQUcsR0FBRyxFQUFFQSxTQUFTLEdBQUcsR0FBRyxDQUFDO01BQzVDSyxVQUFVLEVBQUUsQ0FBQ0wsU0FBUyxHQUFHLEtBQUssRUFBRUEsU0FBUyxHQUFHLElBQUk7SUFDbEQsQ0FBQztFQUNIO0FBQ0YsQ0FBQztBQUFDbEIsT0FBQSxDQUFBc0MsaUJBQUEsR0FBQUEsaUJBQUE7QUFFSyxJQUFNQyxjQUFjLEdBQUcsU0FBakJBLGNBQWNBLENBQUlyQixTQUFTLEVBQUVXLFFBQVEsRUFBSztFQUNyRCxJQUFJQSxRQUFRLENBQUNDLE9BQU8sRUFBRTtJQUNwQixJQUFJRCxRQUFRLENBQUNJLFNBQVMsRUFBRTtNQUN0QixPQUFPO1FBQ0xaLFFBQVEsRUFBRSxDQUFDSCxTQUFTLEdBQUcsR0FBRyxFQUFFQSxTQUFTLEdBQUcsR0FBRyxDQUFDO1FBQzVDSyxVQUFVLEVBQUUsQ0FBQ0wsU0FBUyxHQUFHLENBQUMsR0FBRyxFQUFFQSxTQUFTLEdBQUcsR0FBRztNQUNoRCxDQUFDO0lBQ0gsQ0FBQyxNQUFNO01BQ0wsT0FBTztRQUNMRyxRQUFRLEVBQUUsQ0FBQ0gsU0FBUyxHQUFHLEdBQUcsRUFBRUEsU0FBUyxHQUFHLEdBQUcsQ0FBQztRQUM1Q0ssVUFBVSxFQUFFLENBQUNMLFNBQVMsR0FBRyxDQUFDLEdBQUcsRUFBRUEsU0FBUyxHQUFHLEdBQUc7TUFDaEQsQ0FBQztJQUNIO0VBQ0YsQ0FBQyxNQUFNO0lBQ0wsT0FBTztNQUNMRyxRQUFRLEVBQUUsQ0FBQ0gsU0FBUyxHQUFHLEdBQUcsRUFBRUEsU0FBUyxHQUFHLEdBQUcsQ0FBQztNQUM1Q0ssVUFBVSxFQUFFLENBQUNMLFNBQVMsR0FBRyxDQUFDLEVBQUVBLFNBQVMsR0FBRyxHQUFHO0lBQzdDLENBQUM7RUFDSDtBQUNGLENBQUM7QUFBQ2xCLE9BQUEsQ0FBQXVDLGNBQUEsR0FBQUEsY0FBQTtBQUVLLElBQU1DLGVBQWUsR0FBRyxTQUFsQkEsZUFBZUEsQ0FBSWxDLEdBQUcsRUFBSztFQUN0QyxJQUFJbUMsTUFBTSxHQUFHbkMsR0FBRyxDQUFDZixPQUFPO0VBQ3hCLElBQUkyQixTQUFTLEdBQUdaLEdBQUcsQ0FBQ29DLEtBQUs7RUFFekIsS0FBSyxJQUFNcEQsUUFBUSxJQUFJbUQsTUFBTSxFQUFFO0lBQzdCLElBQUk5Qix5QkFBeUIsQ0FBQyxDQUFDLFlBQVksQ0FBQyxFQUFFOEIsTUFBTSxDQUFDbkQsUUFBUSxDQUFDLENBQUMsRUFBRTtNQUMvRDBCLGtCQUFrQixDQUFDeUIsTUFBTSxDQUFDbkQsUUFBUSxDQUFDLEVBQUU0QixTQUFTLENBQUM7SUFDakQ7SUFFQSxJQUFJUCx5QkFBeUIsQ0FBQyxDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUMsRUFBRThCLE1BQU0sQ0FBQ25ELFFBQVEsQ0FBQyxDQUFDLEVBQUU7TUFDbEVvQyxvQkFBb0IsQ0FBQ2UsTUFBTSxDQUFDbkQsUUFBUSxDQUFDLEVBQUU0QixTQUFTLENBQUM7SUFDbkQ7SUFFQSxJQUNFUCx5QkFBeUIsQ0FBQyxDQUFDLFVBQVUsRUFBRSxhQUFhLENBQUMsRUFBRThCLE1BQU0sQ0FBQ25ELFFBQVEsQ0FBQyxDQUFDLEVBQ3hFO01BQ0FvQyxvQkFBb0IsQ0FBQ2UsTUFBTSxDQUFDbkQsUUFBUSxDQUFDLEVBQUU0QixTQUFTLENBQUM7SUFDbkQ7RUFDRjtBQUNGLENBQUM7QUFBQ2xCLE9BQUEsQ0FBQXdDLGVBQUEsR0FBQUEsZUFBQTtBQUVLLElBQU1HLFFBQVEsR0FBRyxTQUFYQSxRQUFRQSxDQUFJQyxXQUFXLEVBQUs7RUFDdkMsT0FBT2hELGdCQUFDLENBQUNpRCxTQUFTLGlEQUFBQyxNQUFBLENBQ2dDRixXQUFXLDRJQUMzRDtJQUNFRyxXQUFXLEVBQ1QseU5BQXlOO0lBQzNOQyxPQUFPLEVBQUUsRUFBRTtJQUNYQyxPQUFPLEVBQUUsQ0FBQztJQUNWQyxFQUFFLEVBQUUsb0JBQW9CO0lBQ3hCQyxRQUFRLEVBQUUsR0FBRztJQUNiQyxVQUFVLEVBQUUsQ0FBQyxDQUFDO0lBQ2RDLGlCQUFpQixFQUFFLEtBQUs7SUFDeEJDLGNBQWMsRUFBRTtFQUNsQixDQUNGLENBQUM7QUFDSCxDQUFDO0FBQUN0RCxPQUFBLENBQUEyQyxRQUFBLEdBQUFBLFFBQUE7QUFFSyxJQUFNWSxRQUFRLEdBQUcsU0FBWEEsUUFBUUEsQ0FBSVgsV0FBVyxFQUFFWSxvQkFBb0IsRUFBSztFQUFBLElBQUFDLElBQUE7RUFDN0QsSUFBSUMsVUFBVSxHQUFHQyxhQUFJLENBQUNDLENBQUMsQ0FBQyxvQkFBb0IsQ0FBQztFQUM3QyxJQUFJQyxTQUFTLEdBQUdGLGFBQUksQ0FBQ0MsQ0FBQyxDQUFDLHNCQUFzQixDQUFDO0VBQzlDLE9BQUFILElBQUEsV0FBQUssZ0JBQUEsQ0FBQUMsT0FBQSxFQUFBTixJQUFBLEVBQ0dDLFVBQVUsRUFBR2YsUUFBUSxDQUFDQyxXQUFXLENBQUMsT0FBQWtCLGdCQUFBLENBQUFDLE9BQUEsRUFBQU4sSUFBQSxFQUNsQ0ksU0FBUyxFQUFHbEIsUUFBUSxDQUFDYSxvQkFBb0IsQ0FBQyxHQUFBQyxJQUFBO0FBRS9DLENBQUM7QUFBQ3pELE9BQUEsQ0FBQXVELFFBQUEsR0FBQUEsUUFBQTtBQUVLLElBQU1TLHFCQUFxQixHQUFHLFNBQXhCQSxxQkFBcUJBLENBQUlDLE9BQU8sRUFBRTNELEdBQUcsRUFBSztFQUNyREEsR0FBRyxDQUFDNEQsU0FBUyxDQUFDLFVBQUNqRCxLQUFLLEVBQUs7SUFDdkIsSUFDR0EsS0FBSyxZQUFZckIsZ0JBQUMsQ0FBQ3VFLFFBQVEsSUFBSWxELEtBQUssQ0FBQ3pCLFlBQVksS0FBSyxNQUFNLElBQzdEeUIsS0FBSyxZQUFZckIsZ0JBQUMsQ0FBQ3dFLE1BQU0sQ0FBQ0MsU0FBUyxFQUNuQztNQUNBcEQsS0FBSyxDQUFDcUQsUUFBUSxDQUFDO1FBQUVDLE9BQU8sRUFBRU4sT0FBTyxHQUFHLENBQUMsR0FBRztNQUFFLENBQUMsQ0FBQztJQUM5QztFQUNGLENBQUMsQ0FBQztBQUNKLENBQUM7O0FBRUQ7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUFBakUsT0FBQSxDQUFBZ0UscUJBQUEsR0FBQUEscUJBQUE7QUFFTyxJQUFNUSxrQkFBa0IsR0FBRyxTQUFyQkEsa0JBQWtCQSxDQUFJQyxTQUFTLEVBQUVuRSxHQUFHLEVBQUs7RUFDcEQsSUFBSW9FLFFBQVEsR0FBR0MsUUFBUSxDQUFDQyxhQUFhLENBQUMsaUJBQWlCLENBQUM7RUFDeEQsSUFBSUYsUUFBUSxJQUFJLElBQUksRUFBRTtFQUN0QkEsUUFBUSxDQUFDRyxPQUFPLEdBQUdKLFNBQVM7QUFDOUIsQ0FBQztBQUFDekUsT0FBQSxDQUFBd0Usa0JBQUEsR0FBQUEsa0JBQUE7QUFFRixJQUFNTSxjQUFjLEdBQUcsU0FBakJBLGNBQWNBLENBQUl4RSxHQUFHLEVBQUs7RUFDOUIsT0FBTyxDQUNMO0lBQ0V5RSxLQUFLLEVBQUVwQixhQUFJLENBQUNDLENBQUMsQ0FBQywwQkFBMEIsQ0FBQztJQUN6Q1YsRUFBRSxFQUFFLGdCQUFnQjtJQUNwQjhCLFNBQVMsRUFBRSxVQUFVO0lBQ3JCQyxTQUFTLEVBQUUsQ0FBQyxHQUFHLENBQUM7SUFDaEJDLFFBQVEsRUFBRSxTQUFBQSxTQUFDQyxTQUFTO01BQUEsT0FBS25CLHFCQUFxQixDQUFDbUIsU0FBUyxFQUFFN0UsR0FBRyxDQUFDO0lBQUE7RUFDaEUsQ0FBQyxFQUVEO0lBQ0V5RSxLQUFLLEVBQUUsNEJBQTRCO0lBQ25DN0IsRUFBRSxFQUFFLDJCQUEyQjtJQUMvQjhCLFNBQVMsRUFBRSxVQUFVO0lBQ3JCRSxRQUFRLEVBQUUsU0FBQUEsU0FBQ0MsU0FBUztNQUFBLE9BQUssWUFBTSxDQUFDLENBQUM7SUFBQTtFQUNuQyxDQUFDLEVBRUQ7SUFDRUosS0FBSyxFQUFFLCtCQUErQjtJQUN0QzdCLEVBQUUsRUFBRSx3Q0FBd0M7SUFDNUM4QixTQUFTLEVBQUUsVUFBVTtJQUNyQkUsUUFBUSxFQUFFLFNBQUFBLFNBQUNDLFNBQVM7TUFBQSxPQUFLLFlBQU0sQ0FBQyxDQUFDO0lBQUE7RUFDbkM7O0VBRUE7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQUEsQ0FDRDtBQUNILENBQUM7O0FBRUQsSUFBTUMsc0NBQXNDLEdBQUcsU0FBekNBLHNDQUFzQ0EsQ0FDMUNDLGlCQUFpQixFQUNqQkMsZUFBZSxFQUNaO0VBQ0gxRixnQkFBQyxDQUFDMkYsUUFBUSxDQUFDQyxFQUFFLENBQUNILGlCQUFpQixFQUFFLFdBQVcsRUFBRSxZQUFZO0lBQ3hEQyxlQUFlLENBQUNHLEtBQUssQ0FBQ0MsT0FBTyxHQUFHLE9BQU87RUFDekMsQ0FBQyxDQUFDO0VBRUY5RixnQkFBQyxDQUFDMkYsUUFBUSxDQUFDQyxFQUFFLENBQUNILGlCQUFpQixFQUFFLFVBQVUsRUFBRSxZQUFZO0lBQ3ZEQyxlQUFlLENBQUNHLEtBQUssQ0FBQ0MsT0FBTyxHQUFHLE1BQU07RUFDeEMsQ0FBQyxDQUFDO0FBQ0osQ0FBQztBQUVELElBQU1DLG1CQUFtQixHQUFHLFNBQXRCQSxtQkFBbUJBLENBQUlDLE9BQU8sRUFBRUMsU0FBUyxFQUFLO0VBQ2xELElBQUlDLGdCQUFnQixHQUFHbkIsUUFBUSxDQUFDb0IsYUFBYSxDQUFDLEtBQUssQ0FBQztFQUNwREQsZ0JBQWdCLENBQUNFLFNBQVMsR0FBRyxpQ0FBaUM7RUFDOURGLGdCQUFnQixDQUFDRyxTQUFTLDZDQUFBbkQsTUFBQSxDQUVMOEMsT0FBTyxDQUFDWixTQUFTLGNBQUFsQyxNQUFBLENBQVM4QyxPQUFPLENBQUMxQyxFQUFFLFlBQUFKLE1BQUEsQ0FBUThDLE9BQU8sQ0FBQ2IsS0FBSywyQkFFM0U7RUFFSGUsZ0JBQWdCLENBQ2JsQixhQUFhLEtBQUE5QixNQUFBLENBQUs4QyxPQUFPLENBQUMxQyxFQUFFLENBQUUsQ0FBQyxDQUMvQmdELGdCQUFnQixDQUFDLFFBQVEsRUFBRSxVQUFVQyxDQUFDLEVBQUU7SUFDdkMsSUFBTWhCLFNBQVMsR0FBR2dCLENBQUMsQ0FBQ0MsTUFBTSxDQUFDdkIsT0FBTztJQUNsQ2UsT0FBTyxDQUFDVixRQUFRLENBQUNDLFNBQVMsQ0FBQztFQUM3QixDQUFDLENBQUM7RUFFSlcsZ0JBQWdCLENBQUNMLEtBQUssQ0FBQ0MsT0FBTyxHQUFHLE1BQU07RUFDdkNHLFNBQVMsYUFBVEEsU0FBUyx1QkFBVEEsU0FBUyxDQUFFUSxXQUFXLENBQUNQLGdCQUFnQixDQUFDO0VBRXhDVixzQ0FBc0MsQ0FBQ1MsU0FBUyxFQUFFQyxnQkFBZ0IsQ0FBQztBQUNyRSxDQUFDO0FBRU0sSUFBTVEsK0JBQStCLEdBQUcsU0FBbENBLCtCQUErQkEsQ0FDMUNoRyxHQUFHLEVBQ0hpRyxRQUFRLEVBSUw7RUFBQSxJQUhIOUIsU0FBUyxHQUFBK0IsU0FBQSxDQUFBekcsTUFBQSxRQUFBeUcsU0FBQSxRQUFBakcsU0FBQSxHQUFBaUcsU0FBQSxNQUFHLElBQUk7RUFBQSxJQUNoQkMsSUFBSSxHQUFBRCxTQUFBLENBQUF6RyxNQUFBLE9BQUF5RyxTQUFBLE1BQUFqRyxTQUFBO0VBQUEsSUFDSm1HLGdCQUFnQixHQUFBRixTQUFBLENBQUF6RyxNQUFBLE9BQUF5RyxTQUFBLE1BQUFqRyxTQUFBO0VBRWhCLElBQUlvRyxVQUFVLEdBQUcvRyxnQkFBQyxDQUFDZ0csT0FBTyxDQUN2Qm5ELE1BQU0sQ0FBQzhELFFBQVEsRUFBRSxDQUFDLENBQUMsRUFBRTtJQUFFSyxRQUFRLEVBQUU7RUFBYyxDQUFDLENBQUMsQ0FDakRDLEtBQUssQ0FBQ3ZHLEdBQUcsQ0FBQztFQUNiLElBQUl1RixTQUFTLEdBQUdjLFVBQVUsQ0FBQ0csWUFBWSxDQUFDLENBQUM7RUFFekMsSUFBSUosZ0JBQWdCLEVBQUU7SUFDcEI1QixjQUFjLENBQUN4RSxHQUFHLENBQUMsQ0FBQ3lHLE9BQU8sQ0FBQyxVQUFDbkIsT0FBTyxFQUFLO01BQ3ZDLElBQUlBLE9BQU8sQ0FBQ1gsU0FBUyxJQUFJVyxPQUFPLENBQUNYLFNBQVMsQ0FBQ25FLFFBQVEsQ0FBQzJGLElBQUksQ0FBQyxFQUFFO01BRTNEZCxtQkFBbUIsQ0FBQ0MsT0FBTyxFQUFFQyxTQUFTLENBQUM7TUFDdkNyQixrQkFBa0IsQ0FBQ0MsU0FBUyxFQUFFbkUsR0FBRyxDQUFDO0lBQ3BDLENBQUMsQ0FBQztFQUNKO0FBQ0YsQ0FBQztBQUFDTixPQUFBLENBQUFzRywrQkFBQSxHQUFBQSwrQkFBQTtBQUVLLElBQU1VLGFBQWEsR0FBRyxTQUFoQkEsYUFBYUEsQ0FDeEJDLFlBQVksRUFDWnJFLFdBQVcsRUFDWFksb0JBQW9CLEVBQ3BCMUUsTUFBTSxFQUNOb0ksUUFBUSxFQUNSbkksV0FBVyxFQUNYQyxjQUFjLEVBQ2RtSSxlQUFlLEVBQ2ZULGdCQUFnQixFQUNoQlUsa0JBQWtCLEVBRWY7RUFBQSxJQURIWCxJQUFJLEdBQUFELFNBQUEsQ0FBQXpHLE1BQUEsU0FBQXlHLFNBQUEsU0FBQWpHLFNBQUEsR0FBQWlHLFNBQUEsT0FBRyxDQUFDO0VBRVI7RUFDQTFILE1BQU0sQ0FBQ0ksT0FBTyxHQUFHLElBQUlVLGdCQUFDLENBQUN5SCxHQUFHLENBQUMsS0FBSyxFQUFFO0lBQ2hDQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ2RDLFFBQVEsRUFBRSxDQUFDO0lBQ1hDLElBQUksRUFBRVAsWUFBWTtJQUNsQlEsa0JBQWtCLEVBQUUsS0FBSztJQUN6QkMsWUFBWSxFQUFFO0VBQ2hCLENBQUMsQ0FBQztFQUVGLElBQUloQixnQkFBZ0IsRUFBRVEsUUFBUSxDQUFDLElBQUFTLDBCQUFNLEVBQUM3SSxNQUFNLENBQUNJLE9BQU8sQ0FBQyxDQUFDO0VBRXRESixNQUFNLENBQUNJLE9BQU8sQ0FBQzBJLFNBQVMsQ0FBQyxZQUFNO0lBQzdCLElBQUl0SCxHQUFHLEdBQUd4QixNQUFNLENBQUNJLE9BQU87SUFDeEIsSUFBTXFILFFBQVEsR0FBR2hELFFBQVEsQ0FBQ1gsV0FBVyxFQUFFWSxvQkFBb0IsQ0FBQztJQUU1RDhDLCtCQUErQixDQUM3QmhHLEdBQUcsRUFDSGlHLFFBQVEsRUFDUmEsa0JBQWtCLEVBQ2xCWCxJQUFJLEVBQ0pDLGdCQUNGLENBQUM7O0lBRUQ7SUFDQWhILE1BQU0sQ0FBQ21JLE1BQU0sQ0FBQ3RCLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDTSxLQUFLLENBQUN2RyxHQUFHLENBQUM7SUFFckN3SCxVQUFVLENBQUMsWUFBTTtNQUNmLElBQUksQ0FBQ2hKLE1BQU0sQ0FBQ0ksT0FBTyxFQUFFO1FBQ25CO01BQ0Y7TUFFQSxJQUFJO1FBQ0ZKLE1BQU0sQ0FBQ0ksT0FBTyxDQUFDNkksY0FBYyxDQUFDLElBQUksQ0FBQztNQUNyQyxDQUFDLENBQUMsT0FBT0MsR0FBRyxFQUFFO1FBQ1pDLE9BQU8sQ0FBQ0MsS0FBSyxDQUFDLEtBQUssRUFBRUYsR0FBRyxDQUFDO01BQzNCO01BRUFkLFFBQVEsQ0FBQyxJQUFBaUIsaUJBQVEsRUFBQ3JKLE1BQU0sQ0FBQ0ksT0FBTyxDQUFDLENBQUM7TUFDbENnSSxRQUFRLENBQUMsSUFBQWtCLHdCQUFlLEVBQUMsSUFBSSxDQUFDLENBQUM7TUFFL0I5SCxHQUFHLENBQUNrRixFQUFFLENBQUMsU0FBUyxFQUFFLFVBQUM2QyxLQUFLLEVBQUs7UUFDM0IsSUFBSUEsS0FBSyxDQUFDQyxhQUFhLENBQUNDLEdBQUcsS0FBSyxRQUFRLEVBQUU7VUFDeENqSSxHQUFHLENBQUNrSSxVQUFVLENBQUMsQ0FBQztVQUNoQjdELFFBQVEsQ0FBQzhELElBQUksQ0FBQ0MsS0FBSyxDQUFDLENBQUM7UUFDdkI7TUFDRixDQUFDLENBQUM7SUFDSixDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ0wsSUFBSTVKLE1BQU0sQ0FBQ0ksT0FBTyxJQUFJSCxXQUFXLENBQUNDLGNBQWMsQ0FBQyxFQUFFO01BQ2pERixNQUFNLENBQUNJLE9BQU8sQ0FBQ0MsU0FBUyxDQUFDSCxjQUFjLENBQUM7SUFDMUM7RUFDRixDQUFDLENBQUM7RUFFRkYsTUFBTSxDQUFDSSxPQUFPLENBQUNzRyxFQUFFLENBQUMsU0FBUyxFQUFFLFVBQVVXLENBQUMsRUFBRTtJQUN4QyxJQUFJLENBQUNySCxNQUFNLENBQUNJLE9BQU8sRUFBRTtNQUNuQjtJQUNGO0lBQ0EsSUFBSXNJLElBQUksR0FBRzFJLE1BQU0sQ0FBQ0ksT0FBTyxDQUFDeUosT0FBTyxDQUFDLENBQUM7SUFDbkN4QixlQUFlLENBQUNLLElBQUksQ0FBQztFQUN2QixDQUFDLENBQUM7QUFDSixDQUFDO0FBQUN4SCxPQUFBLENBQUFnSCxhQUFBLEdBQUFBLGFBQUE7QUFFSyxJQUFNNEIsbUJBQW1CLEdBQUc7RUFDakNDLGlCQUFpQixFQUFFLEtBQUs7RUFDeEJDLG1CQUFtQixFQUFFLEtBQUs7RUFDMUJDLG1CQUFtQixFQUFFLElBQUk7RUFDekJDLE9BQU8sRUFBRSxJQUFJO0VBQ2JDLHVCQUF1QixFQUFFLEVBQUU7RUFDM0JDLDBCQUEwQixFQUFFLEtBQUs7RUFDakNDLGNBQWMsRUFBRSxJQUFJO0VBQ3BCQyxrQkFBa0IsRUFBRSxTQUFBQSxtQkFBQ0MsT0FBTyxFQUFLO0lBQy9CLE9BQU8sSUFBSXpKLGdCQUFDLENBQUMwSixPQUFPLENBQUM7TUFDbkJDLElBQUksZ0JBQUF6RyxNQUFBLENBQWdCdUcsT0FBTyxDQUFDRyxXQUFXLG1FQUFBMUcsTUFBQSxDQUNHYSxhQUFJLENBQUNDLENBQUMsQ0FBQyxZQUFZLENBQUMsV0FBUTtNQUN0RW9DLFNBQVMsRUFBRSxnQkFBZ0I7TUFDM0IzRSxRQUFRLEVBQUUsSUFBSXpCLGdCQUFDLENBQUM2SixLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUU7SUFDOUIsQ0FBQyxDQUFDO0VBQ0o7QUFDRixDQUFDO0FBQUN6SixPQUFBLENBQUE0SSxtQkFBQSxHQUFBQSxtQkFBQTtBQUVLLElBQU1jLFVBQVUsR0FBRztFQUN4QixDQUFDLEVBQUUsUUFBUTtFQUNYLENBQUMsRUFBRSxRQUFRO0VBQ1gsQ0FBQyxFQUFFLFFBQVE7RUFDWCxDQUFDLEVBQUUsUUFBUTtFQUNYLENBQUMsRUFBRSxRQUFRO0VBQ1gsQ0FBQyxFQUFFLFFBQVE7RUFDWCxDQUFDLEVBQUUsT0FBTztFQUNWLENBQUMsRUFBRSxPQUFPO0VBQ1YsQ0FBQyxFQUFFLE9BQU87RUFDVixFQUFFLEVBQUUsT0FBTztFQUNYLEVBQUUsRUFBRSxRQUFRO0VBQ1osRUFBRSxFQUFFLFFBQVE7RUFDWixFQUFFLEVBQUUsUUFBUTtFQUNaLEVBQUUsRUFBRSxRQUFRO0VBQ1osRUFBRSxFQUFFLFFBQVE7RUFDWixFQUFFLEVBQUUsUUFBUTtFQUNaLEVBQUUsRUFBRSxPQUFPO0VBQ1gsRUFBRSxFQUFFO0FBQ04sQ0FBQzs7QUFFRDtBQUNBOztBQUVBO0FBQUExSixPQUFBLENBQUEwSixVQUFBLEdBQUFBLFVBQUE7QUFDTyxJQUFNQyxZQUFZLEdBQUcsU0FBZkEsWUFBWUEsQ0FBQSxFQU1WO0VBQUEsSUFMYnZKLE1BQWdCLEdBQUFvRyxTQUFBLENBQUF6RyxNQUFBLFFBQUF5RyxTQUFBLFFBQUFqRyxTQUFBLEdBQUFpRyxTQUFBLE1BQUcsRUFBRTtFQUFBLElBQUFvRCxLQUFBLEdBQUFwRCxTQUFBLENBQUF6RyxNQUFBLE9BQUF5RyxTQUFBLE1BQUFqRyxTQUFBO0lBQUFzSixtQkFBQSxHQUFBRCxLQUFBLENBRW5CRSxhQUFhO0lBQWJBLGFBQWEsR0FBQUQsbUJBQUEsY0FBRyxLQUFLLEdBQUFBLG1CQUFBO0lBQUFFLGlCQUFBLEdBQUFILEtBQUEsQ0FDckJJLFdBQVc7SUFBWEEsV0FBVyxHQUFBRCxpQkFBQSxjQUFHLEtBQUssR0FBQUEsaUJBQUE7RUFHckIsT0FBTzNKLE1BQU0sQ0FBQzZKLE1BQU0sQ0FBQyxVQUFDQyxLQUFLLEVBQUs7SUFDOUIsSUFBSUosYUFBYSxJQUFJLENBQUNJLEtBQUssQ0FBQ0MsVUFBVSxFQUFFLE9BQU8sS0FBSztJQUNwRCxJQUFJSCxXQUFXLElBQUksQ0FBQ0UsS0FBSyxDQUFDRSxXQUFXLEVBQUUsT0FBTyxLQUFLO0lBQ25ELE9BQU8sSUFBSTtFQUNiLENBQUMsQ0FBQztBQUNKLENBQUM7QUFBQ3BLLE9BQUEsQ0FBQTJKLFlBQUEsR0FBQUEsWUFBQTtBQUVLLElBQU1VLFNBQVMsR0FBRyxTQUFaQSxTQUFTQSxDQUFJakssTUFBTSxFQUFFa0ssT0FBTyxFQUFFQyxjQUFjO0VBQUEsT0FDdkRuSyxNQUFNLENBQUNvSyxJQUFJLENBQUMsVUFBQ04sS0FBSztJQUFBLE9BQUtBLEtBQUssQ0FBQ2hILEVBQUUsS0FBS29ILE9BQU8sSUFBSUMsY0FBYyxDQUFDTCxLQUFLLENBQUM7RUFBQSxFQUFDO0FBQUE7QUFBQ2xLLE9BQUEsQ0FBQXFLLFNBQUEsR0FBQUEsU0FBQTtBQUVqRSxJQUFNSSxXQUFXLEdBQUcsU0FBZEEsV0FBV0EsQ0FBSXBLLEtBQUssRUFBRUQsTUFBTSxFQUFFc0ssV0FBVztFQUFBLE9BQ3BEckssS0FBSyxDQUFDNEosTUFBTSxDQUFDLFVBQUNVLElBQUksRUFBSztJQUNyQixJQUFNQyxXQUFXLEdBQUdQLFNBQVMsQ0FBQ2pLLE1BQU0sRUFBRXVLLElBQUksQ0FBQ0UsZUFBZSxFQUFFLFVBQUNYLEtBQUs7TUFBQSxPQUNoRVEsV0FBVyxHQUNQUixLQUFLLENBQUNDLFVBQVUsSUFBSVEsSUFBSSxDQUFDRyxzQkFBc0IsR0FDL0MsQ0FBQ1osS0FBSyxDQUFDWSxzQkFBc0I7SUFBQSxDQUNuQyxDQUFDO0lBRUQsSUFBTUMsV0FBVyxHQUFHVixTQUFTLENBQUNqSyxNQUFNLEVBQUV1SyxJQUFJLENBQUNLLGVBQWUsRUFBRSxVQUFDZCxLQUFLO01BQUEsT0FDaEVRLFdBQVcsR0FDUEMsSUFBSSxDQUFDRyxzQkFBc0IsSUFBSUYsV0FBVyxLQUFLckssU0FBUyxHQUN4RCxDQUFDMkosS0FBSyxDQUFDWSxzQkFBc0I7SUFBQSxDQUNuQyxDQUFDO0lBRUQsT0FBT0YsV0FBVyxJQUFJRyxXQUFXO0VBQ25DLENBQUMsQ0FBQztBQUFBO0FBQUMvSyxPQUFBLENBQUF5SyxXQUFBLEdBQUFBLFdBQUE7QUFFRSxJQUFNUSxxQkFBcUIsR0FBRyxTQUF4QkEscUJBQXFCQSxDQUFJQyxRQUFRLEVBQUVoRyxRQUFRLEVBQUs7RUFDM0QsSUFBTVIsUUFBUSxHQUFHQyxRQUFRLENBQUNDLGFBQWEsQ0FBQ3NHLFFBQVEsQ0FBQztFQUNqRCxJQUFJeEcsUUFBUSxLQUFLLElBQUksRUFBRTtFQUN2QkEsUUFBUSxDQUFDd0IsZ0JBQWdCLENBQUMsUUFBUSxFQUFFO0lBQUEsT0FBTWhCLFFBQVEsQ0FBQ1IsUUFBUSxDQUFDRyxPQUFPLENBQUM7RUFBQSxFQUFDO0FBQ3ZFLENBQUM7QUFBQzdFLE9BQUEsQ0FBQWlMLHFCQUFBLEdBQUFBLHFCQUFBIn0=
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+XG4gIGVkZ2VzLmZpbHRlcigoZWRnZSkgPT4ge1xuICAgIGNvbnN0IHNvdXJjZVBvaW50ID0gZmluZFBvaW50KHBvaW50cywgZWRnZS5zb3VyY2VfcG9pbnRfaWQsIChwb2ludCkgPT5cbiAgICAgIGlzTW9uaXRvcmVkXG4gICAgICAgID8gcG9pbnQuaGFzX2RldmljZSB8fCBlZGdlLmRlc2NlbmRhbnRzX2hhc19kZXZpY2VcbiAgICAgICAgOiAhcG9pbnQuZGVzY2VuZGFudHNfaGFzX2RldmljZSxcbiAgICApO1xuXG4gICAgY29uc3QgcGFyZW50UG9pbnQgPSBmaW5kUG9pbnQocG9pbnRzLCBlZGdlLnRhcmdldF9wb2ludF9pZCwgKHBvaW50KSA9PlxuICAgICAgaXNNb25pdG9yZWRcbiAgICAgICAgPyBlZGdlLmRlc2NlbmRhbnRzX2hhc19kZXZpY2UgfHwgc291cmNlUG9pbnQgIT09IHVuZGVmaW5lZFxuICAgICAgICA6ICFwb2ludC5kZXNjZW5kYW50c19oYXNfZGV2aWNlLFxuICAgICk7XG5cbiAgICByZXR1cm4gc291cmNlUG9pbnQgJiYgcGFyZW50UG9pbnQ7XG4gIH0pO1xuXG5leHBvcnQgY29uc3Qgc2V0dXBDaGVja2JveExpc3RlbmVyID0gKHNlbGVjdG9yLCBvbkNoYW5nZSkgPT4ge1xuICBjb25zdCBjaGVja2JveCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3Ioc2VsZWN0b3IpO1xuICBpZiAoY2hlY2tib3ggPT09IG51bGwpIHJldHVybjtcbiAgY2hlY2tib3guYWRkRXZlbnRMaXN0ZW5lcignY2hhbmdlJywgKCkgPT4gb25DaGFuZ2UoY2hlY2tib3guY2hlY2tlZCkpO1xufTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQSxJQUFBQSxRQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxRQUFBLEdBQUFELE9BQUE7QUFDQSxJQUFBRSxLQUFBLEdBQUFILHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBRyxtQkFBQSxHQUFBSCxPQUFBO0FBRU8sSUFBTUksY0FBYyxHQUFHLFNBQWpCQSxjQUFjQSxDQUFJQyxNQUFNLEVBQUVDLFdBQVcsRUFBRUMsY0FBYyxFQUFLO0VBQ3JFLElBQUlDLFdBQWdCLEdBQUdILE1BQU0sQ0FBQ0ksT0FBTztFQUNyQyxJQUFJSCxXQUFXLENBQUNDLGNBQWMsQ0FBQyxFQUFFO0lBQy9CQyxXQUFXLENBQUNFLFNBQVMsQ0FBQ0gsY0FBYyxFQUFFO01BQUVJLE9BQU8sRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDO0lBQUUsQ0FBQyxDQUFDO0VBQzVELENBQUMsTUFBTTtJQUNMLElBQU1DLEtBQVksR0FBRyxFQUFFO0lBRXZCLEtBQUssSUFBTUMsUUFBUSxJQUFJTCxXQUFXLENBQUNNLE9BQU8sRUFBRTtNQUMxQyxJQUNFTixXQUFXLENBQUNNLE9BQU8sQ0FBQ0QsUUFBUSxDQUFDLENBQUNFLFlBQVksS0FBSyxNQUFNLElBQ3JEUCxXQUFXLENBQUNNLE9BQU8sQ0FBQ0QsUUFBUSxDQUFDLENBQUNFLFlBQVksS0FBSyxPQUFPLEVBQ3REO1FBQ0FILEtBQUssQ0FBQ0ksSUFBSSxDQUFDUixXQUFXLENBQUNNLE9BQU8sQ0FBQ0QsUUFBUSxDQUFDLENBQUM7TUFDM0M7SUFDRjtJQUVBLElBQUlJLE1BQU0sQ0FBQ0MsSUFBSSxDQUFDQyxnQkFBQyxDQUFDQyxZQUFZLENBQUNSLEtBQUssQ0FBQyxDQUFDUyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUNDLE1BQU0sS0FBSyxDQUFDLEVBQUU7TUFDL0RkLFdBQVcsQ0FBQ0UsU0FBUyxDQUFDUyxnQkFBQyxDQUFDQyxZQUFZLENBQUNSLEtBQUssQ0FBQyxDQUFDUyxTQUFTLENBQUMsQ0FBQyxFQUFFO1FBQ3ZEVixPQUFPLEVBQUUsQ0FBQyxHQUFHLEVBQUUsR0FBRztNQUNwQixDQUFDLENBQUM7SUFDSjtFQUNGO0VBQ0E7QUFDRixDQUFDO0FBQUNZLE9BQUEsQ0FBQW5CLGNBQUEsR0FBQUEsY0FBQTtBQUVLLElBQU1FLFdBQVcsR0FBRyxTQUFkQSxXQUFXQSxDQUFJa0IsSUFBSSxFQUFLO0VBQ25DLE9BQU9BLElBQUksSUFBSUEsSUFBSSxDQUFDRixNQUFNLEdBQUcsQ0FBQyxJQUFJTCxNQUFNLENBQUNDLElBQUksQ0FBQ00sSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUNGLE1BQU0sR0FBRyxDQUFDO0FBQ25FLENBQUM7QUFBQ0MsT0FBQSxDQUFBakIsV0FBQSxHQUFBQSxXQUFBO0FBRUssSUFBTW1CLG9CQUFvQixHQUFHLFNBQXZCQSxvQkFBb0JBLENBQUlDLFdBQVcsRUFBRXJCLE1BQU0sRUFBRXNCLE1BQU0sRUFBRUMsS0FBSyxFQUFLO0VBQzFFLE9BQ0VGLFdBQVcsQ0FBQ0csR0FBRyxLQUFLQyxTQUFTLElBQzdCekIsTUFBTSxDQUFDSSxPQUFPLEtBQUssSUFBSSxJQUN2Qm1CLEtBQUssS0FBS0UsU0FBUyxJQUNuQkgsTUFBTSxLQUFLRyxTQUFTO0FBRXhCLENBQUM7QUFBQ1AsT0FBQSxDQUFBRSxvQkFBQSxHQUFBQSxvQkFBQTtBQUVLLElBQU1NLDRCQUE0QixHQUFHLFNBQS9CQSw0QkFBNEJBLENBQ3ZDSCxLQUFLLEVBQ0xJLEtBQUssRUFDTEMsTUFBTSxFQUNONUIsTUFBTSxFQUNOc0IsTUFBTSxFQUNIO0VBQ0gsT0FDRU0sTUFBTSxDQUFDSixHQUFHLEtBQUtDLFNBQVMsSUFDeEJ6QixNQUFNLENBQUNJLE9BQU8sS0FBSyxJQUFJLElBQ3ZCbUIsS0FBSyxDQUFDTixNQUFNLElBQUksQ0FBQyxJQUNqQlUsS0FBSyxDQUFDVixNQUFNLElBQUksQ0FBQyxJQUNqQkssTUFBTSxDQUFDTCxNQUFNLElBQUksQ0FBQztBQUV0QixDQUFDO0FBQUNDLE9BQUEsQ0FBQVEsNEJBQUEsR0FBQUEsNEJBQUE7QUFFSyxJQUFNRyx5QkFBeUIsR0FBRyxTQUE1QkEseUJBQXlCQSxDQUNwQ0MsWUFBc0IsRUFDdEJDLFlBQVksRUFDVDtFQUNILE9BQ0VELFlBQVksQ0FBQ0UsUUFBUSxDQUFDRCxZQUFZLENBQUNyQixZQUFZLENBQUMsSUFDaERxQixZQUFZLENBQUNFLGdCQUFnQixLQUFLLFNBQVM7QUFFL0MsQ0FBQztBQUFDZixPQUFBLENBQUFXLHlCQUFBLEdBQUFBLHlCQUFBO0FBRUssSUFBTUssa0JBQWtCLEdBQUcsU0FBckJBLGtCQUFrQkEsQ0FBSUMsS0FBSyxFQUFFQyxTQUFTLEVBQUs7RUFDdEQsSUFBSUMsSUFBSSxHQUFHRixLQUFLLENBQUNHLE9BQU8sQ0FBQ0QsSUFBSTtFQUM3QkEsSUFBSSxDQUFDQyxPQUFPLENBQUNDLFFBQVEsR0FBR0MsZUFBZSxDQUFDSixTQUFTLENBQUMsQ0FBQ0csUUFBUTtFQUMzREYsSUFBSSxDQUFDQyxPQUFPLENBQUNHLFVBQVUsR0FBR0QsZUFBZSxDQUFDSixTQUFTLENBQUMsQ0FBQ0ssVUFBVTtFQUMvRE4sS0FBSyxDQUFDTyxPQUFPLENBQUNMLElBQUksQ0FBQztFQUNuQkYsS0FBSyxDQUFDUSxVQUFVLENBQUMsQ0FBQyxDQUFDO0FBQ3JCLENBQUM7QUFBQ3pCLE9BQUEsQ0FBQWdCLGtCQUFBLEdBQUFBLGtCQUFBO0FBRUssSUFBTVUsb0JBQW9CLEdBQUcsU0FBdkJBLG9CQUFvQkEsQ0FBSVQsS0FBSyxFQUFFQyxTQUFTLEVBQUs7RUFDeEQsSUFBSUMsSUFBSSxHQUFHRixLQUFLLENBQUNHLE9BQU8sQ0FBQ0QsSUFBSTtFQUM3QixJQUFJUSxlQUFlLEdBQUdWLEtBQUssQ0FBQ1csb0JBQW9CO0VBQ2hELElBQUlDLFFBQVEsR0FBRztJQUNiQyxPQUFPLEVBQUViLEtBQUssQ0FBQ2MsZUFBZSxJQUFJZCxLQUFLLENBQUNlLFdBQVc7SUFDbkRDLFNBQVMsRUFBRWhCLEtBQUssQ0FBQ2MsZUFBZTtJQUNoQ0csS0FBSyxFQUFFakIsS0FBSyxDQUFDZTtFQUNmLENBQUM7RUFFRCxJQUFJZixLQUFLLENBQUNrQixrQkFBa0IsS0FBSyxDQUFDLEVBQUU7SUFDbEMsSUFBSVIsZUFBZSxFQUFFO01BQ25CUixJQUFJLENBQUNDLE9BQU8sQ0FBQ0MsUUFBUSxHQUFHZSxpQkFBaUIsQ0FBQ2xCLFNBQVMsRUFBRVcsUUFBUSxDQUFDLENBQUNSLFFBQVE7TUFDdkVGLElBQUksQ0FBQ0MsT0FBTyxDQUFDRyxVQUFVLEdBQUdhLGlCQUFpQixDQUN6Q2xCLFNBQVMsRUFDVFcsUUFDRixDQUFDLENBQUNOLFVBQVU7SUFDZCxDQUFDLE1BQU07TUFDTEosSUFBSSxDQUFDQyxPQUFPLENBQUNDLFFBQVEsR0FBR2dCLG1CQUFtQixDQUFDbkIsU0FBUyxDQUFDLENBQUNHLFFBQVE7TUFDL0RGLElBQUksQ0FBQ0MsT0FBTyxDQUFDRyxVQUFVLEdBQUdjLG1CQUFtQixDQUFDbkIsU0FBUyxDQUFDLENBQUNLLFVBQVU7SUFDckU7RUFDRixDQUFDLE1BQU07SUFDTCxJQUFJTixLQUFLLENBQUNrQixrQkFBa0IsS0FBSyxDQUFDLEVBQUU7TUFDbENoQixJQUFJLENBQUNDLE9BQU8sQ0FBQ0MsUUFBUSxHQUFHaUIsaUJBQWlCLENBQUNwQixTQUFTLEVBQUVXLFFBQVEsQ0FBQyxDQUFDUixRQUFRO01BQ3ZFRixJQUFJLENBQUNDLE9BQU8sQ0FBQ0csVUFBVSxHQUFHZSxpQkFBaUIsQ0FDekNwQixTQUFTLEVBQ1RXLFFBQ0YsQ0FBQyxDQUFDTixVQUFVO0lBQ2QsQ0FBQyxNQUFNO01BQ0xKLElBQUksQ0FBQ0MsT0FBTyxDQUFDQyxRQUFRLEdBQUdrQixjQUFjLENBQUNyQixTQUFTLEVBQUVXLFFBQVEsQ0FBQyxDQUFDUixRQUFRO01BQ3BFRixJQUFJLENBQUNDLE9BQU8sQ0FBQ0csVUFBVSxHQUFHZ0IsY0FBYyxDQUFDckIsU0FBUyxFQUFFVyxRQUFRLENBQUMsQ0FBQ04sVUFBVTtJQUMxRTtFQUNGO0VBRUFOLEtBQUssQ0FBQ08sT0FBTyxDQUFDTCxJQUFJLENBQUM7QUFDckIsQ0FBQztBQUFDbkIsT0FBQSxDQUFBMEIsb0JBQUEsR0FBQUEsb0JBQUE7QUFFRixJQUFNVyxtQkFBbUIsR0FBRyxTQUF0QkEsbUJBQW1CQSxDQUFJbkIsU0FBUyxFQUFLO0VBQ3pDLE9BQU87SUFDTEcsUUFBUSxFQUFFLENBQUNILFNBQVMsR0FBRyxHQUFHLEVBQUVBLFNBQVMsR0FBRyxHQUFHLENBQWU7SUFDMURLLFVBQVUsRUFBRSxDQUFDTCxTQUFTLEdBQUcsR0FBRyxFQUFFQSxTQUFTLEdBQUcsR0FBRztFQUMvQyxDQUFDO0FBQ0gsQ0FBQztBQUVNLElBQU1JLGVBQWUsR0FBRyxTQUFsQkEsZUFBZUEsQ0FBSUosU0FBUyxFQUFLO0VBQzVDLE9BQU87SUFDTEcsUUFBUSxFQUFFLENBQUNILFNBQVMsR0FBRyxHQUFHLEVBQUVBLFNBQVMsR0FBRyxHQUFHLENBQWU7SUFDMURLLFVBQVUsRUFBRSxDQUFDTCxTQUFTLEdBQUcsQ0FBQyxFQUFFQSxTQUFTLEdBQUcsQ0FBQztFQUMzQyxDQUFDO0FBQ0gsQ0FBQztBQUFDbEIsT0FBQSxDQUFBc0IsZUFBQSxHQUFBQSxlQUFBO0FBRUssSUFBTWMsaUJBQWlCLEdBQUcsU0FBcEJBLGlCQUFpQkEsQ0FBSWxCLFNBQVMsRUFBRVcsUUFBUSxFQUFLO0VBQ3hELElBQUlBLFFBQVEsQ0FBQ0MsT0FBTyxFQUFFO0lBQ3BCLElBQUlELFFBQVEsQ0FBQ0ksU0FBUyxFQUFFO01BQ3RCLE9BQU87UUFDTFosUUFBUSxFQUFFLENBQUNILFNBQVMsR0FBRyxJQUFJLEVBQUVBLFNBQVMsR0FBRyxHQUFHLENBQWU7UUFDM0RLLFVBQVUsRUFBRSxDQUFDTCxTQUFTLEdBQUcsQ0FBQyxFQUFFQSxTQUFTLEdBQUcsQ0FBQztNQUMzQyxDQUFDO0lBQ0gsQ0FBQyxNQUFNO01BQ0wsT0FBTztRQUNMRyxRQUFRLEVBQUUsQ0FBQ0gsU0FBUyxHQUFHLElBQUksRUFBRUEsU0FBUyxHQUFHLEdBQUcsQ0FBZTtRQUMzREssVUFBVSxFQUFFLENBQUNMLFNBQVMsR0FBRyxDQUFDLEVBQUVBLFNBQVMsR0FBRyxDQUFDO01BQzNDLENBQUM7SUFDSDtFQUNGLENBQUMsTUFBTTtJQUNMLE9BQU87TUFDTEcsUUFBUSxFQUFFLENBQUNILFNBQVMsR0FBRyxJQUFJLEVBQUVBLFNBQVMsR0FBRyxHQUFHLENBQWU7TUFDM0RLLFVBQVUsRUFBRSxDQUFDTCxTQUFTLEdBQUcsQ0FBQyxFQUFFQSxTQUFTLEdBQUcsQ0FBQztJQUMzQyxDQUFDO0VBQ0g7QUFDRixDQUFDO0FBQUNsQixPQUFBLENBQUFvQyxpQkFBQSxHQUFBQSxpQkFBQTtBQUVLLElBQU1FLGlCQUFpQixHQUFHLFNBQXBCQSxpQkFBaUJBLENBQUlwQixTQUFTLEVBQUVXLFFBQVEsRUFBSztFQUN4RCxJQUFJQSxRQUFRLENBQUNDLE9BQU8sRUFBRTtJQUNwQixJQUFJRCxRQUFRLENBQUNJLFNBQVMsRUFBRTtNQUN0QixPQUFPO1FBQ0xaLFFBQVEsRUFBRSxDQUFDSCxTQUFTLEdBQUcsR0FBRyxFQUFFQSxTQUFTLEdBQUcsR0FBRyxDQUFDO1FBQzVDSyxVQUFVLEVBQUUsQ0FBQ0wsU0FBUyxHQUFHLENBQUMsSUFBSSxFQUFFQSxTQUFTLEdBQUcsR0FBRztNQUNqRCxDQUFDO0lBQ0gsQ0FBQyxNQUFNO01BQ0wsT0FBTztRQUNMRyxRQUFRLEVBQUUsQ0FBQ0gsU0FBUyxHQUFHLEdBQUcsRUFBRUEsU0FBUyxHQUFHLEdBQUcsQ0FBQztRQUM1Q0ssVUFBVSxFQUFFLENBQUNMLFNBQVMsR0FBRyxDQUFDLElBQUksRUFBRUEsU0FBUyxHQUFHLEdBQUc7TUFDakQsQ0FBQztJQUNIO0VBQ0YsQ0FBQyxNQUFNO0lBQ0wsT0FBTztNQUNMRyxRQUFRLEVBQUUsQ0FBQ0gsU0FBUyxHQUFHLEdBQUcsRUFBRUEsU0FBUyxHQUFHLEdBQUcsQ0FBQztNQUM1Q0ssVUFBVSxFQUFFLENBQUNMLFNBQVMsR0FBRyxLQUFLLEVBQUVBLFNBQVMsR0FBRyxJQUFJO0lBQ2xELENBQUM7RUFDSDtBQUNGLENBQUM7QUFBQ2xCLE9BQUEsQ0FBQXNDLGlCQUFBLEdBQUFBLGlCQUFBO0FBRUssSUFBTUMsY0FBYyxHQUFHLFNBQWpCQSxjQUFjQSxDQUFJckIsU0FBUyxFQUFFVyxRQUFRLEVBQUs7RUFDckQsSUFBSUEsUUFBUSxDQUFDQyxPQUFPLEVBQUU7SUFDcEIsSUFBSUQsUUFBUSxDQUFDSSxTQUFTLEVBQUU7TUFDdEIsT0FBTztRQUNMWixRQUFRLEVBQUUsQ0FBQ0gsU0FBUyxHQUFHLEdBQUcsRUFBRUEsU0FBUyxHQUFHLEdBQUcsQ0FBQztRQUM1Q0ssVUFBVSxFQUFFLENBQUNMLFNBQVMsR0FBRyxDQUFDLEdBQUcsRUFBRUEsU0FBUyxHQUFHLEdBQUc7TUFDaEQsQ0FBQztJQUNILENBQUMsTUFBTTtNQUNMLE9BQU87UUFDTEcsUUFBUSxFQUFFLENBQUNILFNBQVMsR0FBRyxHQUFHLEVBQUVBLFNBQVMsR0FBRyxHQUFHLENBQUM7UUFDNUNLLFVBQVUsRUFBRSxDQUFDTCxTQUFTLEdBQUcsQ0FBQyxHQUFHLEVBQUVBLFNBQVMsR0FBRyxHQUFHO01BQ2hELENBQUM7SUFDSDtFQUNGLENBQUMsTUFBTTtJQUNMLE9BQU87TUFDTEcsUUFBUSxFQUFFLENBQUNILFNBQVMsR0FBRyxHQUFHLEVBQUVBLFNBQVMsR0FBRyxHQUFHLENBQUM7TUFDNUNLLFVBQVUsRUFBRSxDQUFDTCxTQUFTLEdBQUcsQ0FBQyxFQUFFQSxTQUFTLEdBQUcsR0FBRztJQUM3QyxDQUFDO0VBQ0g7QUFDRixDQUFDO0FBQUNsQixPQUFBLENBQUF1QyxjQUFBLEdBQUFBLGNBQUE7QUFFSyxJQUFNQyxlQUFlLEdBQUcsU0FBbEJBLGVBQWVBLENBQUlsQyxHQUFHLEVBQUs7RUFDdEMsSUFBSW1DLE1BQU0sR0FBR25DLEdBQUcsQ0FBQ2YsT0FBTztFQUN4QixJQUFJMkIsU0FBUyxHQUFHWixHQUFHLENBQUNvQyxLQUFLO0VBRXpCLEtBQUssSUFBTXBELFFBQVEsSUFBSW1ELE1BQU0sRUFBRTtJQUM3QixJQUFJOUIseUJBQXlCLENBQUMsQ0FBQyxZQUFZLENBQUMsRUFBRThCLE1BQU0sQ0FBQ25ELFFBQVEsQ0FBQyxDQUFDLEVBQUU7TUFDL0QwQixrQkFBa0IsQ0FBQ3lCLE1BQU0sQ0FBQ25ELFFBQVEsQ0FBQyxFQUFFNEIsU0FBUyxDQUFDO0lBQ2pEO0lBRUEsSUFBSVAseUJBQXlCLENBQUMsQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDLEVBQUU4QixNQUFNLENBQUNuRCxRQUFRLENBQUMsQ0FBQyxFQUFFO01BQ2xFb0Msb0JBQW9CLENBQUNlLE1BQU0sQ0FBQ25ELFFBQVEsQ0FBQyxFQUFFNEIsU0FBUyxDQUFDO0lBQ25EO0lBRUEsSUFDRVAseUJBQXlCLENBQUMsQ0FBQyxVQUFVLEVBQUUsYUFBYSxDQUFDLEVBQUU4QixNQUFNLENBQUNuRCxRQUFRLENBQUMsQ0FBQyxFQUN4RTtNQUNBb0Msb0JBQW9CLENBQUNlLE1BQU0sQ0FBQ25ELFFBQVEsQ0FBQyxFQUFFNEIsU0FBUyxDQUFDO0lBQ25EO0VBQ0Y7QUFDRixDQUFDO0FBQUNsQixPQUFBLENBQUF3QyxlQUFBLEdBQUFBLGVBQUE7QUFFSyxJQUFNRyxRQUFRLEdBQUcsU0FBWEEsUUFBUUEsQ0FBSUMsV0FBVyxFQUFLO0VBQ3ZDLE9BQU9oRCxnQkFBQyxDQUFDaUQsU0FBUyxpREFBQUMsTUFBQSxDQUNnQ0YsV0FBVyw0SUFDM0Q7SUFDRUcsV0FBVyxFQUNULHlOQUF5TjtJQUMzTkMsT0FBTyxFQUFFLEVBQUU7SUFDWEMsT0FBTyxFQUFFLENBQUM7SUFDVkMsRUFBRSxFQUFFLG9CQUFvQjtJQUN4QkMsUUFBUSxFQUFFLEdBQUc7SUFDYkMsVUFBVSxFQUFFLENBQUMsQ0FBQztJQUNkQyxpQkFBaUIsRUFBRSxLQUFLO0lBQ3hCQyxjQUFjLEVBQUU7RUFDbEIsQ0FDRixDQUFDO0FBQ0gsQ0FBQztBQUFDdEQsT0FBQSxDQUFBMkMsUUFBQSxHQUFBQSxRQUFBO0FBRUssSUFBTVksUUFBUSxHQUFHLFNBQVhBLFFBQVFBLENBQUlYLFdBQVcsRUFBRVksb0JBQW9CLEVBQUs7RUFBQSxJQUFBQyxJQUFBO0VBQzdELElBQUlDLFVBQVUsR0FBR0MsYUFBSSxDQUFDQyxDQUFDLENBQUMsb0JBQW9CLENBQUM7RUFDN0MsSUFBSUMsU0FBUyxHQUFHRixhQUFJLENBQUNDLENBQUMsQ0FBQyxzQkFBc0IsQ0FBQztFQUM5QyxPQUFBSCxJQUFBLFdBQUFLLGdCQUFBLENBQUFDLE9BQUEsRUFBQU4sSUFBQSxFQUNHQyxVQUFVLEVBQUdmLFFBQVEsQ0FBQ0MsV0FBVyxDQUFDLE9BQUFrQixnQkFBQSxDQUFBQyxPQUFBLEVBQUFOLElBQUEsRUFDbENJLFNBQVMsRUFBR2xCLFFBQVEsQ0FBQ2Esb0JBQW9CLENBQUMsR0FBQUMsSUFBQTtBQUUvQyxDQUFDO0FBQUN6RCxPQUFBLENBQUF1RCxRQUFBLEdBQUFBLFFBQUE7QUFFSyxJQUFNUyxxQkFBcUIsR0FBRyxTQUF4QkEscUJBQXFCQSxDQUFJQyxPQUFPLEVBQUUzRCxHQUFHLEVBQUs7RUFDckRBLEdBQUcsQ0FBQzRELFNBQVMsQ0FBQyxVQUFDakQsS0FBSyxFQUFLO0lBQ3ZCLElBQ0dBLEtBQUssWUFBWXJCLGdCQUFDLENBQUN1RSxRQUFRLElBQUlsRCxLQUFLLENBQUN6QixZQUFZLEtBQUssTUFBTSxJQUM3RHlCLEtBQUssWUFBWXJCLGdCQUFDLENBQUN3RSxNQUFNLENBQUNDLFNBQVMsRUFDbkM7TUFDQXBELEtBQUssQ0FBQ3FELFFBQVEsQ0FBQztRQUFFQyxPQUFPLEVBQUVOLE9BQU8sR0FBRyxDQUFDLEdBQUc7TUFBRSxDQUFDLENBQUM7SUFDOUM7RUFDRixDQUFDLENBQUM7QUFDSixDQUFDOztBQUVEO0FBQ0E7QUFDQTtBQUFBakUsT0FBQSxDQUFBZ0UscUJBQUEsR0FBQUEscUJBQUE7QUFFTyxJQUFNUSxrQkFBa0IsR0FBRyxTQUFyQkEsa0JBQWtCQSxDQUFJQyxTQUFTLEVBQUVuRSxHQUFHLEVBQUs7RUFDcEQsSUFBSW9FLFFBQVEsR0FBR0MsUUFBUSxDQUFDQyxhQUFhLENBQUMsaUJBQWlCLENBQUM7RUFDeERGLFFBQVEsQ0FBQ0csT0FBTyxHQUFHSixTQUFTO0FBQzlCLENBQUM7QUFBQ3pFLE9BQUEsQ0FBQXdFLGtCQUFBLEdBQUFBLGtCQUFBO0FBRUYsSUFBTU0sY0FBYyxHQUFHLFNBQWpCQSxjQUFjQSxDQUFJeEUsR0FBRyxFQUFLO0VBQzlCLE9BQU8sQ0FDTDtJQUNFeUUsS0FBSyxFQUFFcEIsYUFBSSxDQUFDQyxDQUFDLENBQUMsMEJBQTBCLENBQUM7SUFDekNWLEVBQUUsRUFBRSxnQkFBZ0I7SUFDcEI4QixTQUFTLEVBQUUsVUFBVTtJQUNyQkMsU0FBUyxFQUFFLENBQUMsR0FBRyxDQUFDO0lBQ2hCQyxRQUFRLEVBQUUsU0FBQUEsU0FBQ0MsU0FBUztNQUFBLE9BQUtuQixxQkFBcUIsQ0FBQ21CLFNBQVMsRUFBRTdFLEdBQUcsQ0FBQztJQUFBO0VBQ2hFLENBQUMsRUFFRDtJQUNFeUUsS0FBSyxFQUFFLDRCQUE0QjtJQUNuQzdCLEVBQUUsRUFBRSwyQkFBMkI7SUFDL0I4QixTQUFTLEVBQUUsVUFBVTtJQUNyQkUsUUFBUSxFQUFFLFNBQUFBLFNBQUNDLFNBQVM7TUFBQSxPQUFLLFlBQU0sQ0FBQyxDQUFDO0lBQUE7RUFDbkMsQ0FBQyxDQUNGO0FBQ0gsQ0FBQztBQUVELElBQU1DLHNDQUFzQyxHQUFHLFNBQXpDQSxzQ0FBc0NBLENBQzFDQyxpQkFBaUIsRUFDakJDLGVBQWUsRUFDWjtFQUNIMUYsZ0JBQUMsQ0FBQzJGLFFBQVEsQ0FBQ0MsRUFBRSxDQUFDSCxpQkFBaUIsRUFBRSxXQUFXLEVBQUUsWUFBWTtJQUN4REMsZUFBZSxDQUFDRyxLQUFLLENBQUNDLE9BQU8sR0FBRyxPQUFPO0VBQ3pDLENBQUMsQ0FBQztFQUVGOUYsZ0JBQUMsQ0FBQzJGLFFBQVEsQ0FBQ0MsRUFBRSxDQUFDSCxpQkFBaUIsRUFBRSxVQUFVLEVBQUUsWUFBWTtJQUN2REMsZUFBZSxDQUFDRyxLQUFLLENBQUNDLE9BQU8sR0FBRyxNQUFNO0VBQ3hDLENBQUMsQ0FBQztBQUNKLENBQUM7QUFFRCxJQUFNQyxtQkFBbUIsR0FBRyxTQUF0QkEsbUJBQW1CQSxDQUFJQyxPQUFPLEVBQUVDLFNBQVMsRUFBSztFQUNsRCxJQUFJQyxnQkFBZ0IsR0FBR25CLFFBQVEsQ0FBQ29CLGFBQWEsQ0FBQyxLQUFLLENBQUM7RUFDcERELGdCQUFnQixDQUFDRSxTQUFTLEdBQUcsaUNBQWlDO0VBQzlERixnQkFBZ0IsQ0FBQ0csU0FBUyw2Q0FBQW5ELE1BQUEsQ0FFTDhDLE9BQU8sQ0FBQ1osU0FBUyxjQUFBbEMsTUFBQSxDQUFTOEMsT0FBTyxDQUFDMUMsRUFBRSxZQUFBSixNQUFBLENBQVE4QyxPQUFPLENBQUNiLEtBQUssMkJBRTNFO0VBRUhlLGdCQUFnQixDQUNibEIsYUFBYSxLQUFBOUIsTUFBQSxDQUFLOEMsT0FBTyxDQUFDMUMsRUFBRSxDQUFFLENBQUMsQ0FDL0JnRCxnQkFBZ0IsQ0FBQyxRQUFRLEVBQUUsVUFBVUMsQ0FBQyxFQUFFO0lBQ3ZDLElBQU1oQixTQUFTLEdBQUdnQixDQUFDLENBQUNDLE1BQU0sQ0FBQ3ZCLE9BQU87SUFDbENlLE9BQU8sQ0FBQ1YsUUFBUSxDQUFDQyxTQUFTLENBQUM7RUFDN0IsQ0FBQyxDQUFDO0VBRUpXLGdCQUFnQixDQUFDTCxLQUFLLENBQUNDLE9BQU8sR0FBRyxNQUFNO0VBQ3ZDRyxTQUFTLGFBQVRBLFNBQVMsdUJBQVRBLFNBQVMsQ0FBRVEsV0FBVyxDQUFDUCxnQkFBZ0IsQ0FBQztFQUV4Q1Ysc0NBQXNDLENBQUNTLFNBQVMsRUFBRUMsZ0JBQWdCLENBQUM7QUFDckUsQ0FBQztBQUVNLElBQU1RLCtCQUErQixHQUFHLFNBQWxDQSwrQkFBK0JBLENBQzFDaEcsR0FBRyxFQUNIaUcsUUFBUSxFQUlMO0VBQUEsSUFISDlCLFNBQVMsR0FBQStCLFNBQUEsQ0FBQXpHLE1BQUEsUUFBQXlHLFNBQUEsUUFBQWpHLFNBQUEsR0FBQWlHLFNBQUEsTUFBRyxJQUFJO0VBQUEsSUFDaEJDLElBQUksR0FBQUQsU0FBQSxDQUFBekcsTUFBQSxPQUFBeUcsU0FBQSxNQUFBakcsU0FBQTtFQUFBLElBQ0ptRyxnQkFBZ0IsR0FBQUYsU0FBQSxDQUFBekcsTUFBQSxPQUFBeUcsU0FBQSxNQUFBakcsU0FBQTtFQUVoQixJQUFJb0csVUFBVSxHQUFHL0csZ0JBQUMsQ0FBQ2dHLE9BQU8sQ0FDdkJuRCxNQUFNLENBQUM4RCxRQUFRLEVBQUUsQ0FBQyxDQUFDLEVBQUU7SUFBRUssUUFBUSxFQUFFO0VBQWMsQ0FBQyxDQUFDLENBQ2pEQyxLQUFLLENBQUN2RyxHQUFHLENBQUM7RUFDYixJQUFJdUYsU0FBUyxHQUFHYyxVQUFVLENBQUNHLFlBQVksQ0FBQyxDQUFDO0VBRXpDLElBQUlKLGdCQUFnQixFQUFFO0lBQ3BCNUIsY0FBYyxDQUFDeEUsR0FBRyxDQUFDLENBQUN5RyxPQUFPLENBQUMsVUFBQ25CLE9BQU8sRUFBSztNQUN2QyxJQUFJQSxPQUFPLENBQUNYLFNBQVMsSUFBSVcsT0FBTyxDQUFDWCxTQUFTLENBQUNuRSxRQUFRLENBQUMyRixJQUFJLENBQUMsRUFBRTtNQUUzRGQsbUJBQW1CLENBQUNDLE9BQU8sRUFBRUMsU0FBUyxDQUFDO01BQ3ZDckIsa0JBQWtCLENBQUNDLFNBQVMsRUFBRW5FLEdBQUcsQ0FBQztJQUNwQyxDQUFDLENBQUM7RUFDSjtBQUNGLENBQUM7QUFBQ04sT0FBQSxDQUFBc0csK0JBQUEsR0FBQUEsK0JBQUE7QUFFSyxJQUFNVSxhQUFhLEdBQUcsU0FBaEJBLGFBQWFBLENBQ3hCQyxZQUFZLEVBQ1pyRSxXQUFXLEVBQ1hZLG9CQUFvQixFQUNwQjFFLE1BQU0sRUFDTm9JLFFBQVEsRUFDUm5JLFdBQVcsRUFDWEMsY0FBYyxFQUNkbUksZUFBZSxFQUNmVCxnQkFBZ0IsRUFDaEJVLGtCQUFrQixFQUVmO0VBQUEsSUFESFgsSUFBSSxHQUFBRCxTQUFBLENBQUF6RyxNQUFBLFNBQUF5RyxTQUFBLFNBQUFqRyxTQUFBLEdBQUFpRyxTQUFBLE9BQUcsQ0FBQztFQUVSO0VBQ0ExSCxNQUFNLENBQUNJLE9BQU8sR0FBRyxJQUFJVSxnQkFBQyxDQUFDeUgsR0FBRyxDQUFDLEtBQUssRUFBRTtJQUNoQ0MsTUFBTSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNkQyxRQUFRLEVBQUUsQ0FBQztJQUNYQyxJQUFJLEVBQUVQLFlBQVk7SUFDbEJRLGtCQUFrQixFQUFFLEtBQUs7SUFDekJDLFlBQVksRUFBRTtFQUNoQixDQUFDLENBQUM7RUFFRixJQUFJaEIsZ0JBQWdCLEVBQUVRLFFBQVEsQ0FBQyxJQUFBUywwQkFBTSxFQUFDN0ksTUFBTSxDQUFDSSxPQUFPLENBQUMsQ0FBQztFQUV0REosTUFBTSxDQUFDSSxPQUFPLENBQUMwSSxTQUFTLENBQUMsWUFBTTtJQUM3QixJQUFJdEgsR0FBRyxHQUFHeEIsTUFBTSxDQUFDSSxPQUFPO0lBQ3hCLElBQU1xSCxRQUFRLEdBQUdoRCxRQUFRLENBQUNYLFdBQVcsRUFBRVksb0JBQW9CLENBQUM7SUFFNUQ4QywrQkFBK0IsQ0FDN0JoRyxHQUFHLEVBQ0hpRyxRQUFRLEVBQ1JhLGtCQUFrQixFQUNsQlgsSUFBSSxFQUNKQyxnQkFDRixDQUFDOztJQUVEO0lBQ0FoSCxNQUFNLENBQUNtSSxNQUFNLENBQUN0QixRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQ00sS0FBSyxDQUFDdkcsR0FBRyxDQUFDO0lBRXJDd0gsVUFBVSxDQUFDLFlBQU07TUFDZixJQUFJLENBQUNoSixNQUFNLENBQUNJLE9BQU8sRUFBRTtRQUNuQjtNQUNGO01BRUEsSUFBSTtRQUNGSixNQUFNLENBQUNJLE9BQU8sQ0FBQzZJLGNBQWMsQ0FBQyxJQUFJLENBQUM7TUFDckMsQ0FBQyxDQUFDLE9BQU9DLEdBQUcsRUFBRTtRQUNaQyxPQUFPLENBQUNDLEtBQUssQ0FBQyxLQUFLLEVBQUVGLEdBQUcsQ0FBQztNQUMzQjtNQUVBZCxRQUFRLENBQUMsSUFBQWlCLGlCQUFRLEVBQUNySixNQUFNLENBQUNJLE9BQU8sQ0FBQyxDQUFDO01BQ2xDZ0ksUUFBUSxDQUFDLElBQUFrQix3QkFBZSxFQUFDLElBQUksQ0FBQyxDQUFDO01BRS9COUgsR0FBRyxDQUFDa0YsRUFBRSxDQUFDLFNBQVMsRUFBRSxVQUFDNkMsS0FBSyxFQUFLO1FBQzNCLElBQUlBLEtBQUssQ0FBQ0MsYUFBYSxDQUFDQyxHQUFHLEtBQUssUUFBUSxFQUFFO1VBQ3hDakksR0FBRyxDQUFDa0ksVUFBVSxDQUFDLENBQUM7VUFDaEI3RCxRQUFRLENBQUM4RCxJQUFJLENBQUNDLEtBQUssQ0FBQyxDQUFDO1FBQ3ZCO01BQ0YsQ0FBQyxDQUFDO0lBQ0osQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNMLElBQUk1SixNQUFNLENBQUNJLE9BQU8sSUFBSUgsV0FBVyxDQUFDQyxjQUFjLENBQUMsRUFBRTtNQUNqREYsTUFBTSxDQUFDSSxPQUFPLENBQUNDLFNBQVMsQ0FBQ0gsY0FBYyxDQUFDO0lBQzFDO0VBQ0YsQ0FBQyxDQUFDO0VBRUZGLE1BQU0sQ0FBQ0ksT0FBTyxDQUFDc0csRUFBRSxDQUFDLFNBQVMsRUFBRSxVQUFVVyxDQUFDLEVBQUU7SUFDeEMsSUFBSSxDQUFDckgsTUFBTSxDQUFDSSxPQUFPLEVBQUU7TUFDbkI7SUFDRjtJQUNBLElBQUlzSSxJQUFJLEdBQUcxSSxNQUFNLENBQUNJLE9BQU8sQ0FBQ3lKLE9BQU8sQ0FBQyxDQUFDO0lBQ25DeEIsZUFBZSxDQUFDSyxJQUFJLENBQUM7RUFDdkIsQ0FBQyxDQUFDO0FBQ0osQ0FBQztBQUFDeEgsT0FBQSxDQUFBZ0gsYUFBQSxHQUFBQSxhQUFBO0FBRUssSUFBTTRCLG1CQUFtQixHQUFHO0VBQ2pDQyxpQkFBaUIsRUFBRSxLQUFLO0VBQ3hCQyxtQkFBbUIsRUFBRSxLQUFLO0VBQzFCQyxtQkFBbUIsRUFBRSxJQUFJO0VBQ3pCQyxPQUFPLEVBQUUsSUFBSTtFQUNiQyx1QkFBdUIsRUFBRSxFQUFFO0VBQzNCQywwQkFBMEIsRUFBRSxLQUFLO0VBQ2pDQyxjQUFjLEVBQUUsSUFBSTtFQUNwQkMsa0JBQWtCLEVBQUUsU0FBQUEsbUJBQUNDLE9BQU8sRUFBSztJQUMvQixPQUFPLElBQUl6SixnQkFBQyxDQUFDMEosT0FBTyxDQUFDO01BQ25CQyxJQUFJLGdCQUFBekcsTUFBQSxDQUFnQnVHLE9BQU8sQ0FBQ0csV0FBVyxtRUFBQTFHLE1BQUEsQ0FDR2EsYUFBSSxDQUFDQyxDQUFDLENBQUMsWUFBWSxDQUFDLFdBQVE7TUFDdEVvQyxTQUFTLEVBQUUsZ0JBQWdCO01BQzNCM0UsUUFBUSxFQUFFLElBQUl6QixnQkFBQyxDQUFDNkosS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFO0lBQzlCLENBQUMsQ0FBQztFQUNKO0FBQ0YsQ0FBQztBQUFDekosT0FBQSxDQUFBNEksbUJBQUEsR0FBQUEsbUJBQUE7QUFFSyxJQUFNYyxVQUFVLEdBQUc7RUFDeEIsQ0FBQyxFQUFFLFFBQVE7RUFDWCxDQUFDLEVBQUUsUUFBUTtFQUNYLENBQUMsRUFBRSxRQUFRO0VBQ1gsQ0FBQyxFQUFFLFFBQVE7RUFDWCxDQUFDLEVBQUUsUUFBUTtFQUNYLENBQUMsRUFBRSxRQUFRO0VBQ1gsQ0FBQyxFQUFFLE9BQU87RUFDVixDQUFDLEVBQUUsT0FBTztFQUNWLENBQUMsRUFBRSxPQUFPO0VBQ1YsRUFBRSxFQUFFLE9BQU87RUFDWCxFQUFFLEVBQUUsUUFBUTtFQUNaLEVBQUUsRUFBRSxRQUFRO0VBQ1osRUFBRSxFQUFFLFFBQVE7RUFDWixFQUFFLEVBQUUsUUFBUTtFQUNaLEVBQUUsRUFBRSxRQUFRO0VBQ1osRUFBRSxFQUFFLFFBQVE7RUFDWixFQUFFLEVBQUUsT0FBTztFQUNYLEVBQUUsRUFBRTtBQUNOLENBQUM7QUFBQzFKLE9BQUEsQ0FBQTBKLFVBQUEsR0FBQUEsVUFBQTtBQUVLLElBQU1DLFlBQVksR0FBRyxTQUFmQSxZQUFZQSxDQUFJdkosTUFBTSxFQUFFd0osU0FBUztFQUFBLE9BQzVDeEosTUFBTSxDQUFDeUosTUFBTSxDQUFDLFVBQUNDLEtBQUs7SUFBQSxPQUFLQSxLQUFLLENBQUNDLFVBQVUsS0FBS0gsU0FBUztFQUFBLEVBQUM7QUFBQTtBQUFDNUosT0FBQSxDQUFBMkosWUFBQSxHQUFBQSxZQUFBO0FBRXBELElBQU1LLFNBQVMsR0FBRyxTQUFaQSxTQUFTQSxDQUFJNUosTUFBTSxFQUFFNkosT0FBTyxFQUFFQyxjQUFjO0VBQUEsT0FDdkQ5SixNQUFNLENBQUMrSixJQUFJLENBQUMsVUFBQ0wsS0FBSztJQUFBLE9BQUtBLEtBQUssQ0FBQzVHLEVBQUUsS0FBSytHLE9BQU8sSUFBSUMsY0FBYyxDQUFDSixLQUFLLENBQUM7RUFBQSxFQUFDO0FBQUE7QUFBQzlKLE9BQUEsQ0FBQWdLLFNBQUEsR0FBQUEsU0FBQTtBQUVqRSxJQUFNSSxXQUFXLEdBQUcsU0FBZEEsV0FBV0EsQ0FBSS9KLEtBQUssRUFBRUQsTUFBTSxFQUFFaUssV0FBVztFQUFBLE9BQ3BEaEssS0FBSyxDQUFDd0osTUFBTSxDQUFDLFVBQUNTLElBQUksRUFBSztJQUNyQixJQUFNQyxXQUFXLEdBQUdQLFNBQVMsQ0FBQzVKLE1BQU0sRUFBRWtLLElBQUksQ0FBQ0UsZUFBZSxFQUFFLFVBQUNWLEtBQUs7TUFBQSxPQUNoRU8sV0FBVyxHQUNQUCxLQUFLLENBQUNDLFVBQVUsSUFBSU8sSUFBSSxDQUFDRyxzQkFBc0IsR0FDL0MsQ0FBQ1gsS0FBSyxDQUFDVyxzQkFBc0I7SUFBQSxDQUNuQyxDQUFDO0lBRUQsSUFBTUMsV0FBVyxHQUFHVixTQUFTLENBQUM1SixNQUFNLEVBQUVrSyxJQUFJLENBQUNLLGVBQWUsRUFBRSxVQUFDYixLQUFLO01BQUEsT0FDaEVPLFdBQVcsR0FDUEMsSUFBSSxDQUFDRyxzQkFBc0IsSUFBSUYsV0FBVyxLQUFLaEssU0FBUyxHQUN4RCxDQUFDdUosS0FBSyxDQUFDVyxzQkFBc0I7SUFBQSxDQUNuQyxDQUFDO0lBRUQsT0FBT0YsV0FBVyxJQUFJRyxXQUFXO0VBQ25DLENBQUMsQ0FBQztBQUFBO0FBQUMxSyxPQUFBLENBQUFvSyxXQUFBLEdBQUFBLFdBQUE7QUFFRSxJQUFNUSxxQkFBcUIsR0FBRyxTQUF4QkEscUJBQXFCQSxDQUFJQyxRQUFRLEVBQUUzRixRQUFRLEVBQUs7RUFDM0QsSUFBTVIsUUFBUSxHQUFHQyxRQUFRLENBQUNDLGFBQWEsQ0FBQ2lHLFFBQVEsQ0FBQztFQUNqRCxJQUFJbkcsUUFBUSxLQUFLLElBQUksRUFBRTtFQUN2QkEsUUFBUSxDQUFDd0IsZ0JBQWdCLENBQUMsUUFBUSxFQUFFO0lBQUEsT0FBTWhCLFFBQVEsQ0FBQ1IsUUFBUSxDQUFDRyxPQUFPLENBQUM7RUFBQSxFQUFDO0FBQ3ZFLENBQUM7QUFBQzdFLE9BQUEsQ0FBQTRLLHFCQUFBLEdBQUFBLHFCQUFBIn0=
@@ -15,11 +15,12 @@ var _jquery = _interopRequireDefault(require("jquery"));
15
15
  var _actions = require("../../../store/global/actions");
16
16
  var _leaflet = _interopRequireDefault(require("leaflet"));
17
17
  var _reactRedux = require("react-redux");
18
+ var _useRemoveExistingLayers = require("../../../hooks/useRemoveExistingLayers");
19
+ var _EventUtils = require("./EventUtils");
18
20
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
19
21
  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; }
20
22
  var PointOfEvent = function PointOfEvent(_ref) {
21
23
  var map = _ref.map,
22
- layerGroup = _ref.layerGroup,
23
24
  point = _ref.point,
24
25
  event = _ref.event;
25
26
  var dispatch = (0, _reactRedux.useDispatch)();
@@ -82,62 +83,41 @@ var PointOfEvent = function PointOfEvent(_ref) {
82
83
  }
83
84
  };
84
85
  (0, _react.useEffect)(function () {
85
- // if (isCollectorUnmonitored(point)) return;
86
-
86
+ if ((0, _EventUtils.isCollectorUnmonitored)(point)) return;
87
87
  var markerLocation = [point['latitude'], point['longitude']];
88
88
  var layerGroup = _leaflet.default.layerGroup();
89
89
  (0, _PointUtils.createBubblePoint)(markerLocation, point, map, event.hovered, layerGroup, flowRateUnit);
90
- if (point.device_status !== 'regular' && event.focused) {
91
- var obs = event.observations.filter(function (obs) {
92
- return obs.point_id === point.id;
93
- })[0];
94
- bindPopupToPoint(obs);
90
+ if (event.focused) (0, _PointUtils.createSamplingIcons)(markerLocation, event, point, map, event.hovered, layerGroup);
91
+ var hasPrimaryIcon = (0, _PointUtils.matchIconToPoint)(point, event) !== null;
92
+ if ((0, _EventUtils.pointIsObservation)(event, point) && event.focused) {
93
+ (0, _PointUtils.createObservationIconPoint)(markerLocation, hasPrimaryIcon, map, point, event, event.hovered, layerGroup);
95
94
  }
96
-
97
- // if (event.focused)
98
- // createSamplingIcons(
99
- // markerLocation,
100
- // event,
101
- // point,
102
- // map,
103
- // event.hovered,
104
- // layerGroup,
105
- // );
106
- // let hasPrimaryIcon = matchIconToPoint(point, event) !== null;
107
-
108
- // if (pointIsObservation(event, point) && event.focused) {
109
- // createObservationIconPoint(
110
- // markerLocation,
111
- // hasPrimaryIcon,
112
- // map,
113
- // point,
114
- // event,
115
- // event.hovered,
116
- // layerGroup,
117
- // );
118
- // }
119
- // layerGroup.addTo(map);
95
+ layerGroup.addTo(map);
96
+ var obs = event.observations.filter(function (obs) {
97
+ return obs.point_id === point.id;
98
+ })[0];
99
+ if (obs !== undefined && event.focused) bindPopupToPoint(obs);
120
100
 
121
101
  // iconZoomControl(map);
122
- // if (event.hovered) {
123
- // return function cleanup() {
124
- // // UNBIND POPUP
125
- // removeFromMap(map, point, 'ObservationHovered');
126
- // removeFromMap(map, point, 'PointHovered');
127
- // removeFromMap(map, point, 'SamplingHovered');
128
- // removeFromMap(map, point, 'IconNumberHovered');
129
- // };
130
- // } else {
131
- // return function cleanup() {
132
- // // UNBIND POPUP
133
- // removeFromMap(map, point, 'Observation');
134
- // removeFromMap(map, point, 'Point');
135
- // removeFromMap(map, point, 'Sampling');
136
- // removeFromMap(map, point, 'IconNumber');
137
- // };
138
- // }
102
+ if (event.hovered) {
103
+ return function cleanup() {
104
+ // UNBIND POPUP
105
+ (0, _useRemoveExistingLayers.removeFromMap)(map, point, 'ObservationHovered');
106
+ (0, _useRemoveExistingLayers.removeFromMap)(map, point, 'PointHovered');
107
+ (0, _useRemoveExistingLayers.removeFromMap)(map, point, 'SamplingHovered');
108
+ (0, _useRemoveExistingLayers.removeFromMap)(map, point, 'IconNumberHovered');
109
+ };
110
+ } else {
111
+ return function cleanup() {
112
+ // UNBIND POPUP
113
+ (0, _useRemoveExistingLayers.removeFromMap)(map, point, 'Observation');
114
+ (0, _useRemoveExistingLayers.removeFromMap)(map, point, 'Point');
115
+ (0, _useRemoveExistingLayers.removeFromMap)(map, point, 'Sampling');
116
+ (0, _useRemoveExistingLayers.removeFromMap)(map, point, 'IconNumber');
117
+ };
118
+ }
139
119
  }, [event, event.focused]);
140
120
  return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null);
141
121
  };
142
122
  exports.PointOfEvent = PointOfEvent;
143
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfUG9pbnRVdGlscyIsIl9yZWFjdERvbSIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfVGltZUZvcm1hdCIsIl9TZWN0b3IiLCJfanF1ZXJ5IiwiX2FjdGlvbnMiLCJfbGVhZmxldCIsIl9yZWFjdFJlZHV4IiwiX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlIiwibm9kZUludGVyb3AiLCJXZWFrTWFwIiwiY2FjaGVCYWJlbEludGVyb3AiLCJjYWNoZU5vZGVJbnRlcm9wIiwib2JqIiwiX19lc01vZHVsZSIsIl90eXBlb2YiLCJkZWZhdWx0IiwiY2FjaGUiLCJoYXMiLCJnZXQiLCJuZXdPYmoiLCJoYXNQcm9wZXJ0eURlc2NyaXB0b3IiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsImtleSIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImRlc2MiLCJzZXQiLCJQb2ludE9mRXZlbnQiLCJfcmVmIiwibWFwIiwibGF5ZXJHcm91cCIsInBvaW50IiwiZXZlbnQiLCJkaXNwYXRjaCIsInVzZURpc3BhdGNoIiwiX3VzZVNlbGVjdG9yIiwidXNlU2VsZWN0b3IiLCJzdGF0ZSIsInBlcm1pc3Npb25zIiwidXNlcl9pbmZvIiwiZmxvd1JhdGVVbml0IiwiZmxvd19yYXRlX3VuaXQiLCJiaW5kUG9wdXBUb1BvaW50Iiwib2JzIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwidW5kZWZpbmVkIiwibGF5ZXJzIiwiX2xheWVycyIsIl9sb29wIiwicHJvcGVydHkiLCJpbmNsdWRlcyIsImthbmRvX29iamVjdCIsImthbmRvX29iamVjdF9pZCIsImlkIiwiYmluZFBvcHVwIiwicG9wdXBDb250ZW50IiwibWluV2lkdGgiLCJvbiIsImUiLCJmaXJzdFNlZW4iLCJkb2N1bWVudCIsImNyZWF0ZUVsZW1lbnQiLCJsYXN0U2VlbiIsInNlY3RvciIsIlJlYWN0RE9NIiwicmVuZGVyIiwidGltZXN0YW1wIiwic3RhcnRfdGltZSIsInRpbWVfem9uZSIsImxhc3Rfc2Vlbl90aW1lIiwic2VjdG9yTmFtZSIsImdyb3VwIiwic2VjdG9yX25hbWUiLCJzZWN0b3JJY29uTmFtZSIsInNlY3Rvcl9pY29uX25hbWUiLCJ3aWR0aCIsInNldFRpbWVvdXQiLCIkIiwiYXBwZW5kIiwiYXR0YWNoQ2xpY2tFdmVudCIsInNlbGVjdG9yIiwib2JzZXJ2YXRpb24iLCJib2R5IiwiY2xvc2VGbG9hdGluZ0dyYXBoIiwib3BlbkZsb2F0aW5nR3JhcGgiLCJvcGVuUG9wdXAiLCJ1c2VFZmZlY3QiLCJtYXJrZXJMb2NhdGlvbiIsIkwiLCJjcmVhdGVCdWJibGVQb2ludCIsImhvdmVyZWQiLCJkZXZpY2Vfc3RhdHVzIiwiZm9jdXNlZCIsIm9ic2VydmF0aW9ucyIsImZpbHRlciIsInBvaW50X2lkIiwiRnJhZ21lbnQiLCJleHBvcnRzIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL1dpZGdldHMvTWFwL2V2ZW50cy9Qb2ludE9mRXZlbnQudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCwgeyB1c2VFZmZlY3QgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBjcmVhdGVCdWJibGVQb2ludCwgcG9wdXBDb250ZW50IH0gZnJvbSAnLi4vcG9pbnRzL1BvaW50VXRpbHMnO1xuaW1wb3J0IFJlYWN0RE9NIGZyb20gJ3JlYWN0LWRvbSc7XG5pbXBvcnQgVGltZUZvcm1hdCBmcm9tICcuLi8uLi8uLi91dGlsaXRpZXMvVGltZUZvcm1hdCc7XG5pbXBvcnQgU2VjdG9yIGZyb20gJy4uLy4uLy4uL2NvbXBvbmVudHMvU2VjdG9yJztcbmltcG9ydCAkIGZyb20gJ2pxdWVyeSc7XG5pbXBvcnQge1xuICBjbG9zZUZsb2F0aW5nR3JhcGgsXG4gIG9wZW5GbG9hdGluZ0dyYXBoLFxufSBmcm9tICcuLi8uLi8uLi9zdG9yZS9nbG9iYWwvYWN0aW9ucyc7XG5pbXBvcnQgTCwgeyBMYXRMbmdUdXBsZSB9IGZyb20gJ2xlYWZsZXQnO1xuaW1wb3J0IHsgSVBvaW50IH0gZnJvbSAnLi4vLi4vLi4vc3RvcmUvcG9pbnRzL21vZGVscy9JUG9pbnQnO1xuaW1wb3J0IHsgSUV2ZW50IH0gZnJvbSAnLi4vLi4vLi4vc3RvcmUvZXZlbnRzL21vZGVscy9JRXZlbnQnO1xuaW1wb3J0IHsgdXNlRGlzcGF0Y2gsIHVzZVNlbGVjdG9yIH0gZnJvbSAncmVhY3QtcmVkdXgnO1xuXG50eXBlIElQcm9wcyA9IHtcbiAgbWFwOiBhbnk7XG4gIGxheWVyR3JvdXA6IEwuTGF5ZXJHcm91cDtcbiAgcG9pbnQ6IElQb2ludDtcbiAgZXZlbnQ6IElFdmVudDtcbn07XG5cbmV4cG9ydCBjb25zdCBQb2ludE9mRXZlbnQ6IFJlYWN0LkZDPElQcm9wcz4gPSAoe1xuICBtYXAsXG4gIGxheWVyR3JvdXAsXG4gIHBvaW50LFxuICBldmVudCxcbn0pID0+IHtcbiAgY29uc3QgZGlzcGF0Y2ggPSB1c2VEaXNwYXRjaCgpO1xuICBjb25zdCB7IGZsb3dfcmF0ZV91bml0OiBmbG93UmF0ZVVuaXQgfSA9IHVzZVNlbGVjdG9yKFxuICAgIChzdGF0ZTogYW55KSA9PiBzdGF0ZS5wZXJtaXNzaW9ucy51c2VyX2luZm8sXG4gICk7XG5cbiAgY29uc3QgYmluZFBvcHVwVG9Qb2ludCA9IChvYnM6IGFueSA9IG51bGwpID0+IHtcbiAgICBsZXQgbGF5ZXJzID0gbWFwLl9sYXllcnM7XG4gICAgZm9yIChjb25zdCBwcm9wZXJ0eSBpbiBsYXllcnMpIHtcbiAgICAgIGlmIChcbiAgICAgICAgWydQb2ludCcsICdPYnNlcnZhdGlvbiddLmluY2x1ZGVzKGxheWVyc1twcm9wZXJ0eV0ua2FuZG9fb2JqZWN0KSAmJlxuICAgICAgICBsYXllcnNbcHJvcGVydHldLmthbmRvX29iamVjdF9pZCA9PT0gcG9pbnQuaWRcbiAgICAgICkge1xuICAgICAgICBsYXllcnNbcHJvcGVydHldLmJpbmRQb3B1cChwb3B1cENvbnRlbnQob2JzLCBwb2ludCksIHtcbiAgICAgICAgICBtaW5XaWR0aDogMjAwLFxuICAgICAgICB9KTtcbiAgICAgICAgbGF5ZXJzW3Byb3BlcnR5XS5vbigncG9wdXBvcGVuJywgZnVuY3Rpb24gKGU6IGFueSkge1xuICAgICAgICAgIGxldCBmaXJzdFNlZW4gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICAgICAgICBsZXQgbGFzdFNlZW4gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICAgICAgICBsZXQgc2VjdG9yID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG5cbiAgICAgICAgICBpZiAob2JzICE9PSBudWxsKSB7XG4gICAgICAgICAgICBSZWFjdERPTS5yZW5kZXIoXG4gICAgICAgICAgICAgIDxUaW1lRm9ybWF0XG4gICAgICAgICAgICAgICAgdGltZXN0YW1wPXtvYnMuc3RhcnRfdGltZX1cbiAgICAgICAgICAgICAgICB0aW1lX3pvbmU9e29icy50aW1lX3pvbmV9XG4gICAgICAgICAgICAgIC8+LFxuICAgICAgICAgICAgICBmaXJzdFNlZW4sXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgUmVhY3RET00ucmVuZGVyKFxuICAgICAgICAgICAgICA8VGltZUZvcm1hdFxuICAgICAgICAgICAgICAgIHRpbWVzdGFtcD17b2JzLmxhc3Rfc2Vlbl90aW1lfVxuICAgICAgICAgICAgICAgIHRpbWVfem9uZT17b2JzLnRpbWVfem9uZX1cbiAgICAgICAgICAgICAgLz4sXG4gICAgICAgICAgICAgIGxhc3RTZWVuLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgUmVhY3RET00ucmVuZGVyKFxuICAgICAgICAgICAgICA8U2VjdG9yXG4gICAgICAgICAgICAgICAgc2VjdG9yTmFtZT17cG9pbnQuZ3JvdXAuc2VjdG9yX25hbWV9XG4gICAgICAgICAgICAgICAgc2VjdG9ySWNvbk5hbWU9e3BvaW50Lmdyb3VwLnNlY3Rvcl9pY29uX25hbWV9XG4gICAgICAgICAgICAgICAgd2lkdGg9XCIzN1wiXG4gICAgICAgICAgICAgIC8+LFxuICAgICAgICAgICAgICBzZWN0b3IsXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgJCgnI2ZpcnN0LXNlZW4tcG9wdXAnKS5hcHBlbmQoZmlyc3RTZWVuKTtcbiAgICAgICAgICAgICQoJyNsYXN0LXNlZW4tcG9wdXAnKS5hcHBlbmQobGFzdFNlZW4pO1xuICAgICAgICAgICAgJCgnI3NlY3RvcicpLmFwcGVuZChzZWN0b3IpO1xuICAgICAgICAgIH0sIDIwMCk7XG5cbiAgICAgICAgICBsZXQgYXR0YWNoQ2xpY2tFdmVudCA9IChzZWxlY3Rvcjogc3RyaW5nLCBvYnNlcnZhdGlvbjogYW55KSA9PiB7XG4gICAgICAgICAgICAkKGRvY3VtZW50LmJvZHkpLm9uKCdjbGljaycsIHNlbGVjdG9yLCAoKSA9PiB7XG4gICAgICAgICAgICAgIGRpc3BhdGNoKGNsb3NlRmxvYXRpbmdHcmFwaCgpKTtcbiAgICAgICAgICAgICAgZGlzcGF0Y2gob3BlbkZsb2F0aW5nR3JhcGgodHJ1ZSwgb2JzZXJ2YXRpb24sIHBvaW50KSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9O1xuXG4gICAgICAgICAgaWYgKG9icyAhPT0gbnVsbCkge1xuICAgICAgICAgICAgYXR0YWNoQ2xpY2tFdmVudCgnLnBvcHVwLWdyYXBoLWljb24tJyArIG9icy5pZCwgb2JzKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgYXR0YWNoQ2xpY2tFdmVudCgnLnBvcHVwLWdyYXBoLWljb24tJyArIHBvaW50LmlkLCBudWxsKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICBsYXllcnNbcHJvcGVydHldLm9uKCdjbGljaycsICgpID0+IHtcbiAgICAgICAgICBsYXllcnNbcHJvcGVydHldLm9wZW5Qb3B1cCgpO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH07XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAvLyBpZiAoaXNDb2xsZWN0b3JVbm1vbml0b3JlZChwb2ludCkpIHJldHVybjtcblxuICAgIGxldCBtYXJrZXJMb2NhdGlvbjogTGF0TG5nVHVwbGUgPSBbcG9pbnRbJ2xhdGl0dWRlJ10sIHBvaW50Wydsb25naXR1ZGUnXV07XG4gICAgbGV0IGxheWVyR3JvdXAgPSBMLmxheWVyR3JvdXAoKTtcblxuICAgIGNyZWF0ZUJ1YmJsZVBvaW50KFxuICAgICAgbWFya2VyTG9jYXRpb24sXG4gICAgICBwb2ludCxcbiAgICAgIG1hcCxcbiAgICAgIGV2ZW50LmhvdmVyZWQsXG4gICAgICBsYXllckdyb3VwLFxuICAgICAgZmxvd1JhdGVVbml0LFxuICAgICk7XG5cbiAgICBpZiAocG9pbnQuZGV2aWNlX3N0YXR1cyAhPT0gJ3JlZ3VsYXInICYmIGV2ZW50LmZvY3VzZWQpIHtcbiAgICAgIGxldCBvYnMgPSBldmVudC5vYnNlcnZhdGlvbnMuZmlsdGVyKFxuICAgICAgICAob2JzKSA9PiBvYnMucG9pbnRfaWQgPT09IHBvaW50LmlkLFxuICAgICAgKVswXTtcbiAgICAgIGJpbmRQb3B1cFRvUG9pbnQob2JzKTtcbiAgICB9XG5cbiAgICAvLyBpZiAoZXZlbnQuZm9jdXNlZClcbiAgICAvLyAgIGNyZWF0ZVNhbXBsaW5nSWNvbnMoXG4gICAgLy8gICAgIG1hcmtlckxvY2F0aW9uLFxuICAgIC8vICAgICBldmVudCxcbiAgICAvLyAgICAgcG9pbnQsXG4gICAgLy8gICAgIG1hcCxcbiAgICAvLyAgICAgZXZlbnQuaG92ZXJlZCxcbiAgICAvLyAgICAgbGF5ZXJHcm91cCxcbiAgICAvLyAgICk7XG4gICAgLy8gbGV0IGhhc1ByaW1hcnlJY29uID0gbWF0Y2hJY29uVG9Qb2ludChwb2ludCwgZXZlbnQpICE9PSBudWxsO1xuXG4gICAgLy8gaWYgKHBvaW50SXNPYnNlcnZhdGlvbihldmVudCwgcG9pbnQpICYmIGV2ZW50LmZvY3VzZWQpIHtcbiAgICAvLyAgIGNyZWF0ZU9ic2VydmF0aW9uSWNvblBvaW50KFxuICAgIC8vICAgICBtYXJrZXJMb2NhdGlvbixcbiAgICAvLyAgICAgaGFzUHJpbWFyeUljb24sXG4gICAgLy8gICAgIG1hcCxcbiAgICAvLyAgICAgcG9pbnQsXG4gICAgLy8gICAgIGV2ZW50LFxuICAgIC8vICAgICBldmVudC5ob3ZlcmVkLFxuICAgIC8vICAgICBsYXllckdyb3VwLFxuICAgIC8vICAgKTtcbiAgICAvLyB9XG4gICAgLy8gbGF5ZXJHcm91cC5hZGRUbyhtYXApO1xuXG4gICAgLy8gaWNvblpvb21Db250cm9sKG1hcCk7XG4gICAgLy8gaWYgKGV2ZW50LmhvdmVyZWQpIHtcbiAgICAvLyAgIHJldHVybiBmdW5jdGlvbiBjbGVhbnVwKCkge1xuICAgIC8vICAgICAvLyBVTkJJTkQgUE9QVVBcbiAgICAvLyAgICAgcmVtb3ZlRnJvbU1hcChtYXAsIHBvaW50LCAnT2JzZXJ2YXRpb25Ib3ZlcmVkJyk7XG4gICAgLy8gICAgIHJlbW92ZUZyb21NYXAobWFwLCBwb2ludCwgJ1BvaW50SG92ZXJlZCcpO1xuICAgIC8vICAgICByZW1vdmVGcm9tTWFwKG1hcCwgcG9pbnQsICdTYW1wbGluZ0hvdmVyZWQnKTtcbiAgICAvLyAgICAgcmVtb3ZlRnJvbU1hcChtYXAsIHBvaW50LCAnSWNvbk51bWJlckhvdmVyZWQnKTtcbiAgICAvLyAgIH07XG4gICAgLy8gfSBlbHNlIHtcbiAgICAvLyAgIHJldHVybiBmdW5jdGlvbiBjbGVhbnVwKCkge1xuICAgIC8vICAgICAvLyBVTkJJTkQgUE9QVVBcbiAgICAvLyAgICAgcmVtb3ZlRnJvbU1hcChtYXAsIHBvaW50LCAnT2JzZXJ2YXRpb24nKTtcbiAgICAvLyAgICAgcmVtb3ZlRnJvbU1hcChtYXAsIHBvaW50LCAnUG9pbnQnKTtcbiAgICAvLyAgICAgcmVtb3ZlRnJvbU1hcChtYXAsIHBvaW50LCAnU2FtcGxpbmcnKTtcbiAgICAvLyAgICAgcmVtb3ZlRnJvbU1hcChtYXAsIHBvaW50LCAnSWNvbk51bWJlcicpO1xuICAgIC8vICAgfTtcbiAgICAvLyB9XG4gIH0sIFtldmVudCwgZXZlbnQuZm9jdXNlZF0pO1xuXG4gIHJldHVybiA8PjwvPjtcbn07XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQUEsSUFBQUEsTUFBQSxHQUFBQyx1QkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsV0FBQSxHQUFBRCxPQUFBO0FBQ0EsSUFBQUUsU0FBQSxHQUFBQyxzQkFBQSxDQUFBSCxPQUFBO0FBQ0EsSUFBQUksV0FBQSxHQUFBRCxzQkFBQSxDQUFBSCxPQUFBO0FBQ0EsSUFBQUssT0FBQSxHQUFBRixzQkFBQSxDQUFBSCxPQUFBO0FBQ0EsSUFBQU0sT0FBQSxHQUFBSCxzQkFBQSxDQUFBSCxPQUFBO0FBQ0EsSUFBQU8sUUFBQSxHQUFBUCxPQUFBO0FBSUEsSUFBQVEsUUFBQSxHQUFBTCxzQkFBQSxDQUFBSCxPQUFBO0FBR0EsSUFBQVMsV0FBQSxHQUFBVCxPQUFBO0FBQXVELFNBQUFVLHlCQUFBQyxXQUFBLGVBQUFDLE9BQUEsa0NBQUFDLGlCQUFBLE9BQUFELE9BQUEsUUFBQUUsZ0JBQUEsT0FBQUYsT0FBQSxZQUFBRix3QkFBQSxZQUFBQSx5QkFBQUMsV0FBQSxXQUFBQSxXQUFBLEdBQUFHLGdCQUFBLEdBQUFELGlCQUFBLEtBQUFGLFdBQUE7QUFBQSxTQUFBWix3QkFBQWdCLEdBQUEsRUFBQUosV0FBQSxTQUFBQSxXQUFBLElBQUFJLEdBQUEsSUFBQUEsR0FBQSxDQUFBQyxVQUFBLFdBQUFELEdBQUEsUUFBQUEsR0FBQSxhQUFBRSxPQUFBLENBQUFGLEdBQUEseUJBQUFBLEdBQUEsNEJBQUFHLE9BQUEsRUFBQUgsR0FBQSxVQUFBSSxLQUFBLEdBQUFULHdCQUFBLENBQUFDLFdBQUEsT0FBQVEsS0FBQSxJQUFBQSxLQUFBLENBQUFDLEdBQUEsQ0FBQUwsR0FBQSxZQUFBSSxLQUFBLENBQUFFLEdBQUEsQ0FBQU4sR0FBQSxT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
123
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfUG9pbnRVdGlscyIsIl9yZWFjdERvbSIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfVGltZUZvcm1hdCIsIl9TZWN0b3IiLCJfanF1ZXJ5IiwiX2FjdGlvbnMiLCJfbGVhZmxldCIsIl9yZWFjdFJlZHV4IiwiX3VzZVJlbW92ZUV4aXN0aW5nTGF5ZXJzIiwiX0V2ZW50VXRpbHMiLCJfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUiLCJub2RlSW50ZXJvcCIsIldlYWtNYXAiLCJjYWNoZUJhYmVsSW50ZXJvcCIsImNhY2hlTm9kZUludGVyb3AiLCJvYmoiLCJfX2VzTW9kdWxlIiwiX3R5cGVvZiIsImRlZmF1bHQiLCJjYWNoZSIsImhhcyIsImdldCIsIm5ld09iaiIsImhhc1Byb3BlcnR5RGVzY3JpcHRvciIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwia2V5IiwicHJvdG90eXBlIiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiZGVzYyIsInNldCIsIlBvaW50T2ZFdmVudCIsIl9yZWYiLCJtYXAiLCJwb2ludCIsImV2ZW50IiwiZGlzcGF0Y2giLCJ1c2VEaXNwYXRjaCIsIl91c2VTZWxlY3RvciIsInVzZVNlbGVjdG9yIiwic3RhdGUiLCJwZXJtaXNzaW9ucyIsInVzZXJfaW5mbyIsImZsb3dSYXRlVW5pdCIsImZsb3dfcmF0ZV91bml0IiwiYmluZFBvcHVwVG9Qb2ludCIsIm9icyIsImFyZ3VtZW50cyIsImxlbmd0aCIsInVuZGVmaW5lZCIsImxheWVycyIsIl9sYXllcnMiLCJfbG9vcCIsInByb3BlcnR5IiwiaW5jbHVkZXMiLCJrYW5kb19vYmplY3QiLCJrYW5kb19vYmplY3RfaWQiLCJpZCIsImJpbmRQb3B1cCIsInBvcHVwQ29udGVudCIsIm1pbldpZHRoIiwib24iLCJlIiwiZmlyc3RTZWVuIiwiZG9jdW1lbnQiLCJjcmVhdGVFbGVtZW50IiwibGFzdFNlZW4iLCJzZWN0b3IiLCJSZWFjdERPTSIsInJlbmRlciIsInRpbWVzdGFtcCIsInN0YXJ0X3RpbWUiLCJ0aW1lX3pvbmUiLCJsYXN0X3NlZW5fdGltZSIsInNlY3Rvck5hbWUiLCJncm91cCIsInNlY3Rvcl9uYW1lIiwic2VjdG9ySWNvbk5hbWUiLCJzZWN0b3JfaWNvbl9uYW1lIiwid2lkdGgiLCJzZXRUaW1lb3V0IiwiJCIsImFwcGVuZCIsImF0dGFjaENsaWNrRXZlbnQiLCJzZWxlY3RvciIsIm9ic2VydmF0aW9uIiwiYm9keSIsImNsb3NlRmxvYXRpbmdHcmFwaCIsIm9wZW5GbG9hdGluZ0dyYXBoIiwib3BlblBvcHVwIiwidXNlRWZmZWN0IiwiaXNDb2xsZWN0b3JVbm1vbml0b3JlZCIsIm1hcmtlckxvY2F0aW9uIiwibGF5ZXJHcm91cCIsIkwiLCJjcmVhdGVCdWJibGVQb2ludCIsImhvdmVyZWQiLCJmb2N1c2VkIiwiY3JlYXRlU2FtcGxpbmdJY29ucyIsImhhc1ByaW1hcnlJY29uIiwibWF0Y2hJY29uVG9Qb2ludCIsInBvaW50SXNPYnNlcnZhdGlvbiIsImNyZWF0ZU9ic2VydmF0aW9uSWNvblBvaW50IiwiYWRkVG8iLCJvYnNlcnZhdGlvbnMiLCJmaWx0ZXIiLCJwb2ludF9pZCIsImNsZWFudXAiLCJyZW1vdmVGcm9tTWFwIiwiRnJhZ21lbnQiLCJleHBvcnRzIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL1dpZGdldHMvTWFwL2V2ZW50cy9Qb2ludE9mRXZlbnQudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCwgeyB1c2VFZmZlY3QgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQge1xuICBjcmVhdGVCdWJibGVQb2ludCxcbiAgY3JlYXRlT2JzZXJ2YXRpb25JY29uUG9pbnQsXG4gIGNyZWF0ZVNhbXBsaW5nSWNvbnMsXG4gIG1hdGNoSWNvblRvUG9pbnQsXG4gIHBvcHVwQ29udGVudCxcbn0gZnJvbSAnLi4vcG9pbnRzL1BvaW50VXRpbHMnO1xuaW1wb3J0IFJlYWN0RE9NIGZyb20gJ3JlYWN0LWRvbSc7XG5pbXBvcnQgVGltZUZvcm1hdCBmcm9tICcuLi8uLi8uLi91dGlsaXRpZXMvVGltZUZvcm1hdCc7XG5pbXBvcnQgU2VjdG9yIGZyb20gJy4uLy4uLy4uL2NvbXBvbmVudHMvU2VjdG9yJztcbmltcG9ydCAkIGZyb20gJ2pxdWVyeSc7XG5pbXBvcnQge1xuICBjbG9zZUZsb2F0aW5nR3JhcGgsXG4gIG9wZW5GbG9hdGluZ0dyYXBoLFxufSBmcm9tICcuLi8uLi8uLi9zdG9yZS9nbG9iYWwvYWN0aW9ucyc7XG5pbXBvcnQgTCwgeyBMYXRMbmdUdXBsZSB9IGZyb20gJ2xlYWZsZXQnO1xuaW1wb3J0IHsgSVBvaW50IH0gZnJvbSAnLi4vLi4vLi4vc3RvcmUvcG9pbnRzL21vZGVscy9JUG9pbnQnO1xuaW1wb3J0IHsgSUV2ZW50IH0gZnJvbSAnLi4vLi4vLi4vc3RvcmUvZXZlbnRzL21vZGVscy9JRXZlbnQnO1xuaW1wb3J0IHsgdXNlRGlzcGF0Y2gsIHVzZVNlbGVjdG9yIH0gZnJvbSAncmVhY3QtcmVkdXgnO1xuaW1wb3J0IHsgcmVtb3ZlRnJvbU1hcCB9IGZyb20gJy4uLy4uLy4uL2hvb2tzL3VzZVJlbW92ZUV4aXN0aW5nTGF5ZXJzJztcbmltcG9ydCB7IGlzQ29sbGVjdG9yVW5tb25pdG9yZWQsIHBvaW50SXNPYnNlcnZhdGlvbiB9IGZyb20gJy4vRXZlbnRVdGlscyc7XG5cbnR5cGUgSVByb3BzID0ge1xuICBtYXA6IGFueTtcbiAgcG9pbnQ6IElQb2ludDtcbiAgZXZlbnQ6IElFdmVudDtcbn07XG5cbmV4cG9ydCBjb25zdCBQb2ludE9mRXZlbnQ6IFJlYWN0LkZDPElQcm9wcz4gPSAoeyBtYXAsIHBvaW50LCBldmVudCB9KSA9PiB7XG4gIGNvbnN0IGRpc3BhdGNoID0gdXNlRGlzcGF0Y2goKTtcbiAgY29uc3QgeyBmbG93X3JhdGVfdW5pdDogZmxvd1JhdGVVbml0IH0gPSB1c2VTZWxlY3RvcihcbiAgICAoc3RhdGU6IGFueSkgPT4gc3RhdGUucGVybWlzc2lvbnMudXNlcl9pbmZvLFxuICApO1xuXG4gIGNvbnN0IGJpbmRQb3B1cFRvUG9pbnQgPSAob2JzOiBhbnkgPSBudWxsKSA9PiB7XG4gICAgbGV0IGxheWVycyA9IG1hcC5fbGF5ZXJzO1xuICAgIGZvciAoY29uc3QgcHJvcGVydHkgaW4gbGF5ZXJzKSB7XG4gICAgICBpZiAoXG4gICAgICAgIFsnUG9pbnQnLCAnT2JzZXJ2YXRpb24nXS5pbmNsdWRlcyhsYXllcnNbcHJvcGVydHldLmthbmRvX29iamVjdCkgJiZcbiAgICAgICAgbGF5ZXJzW3Byb3BlcnR5XS5rYW5kb19vYmplY3RfaWQgPT09IHBvaW50LmlkXG4gICAgICApIHtcbiAgICAgICAgbGF5ZXJzW3Byb3BlcnR5XS5iaW5kUG9wdXAocG9wdXBDb250ZW50KG9icywgcG9pbnQpLCB7XG4gICAgICAgICAgbWluV2lkdGg6IDIwMCxcbiAgICAgICAgfSk7XG4gICAgICAgIGxheWVyc1twcm9wZXJ0eV0ub24oJ3BvcHVwb3BlbicsIGZ1bmN0aW9uIChlOiBhbnkpIHtcbiAgICAgICAgICBsZXQgZmlyc3RTZWVuID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgICAgICAgbGV0IGxhc3RTZWVuID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgICAgICAgbGV0IHNlY3RvciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuXG4gICAgICAgICAgaWYgKG9icyAhPT0gbnVsbCkge1xuICAgICAgICAgICAgUmVhY3RET00ucmVuZGVyKFxuICAgICAgICAgICAgICA8VGltZUZvcm1hdFxuICAgICAgICAgICAgICAgIHRpbWVzdGFtcD17b2JzLnN0YXJ0X3RpbWV9XG4gICAgICAgICAgICAgICAgdGltZV96b25lPXtvYnMudGltZV96b25lfVxuICAgICAgICAgICAgICAvPixcbiAgICAgICAgICAgICAgZmlyc3RTZWVuLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIFJlYWN0RE9NLnJlbmRlcihcbiAgICAgICAgICAgICAgPFRpbWVGb3JtYXRcbiAgICAgICAgICAgICAgICB0aW1lc3RhbXA9e29icy5sYXN0X3NlZW5fdGltZX1cbiAgICAgICAgICAgICAgICB0aW1lX3pvbmU9e29icy50aW1lX3pvbmV9XG4gICAgICAgICAgICAgIC8+LFxuICAgICAgICAgICAgICBsYXN0U2VlbixcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIFJlYWN0RE9NLnJlbmRlcihcbiAgICAgICAgICAgICAgPFNlY3RvclxuICAgICAgICAgICAgICAgIHNlY3Rvck5hbWU9e3BvaW50Lmdyb3VwLnNlY3Rvcl9uYW1lfVxuICAgICAgICAgICAgICAgIHNlY3Rvckljb25OYW1lPXtwb2ludC5ncm91cC5zZWN0b3JfaWNvbl9uYW1lfVxuICAgICAgICAgICAgICAgIHdpZHRoPVwiMzdcIlxuICAgICAgICAgICAgICAvPixcbiAgICAgICAgICAgICAgc2VjdG9yLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICQoJyNmaXJzdC1zZWVuLXBvcHVwJykuYXBwZW5kKGZpcnN0U2Vlbik7XG4gICAgICAgICAgICAkKCcjbGFzdC1zZWVuLXBvcHVwJykuYXBwZW5kKGxhc3RTZWVuKTtcbiAgICAgICAgICAgICQoJyNzZWN0b3InKS5hcHBlbmQoc2VjdG9yKTtcbiAgICAgICAgICB9LCAyMDApO1xuXG4gICAgICAgICAgbGV0IGF0dGFjaENsaWNrRXZlbnQgPSAoc2VsZWN0b3I6IHN0cmluZywgb2JzZXJ2YXRpb246IGFueSkgPT4ge1xuICAgICAgICAgICAgJChkb2N1bWVudC5ib2R5KS5vbignY2xpY2snLCBzZWxlY3RvciwgKCkgPT4ge1xuICAgICAgICAgICAgICBkaXNwYXRjaChjbG9zZUZsb2F0aW5nR3JhcGgoKSk7XG4gICAgICAgICAgICAgIGRpc3BhdGNoKG9wZW5GbG9hdGluZ0dyYXBoKHRydWUsIG9ic2VydmF0aW9uLCBwb2ludCkpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfTtcblxuICAgICAgICAgIGlmIChvYnMgIT09IG51bGwpIHtcbiAgICAgICAgICAgIGF0dGFjaENsaWNrRXZlbnQoJy5wb3B1cC1ncmFwaC1pY29uLScgKyBvYnMuaWQsIG9icyk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGF0dGFjaENsaWNrRXZlbnQoJy5wb3B1cC1ncmFwaC1pY29uLScgKyBwb2ludC5pZCwgbnVsbCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgbGF5ZXJzW3Byb3BlcnR5XS5vbignY2xpY2snLCAoKSA9PiB7XG4gICAgICAgICAgbGF5ZXJzW3Byb3BlcnR5XS5vcGVuUG9wdXAoKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICB9O1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGlzQ29sbGVjdG9yVW5tb25pdG9yZWQocG9pbnQpKSByZXR1cm47XG5cbiAgICBsZXQgbWFya2VyTG9jYXRpb246IExhdExuZ1R1cGxlID0gW3BvaW50WydsYXRpdHVkZSddLCBwb2ludFsnbG9uZ2l0dWRlJ11dO1xuICAgIGxldCBsYXllckdyb3VwID0gTC5sYXllckdyb3VwKCk7XG5cbiAgICBjcmVhdGVCdWJibGVQb2ludChcbiAgICAgIG1hcmtlckxvY2F0aW9uLFxuICAgICAgcG9pbnQsXG4gICAgICBtYXAsXG4gICAgICBldmVudC5ob3ZlcmVkLFxuICAgICAgbGF5ZXJHcm91cCxcbiAgICAgIGZsb3dSYXRlVW5pdCxcbiAgICApO1xuICAgIGlmIChldmVudC5mb2N1c2VkKVxuICAgICAgY3JlYXRlU2FtcGxpbmdJY29ucyhcbiAgICAgICAgbWFya2VyTG9jYXRpb24sXG4gICAgICAgIGV2ZW50LFxuICAgICAgICBwb2ludCxcbiAgICAgICAgbWFwLFxuICAgICAgICBldmVudC5ob3ZlcmVkLFxuICAgICAgICBsYXllckdyb3VwLFxuICAgICAgKTtcbiAgICBsZXQgaGFzUHJpbWFyeUljb24gPSBtYXRjaEljb25Ub1BvaW50KHBvaW50LCBldmVudCkgIT09IG51bGw7XG5cbiAgICBpZiAocG9pbnRJc09ic2VydmF0aW9uKGV2ZW50LCBwb2ludCkgJiYgZXZlbnQuZm9jdXNlZCkge1xuICAgICAgY3JlYXRlT2JzZXJ2YXRpb25JY29uUG9pbnQoXG4gICAgICAgIG1hcmtlckxvY2F0aW9uLFxuICAgICAgICBoYXNQcmltYXJ5SWNvbixcbiAgICAgICAgbWFwLFxuICAgICAgICBwb2ludCxcbiAgICAgICAgZXZlbnQsXG4gICAgICAgIGV2ZW50LmhvdmVyZWQsXG4gICAgICAgIGxheWVyR3JvdXAsXG4gICAgICApO1xuICAgIH1cbiAgICBsYXllckdyb3VwLmFkZFRvKG1hcCk7XG5cbiAgICBsZXQgb2JzID0gZXZlbnQub2JzZXJ2YXRpb25zLmZpbHRlcigob2JzKSA9PiBvYnMucG9pbnRfaWQgPT09IHBvaW50LmlkKVswXTtcbiAgICBpZiAob2JzICE9PSB1bmRlZmluZWQgJiYgZXZlbnQuZm9jdXNlZCkgYmluZFBvcHVwVG9Qb2ludChvYnMpO1xuXG4gICAgLy8gaWNvblpvb21Db250cm9sKG1hcCk7XG4gICAgaWYgKGV2ZW50LmhvdmVyZWQpIHtcbiAgICAgIHJldHVybiBmdW5jdGlvbiBjbGVhbnVwKCkge1xuICAgICAgICAvLyBVTkJJTkQgUE9QVVBcbiAgICAgICAgcmVtb3ZlRnJvbU1hcChtYXAsIHBvaW50LCAnT2JzZXJ2YXRpb25Ib3ZlcmVkJyk7XG4gICAgICAgIHJlbW92ZUZyb21NYXAobWFwLCBwb2ludCwgJ1BvaW50SG92ZXJlZCcpO1xuICAgICAgICByZW1vdmVGcm9tTWFwKG1hcCwgcG9pbnQsICdTYW1wbGluZ0hvdmVyZWQnKTtcbiAgICAgICAgcmVtb3ZlRnJvbU1hcChtYXAsIHBvaW50LCAnSWNvbk51bWJlckhvdmVyZWQnKTtcbiAgICAgIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBmdW5jdGlvbiBjbGVhbnVwKCkge1xuICAgICAgICAvLyBVTkJJTkQgUE9QVVBcbiAgICAgICAgcmVtb3ZlRnJvbU1hcChtYXAsIHBvaW50LCAnT2JzZXJ2YXRpb24nKTtcbiAgICAgICAgcmVtb3ZlRnJvbU1hcChtYXAsIHBvaW50LCAnUG9pbnQnKTtcbiAgICAgICAgcmVtb3ZlRnJvbU1hcChtYXAsIHBvaW50LCAnU2FtcGxpbmcnKTtcbiAgICAgICAgcmVtb3ZlRnJvbU1hcChtYXAsIHBvaW50LCAnSWNvbk51bWJlcicpO1xuICAgICAgfTtcbiAgICB9XG4gIH0sIFtldmVudCwgZXZlbnQuZm9jdXNlZF0pO1xuXG4gIHJldHVybiA8PjwvPjtcbn07XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQUEsSUFBQUEsTUFBQSxHQUFBQyx1QkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsV0FBQSxHQUFBRCxPQUFBO0FBT0EsSUFBQUUsU0FBQSxHQUFBQyxzQkFBQSxDQUFBSCxPQUFBO0FBQ0EsSUFBQUksV0FBQSxHQUFBRCxzQkFBQSxDQUFBSCxPQUFBO0FBQ0EsSUFBQUssT0FBQSxHQUFBRixzQkFBQSxDQUFBSCxPQUFBO0FBQ0EsSUFBQU0sT0FBQSxHQUFBSCxzQkFBQSxDQUFBSCxPQUFBO0FBQ0EsSUFBQU8sUUFBQSxHQUFBUCxPQUFBO0FBSUEsSUFBQVEsUUFBQSxHQUFBTCxzQkFBQSxDQUFBSCxPQUFBO0FBR0EsSUFBQVMsV0FBQSxHQUFBVCxPQUFBO0FBQ0EsSUFBQVUsd0JBQUEsR0FBQVYsT0FBQTtBQUNBLElBQUFXLFdBQUEsR0FBQVgsT0FBQTtBQUEwRSxTQUFBWSx5QkFBQUMsV0FBQSxlQUFBQyxPQUFBLGtDQUFBQyxpQkFBQSxPQUFBRCxPQUFBLFFBQUFFLGdCQUFBLE9BQUFGLE9BQUEsWUFBQUYsd0JBQUEsWUFBQUEseUJBQUFDLFdBQUEsV0FBQUEsV0FBQSxHQUFBRyxnQkFBQSxHQUFBRCxpQkFBQSxLQUFBRixXQUFBO0FBQUEsU0FBQWQsd0JBQUFrQixH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
@@ -1,6 +1,5 @@
1
1
  "use strict";
2
2
 
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
3
  var _typeof = require("@babel/runtime/helpers/typeof");
5
4
  Object.defineProperty(exports, "__esModule", {
6
5
  value: true
@@ -9,7 +8,6 @@ exports.PointsForSpecificEvent = void 0;
9
8
  var _react = _interopRequireWildcard(require("react"));
10
9
  var _EventUtils = require("./EventUtils");
11
10
  var _PointOfEvent = require("./PointOfEvent");
12
- var _leaflet = _interopRequireDefault(require("leaflet"));
13
11
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
14
12
  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; }
15
13
  var PointsForSpecificEvent = function PointsForSpecificEvent(_ref) {
@@ -17,11 +15,10 @@ var PointsForSpecificEvent = function PointsForSpecificEvent(_ref) {
17
15
  event = _ref.event,
18
16
  edges = _ref.edges,
19
17
  map = _ref.map;
20
- var layerGroup = _leaflet.default.layerGroup().addTo(map);
21
18
  var findPointsToDraw = function findPointsToDraw() {
22
- var relevantPoints = [];
23
- var relevantEdges = [];
24
19
  if (event.path.length !== 0) {
20
+ var relevantEdges = [];
21
+ var relevantPoints = [];
25
22
  (0, _EventUtils.findEdgesFromEventPathToDraw)(relevantEdges, event, edges);
26
23
  relevantEdges.forEach(function (edge) {
27
24
  var pointToDraw = points.find(function (p) {
@@ -35,6 +32,7 @@ var PointsForSpecificEvent = function PointsForSpecificEvent(_ref) {
35
32
  return p.id === relevantEdges[lastEdgeIndex].target_point_id;
36
33
  });
37
34
  if (lastPointOfHierarchy !== undefined && !relevantPoints.includes(lastPointOfHierarchy)) relevantPoints.push(lastPointOfHierarchy);
35
+ return relevantPoints;
38
36
  } else {
39
37
  var _relevantPoints = [];
40
38
  event.observations.forEach(function (obs) {
@@ -43,26 +41,13 @@ var PointsForSpecificEvent = function PointsForSpecificEvent(_ref) {
43
41
  });
44
42
  if (findPoint) _relevantPoints.push(findPoint);
45
43
  });
44
+ return _relevantPoints;
46
45
  }
47
-
48
- // Add upstream points that are not part of the event path but are part of its path
49
- var edge = relevantEdges[0];
50
- var upstreamEdges = (0, _EventUtils.getUpstreamEdges)(edge, edges);
51
- if (upstreamEdges.length > 0) {
52
- upstreamEdges.forEach(function (upstreamEdge) {
53
- var pointToDraw = points.find(function (p) {
54
- return p.part_of_monitored_path && p.id === upstreamEdge.source_point_id;
55
- });
56
- if (pointToDraw !== undefined) relevantPoints.push(pointToDraw);
57
- });
58
- }
59
- return relevantPoints;
60
46
  };
61
47
  (0, _react.useEffect)(function () {}, [event.focused, event.hovered]);
62
48
  return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, findPointsToDraw().map(function (point) {
63
49
  return /*#__PURE__*/_react.default.createElement(_PointOfEvent.PointOfEvent, {
64
50
  map: map,
65
- layerGroup: layerGroup,
66
51
  point: point,
67
52
  event: event,
68
53
  key: point.id
@@ -70,4 +55,4 @@ var PointsForSpecificEvent = function PointsForSpecificEvent(_ref) {
70
55
  }));
71
56
  };
72
57
  exports.PointsForSpecificEvent = PointsForSpecificEvent;
73
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfRXZlbnRVdGlscyIsIl9Qb2ludE9mRXZlbnQiLCJfbGVhZmxldCIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUiLCJub2RlSW50ZXJvcCIsIldlYWtNYXAiLCJjYWNoZUJhYmVsSW50ZXJvcCIsImNhY2hlTm9kZUludGVyb3AiLCJvYmoiLCJfX2VzTW9kdWxlIiwiX3R5cGVvZiIsImRlZmF1bHQiLCJjYWNoZSIsImhhcyIsImdldCIsIm5ld09iaiIsImhhc1Byb3BlcnR5RGVzY3JpcHRvciIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwia2V5IiwicHJvdG90eXBlIiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiZGVzYyIsInNldCIsIlBvaW50c0ZvclNwZWNpZmljRXZlbnQiLCJfcmVmIiwicG9pbnRzIiwiZXZlbnQiLCJlZGdlcyIsIm1hcCIsImxheWVyR3JvdXAiLCJMIiwiYWRkVG8iLCJmaW5kUG9pbnRzVG9EcmF3IiwicmVsZXZhbnRQb2ludHMiLCJyZWxldmFudEVkZ2VzIiwicGF0aCIsImxlbmd0aCIsImZpbmRFZGdlc0Zyb21FdmVudFBhdGhUb0RyYXciLCJmb3JFYWNoIiwiZWRnZSIsInBvaW50VG9EcmF3IiwiZmluZCIsInAiLCJwYXJ0X29mX21vbml0b3JlZF9wYXRoIiwiaWQiLCJzb3VyY2VfcG9pbnRfaWQiLCJ1bmRlZmluZWQiLCJwdXNoIiwibGFzdFBvaW50T2ZIaWVyYXJjaHkiLCJsYXN0RWRnZUluZGV4IiwidGFyZ2V0X3BvaW50X2lkIiwiaW5jbHVkZXMiLCJvYnNlcnZhdGlvbnMiLCJvYnMiLCJmaW5kUG9pbnQiLCJwb2ludF9pZCIsInVwc3RyZWFtRWRnZXMiLCJnZXRVcHN0cmVhbUVkZ2VzIiwidXBzdHJlYW1FZGdlIiwidXNlRWZmZWN0IiwiZm9jdXNlZCIsImhvdmVyZWQiLCJjcmVhdGVFbGVtZW50IiwiRnJhZ21lbnQiLCJwb2ludCIsIlBvaW50T2ZFdmVudCIsImV4cG9ydHMiXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvV2lkZ2V0cy9NYXAvZXZlbnRzL1BvaW50c0ZvclNwZWNpZmljRXZlbnQudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCwgeyB1c2VFZmZlY3QgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBJUG9pbnQgfSBmcm9tICcuLi8uLi8uLi9zdG9yZS9wb2ludHMvbW9kZWxzL0lQb2ludCc7XG5pbXBvcnQgeyBmaW5kRWRnZXNGcm9tRXZlbnRQYXRoVG9EcmF3LCBnZXRVcHN0cmVhbUVkZ2VzIH0gZnJvbSAnLi9FdmVudFV0aWxzJztcbmltcG9ydCB7IElFdmVudCB9IGZyb20gJy4uLy4uLy4uL3N0b3JlL2V2ZW50cy9tb2RlbHMvSUV2ZW50JztcbmltcG9ydCB7IElFZGdlIH0gZnJvbSAnLi4vLi4vLi4vc3RvcmUvZWRnZXMvbW9kZWxzL0lFZGdlJztcbmltcG9ydCB7IFBvaW50T2ZFdmVudCB9IGZyb20gJy4vUG9pbnRPZkV2ZW50JztcbmltcG9ydCBMIGZyb20gJ2xlYWZsZXQnO1xuXG50eXBlIElQcm9wcyA9IHtcbiAgcG9pbnRzOiBJUG9pbnRbXTtcbiAgZXZlbnQ6IElFdmVudDtcbiAgZWRnZXM6IElFZGdlW107XG4gIG1hcDogYW55O1xufTtcblxuZXhwb3J0IGNvbnN0IFBvaW50c0ZvclNwZWNpZmljRXZlbnQ6IFJlYWN0LkZDPElQcm9wcz4gPSAoe1xuICBwb2ludHMsXG4gIGV2ZW50LFxuICBlZGdlcyxcbiAgbWFwLFxufSkgPT4ge1xuICBjb25zdCBsYXllckdyb3VwID0gTC5sYXllckdyb3VwKCkuYWRkVG8obWFwKTtcblxuICBjb25zdCBmaW5kUG9pbnRzVG9EcmF3ID0gKCkgPT4ge1xuICAgIGxldCByZWxldmFudFBvaW50czogSVBvaW50W10gPSBbXTtcbiAgICBsZXQgcmVsZXZhbnRFZGdlczogSUVkZ2VbXSA9IFtdO1xuXG4gICAgaWYgKGV2ZW50LnBhdGgubGVuZ3RoICE9PSAwKSB7XG4gICAgICBmaW5kRWRnZXNGcm9tRXZlbnRQYXRoVG9EcmF3KHJlbGV2YW50RWRnZXMsIGV2ZW50LCBlZGdlcyk7XG5cbiAgICAgIHJlbGV2YW50RWRnZXMuZm9yRWFjaCgoZWRnZTogSUVkZ2UpID0+IHtcbiAgICAgICAgbGV0IHBvaW50VG9EcmF3ID0gcG9pbnRzLmZpbmQoXG4gICAgICAgICAgKHA6IElQb2ludCkgPT5cbiAgICAgICAgICAgIHAucGFydF9vZl9tb25pdG9yZWRfcGF0aCAmJiBwLmlkID09PSBlZGdlLnNvdXJjZV9wb2ludF9pZCxcbiAgICAgICAgKTtcbiAgICAgICAgaWYgKHBvaW50VG9EcmF3ICE9PSB1bmRlZmluZWQpIHJlbGV2YW50UG9pbnRzLnB1c2gocG9pbnRUb0RyYXcpO1xuICAgICAgfSk7XG5cbiAgICAgIGxldCBsYXN0UG9pbnRPZkhpZXJhcmNoeTogSVBvaW50IHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xuICAgICAgbGV0IGxhc3RFZGdlSW5kZXggPVxuICAgICAgICByZWxldmFudEVkZ2VzLmxlbmd0aCA9PT0gMSA/IDAgOiByZWxldmFudEVkZ2VzLmxlbmd0aCAtIDE7XG4gICAgICBpZiAocmVsZXZhbnRFZGdlcy5sZW5ndGggPj0gMSlcbiAgICAgICAgbGFzdFBvaW50T2ZIaWVyYXJjaHkgPSBwb2ludHMuZmluZChcbiAgICAgICAgICAocDogSVBvaW50KSA9PiBwLmlkID09PSByZWxldmFudEVkZ2VzW2xhc3RFZGdlSW5kZXhdLnRhcmdldF9wb2ludF9pZCxcbiAgICAgICAgKTtcblxuICAgICAgaWYgKFxuICAgICAgICBsYXN0UG9pbnRPZkhpZXJhcmNoeSAhPT0gdW5kZWZpbmVkICYmXG4gICAgICAgICFyZWxldmFudFBvaW50cy5pbmNsdWRlcyhsYXN0UG9pbnRPZkhpZXJhcmNoeSlcbiAgICAgIClcbiAgICAgICAgcmVsZXZhbnRQb2ludHMucHVzaChsYXN0UG9pbnRPZkhpZXJhcmNoeSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxldCByZWxldmFudFBvaW50czogSVBvaW50W10gPSBbXTtcbiAgICAgIGV2ZW50Lm9ic2VydmF0aW9ucy5mb3JFYWNoKChvYnMpID0+IHtcbiAgICAgICAgbGV0IGZpbmRQb2ludCA9IHBvaW50cy5maW5kKChwKSA9PiBwLmlkID09PSBvYnMucG9pbnRfaWQpO1xuICAgICAgICBpZiAoZmluZFBvaW50KSByZWxldmFudFBvaW50cy5wdXNoKGZpbmRQb2ludCk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICAvLyBBZGQgdXBzdHJlYW0gcG9pbnRzIHRoYXQgYXJlIG5vdCBwYXJ0IG9mIHRoZSBldmVudCBwYXRoIGJ1dCBhcmUgcGFydCBvZiBpdHMgcGF0aFxuICAgIGNvbnN0IGVkZ2U6IElFZGdlID0gcmVsZXZhbnRFZGdlc1swXTtcbiAgICBjb25zdCB1cHN0cmVhbUVkZ2VzID0gZ2V0VXBzdHJlYW1FZGdlcyhlZGdlLCBlZGdlcyk7XG4gICAgaWYgKHVwc3RyZWFtRWRnZXMubGVuZ3RoID4gMCkge1xuICAgICAgdXBzdHJlYW1FZGdlcy5mb3JFYWNoKCh1cHN0cmVhbUVkZ2U6IElFZGdlKSA9PiB7XG4gICAgICAgIGxldCBwb2ludFRvRHJhdyA9IHBvaW50cy5maW5kKFxuICAgICAgICAgIChwOiBJUG9pbnQpID0+XG4gICAgICAgICAgICBwLnBhcnRfb2ZfbW9uaXRvcmVkX3BhdGggJiYgcC5pZCA9PT0gdXBzdHJlYW1FZGdlLnNvdXJjZV9wb2ludF9pZCxcbiAgICAgICAgKTtcbiAgICAgICAgaWYgKHBvaW50VG9EcmF3ICE9PSB1bmRlZmluZWQpIHJlbGV2YW50UG9pbnRzLnB1c2gocG9pbnRUb0RyYXcpO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlbGV2YW50UG9pbnRzO1xuICB9O1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7fSwgW2V2ZW50LmZvY3VzZWQsIGV2ZW50LmhvdmVyZWRdKTtcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICB7ZmluZFBvaW50c1RvRHJhdygpLm1hcCgocG9pbnQ6IElQb2ludCkgPT4gKFxuICAgICAgICA8UG9pbnRPZkV2ZW50XG4gICAgICAgICAgbWFwPXttYXB9XG4gICAgICAgICAgbGF5ZXJHcm91cD17bGF5ZXJHcm91cH1cbiAgICAgICAgICBwb2ludD17cG9pbnR9XG4gICAgICAgICAgZXZlbnQ9e2V2ZW50fVxuICAgICAgICAgIGtleT17cG9pbnQuaWR9XG4gICAgICAgIC8+XG4gICAgICApKX1cbiAgICA8Lz5cbiAgKTtcbn07XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQUEsSUFBQUEsTUFBQSxHQUFBQyx1QkFBQSxDQUFBQyxPQUFBO0FBRUEsSUFBQUMsV0FBQSxHQUFBRCxPQUFBO0FBR0EsSUFBQUUsYUFBQSxHQUFBRixPQUFBO0FBQ0EsSUFBQUcsUUFBQSxHQUFBQyxzQkFBQSxDQUFBSixPQUFBO0FBQXdCLFNBQUFLLHlCQUFBQyxXQUFBLGVBQUFDLE9BQUEsa0NBQUFDLGlCQUFBLE9BQUFELE9BQUEsUUFBQUUsZ0JBQUEsT0FBQUYsT0FBQSxZQUFBRix3QkFBQSxZQUFBQSx5QkFBQUMsV0FBQSxXQUFBQSxXQUFBLEdBQUFHLGdCQUFBLEdBQUFELGlCQUFBLEtBQUFGLFdBQUE7QUFBQSxTQUFBUCx3QkFBQVcsR0FBQSxFQUFBSixXQUFBLFNBQUFBLFdBQUEsSUFBQUksR0FBQSxJQUFBQSxHQUFBLENBQUFDLFVBQUEsV0FBQUQsR0FBQSxRQUFBQSxHQUFBLGFBQUFFLE9BQUEsQ0FBQUYsR0FBQSx5QkFBQUEsR0FBQSw0QkFBQUcsT0FBQSxFQUFBSCxHQUFBLFVBQUFJLEtBQUEsR0FBQVQsd0JBQUEsQ0FBQUMsV0FBQSxPQUFBUSxLQUFBLElBQUFBLEtBQUEsQ0FBQUMsR0FBQSxDQUFBTCxHQUFBLFlBQUFJLEtBQUEsQ0FBQUUsR0FBQSxDQUFBTixHQUFBLFNBQUFPLE1BQUEsV0FBQUMscUJBQUEsR0FBQUMsTUFBQSxDQUFBQyxjQUFBLElBQUFE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
58
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfRXZlbnRVdGlscyIsIl9Qb2ludE9mRXZlbnQiLCJfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUiLCJub2RlSW50ZXJvcCIsIldlYWtNYXAiLCJjYWNoZUJhYmVsSW50ZXJvcCIsImNhY2hlTm9kZUludGVyb3AiLCJvYmoiLCJfX2VzTW9kdWxlIiwiX3R5cGVvZiIsImRlZmF1bHQiLCJjYWNoZSIsImhhcyIsImdldCIsIm5ld09iaiIsImhhc1Byb3BlcnR5RGVzY3JpcHRvciIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwia2V5IiwicHJvdG90eXBlIiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiZGVzYyIsInNldCIsIlBvaW50c0ZvclNwZWNpZmljRXZlbnQiLCJfcmVmIiwicG9pbnRzIiwiZXZlbnQiLCJlZGdlcyIsIm1hcCIsImZpbmRQb2ludHNUb0RyYXciLCJwYXRoIiwibGVuZ3RoIiwicmVsZXZhbnRFZGdlcyIsInJlbGV2YW50UG9pbnRzIiwiZmluZEVkZ2VzRnJvbUV2ZW50UGF0aFRvRHJhdyIsImZvckVhY2giLCJlZGdlIiwicG9pbnRUb0RyYXciLCJmaW5kIiwicCIsInBhcnRfb2ZfbW9uaXRvcmVkX3BhdGgiLCJpZCIsInNvdXJjZV9wb2ludF9pZCIsInVuZGVmaW5lZCIsInB1c2giLCJsYXN0UG9pbnRPZkhpZXJhcmNoeSIsImxhc3RFZGdlSW5kZXgiLCJ0YXJnZXRfcG9pbnRfaWQiLCJpbmNsdWRlcyIsIm9ic2VydmF0aW9ucyIsIm9icyIsImZpbmRQb2ludCIsInBvaW50X2lkIiwidXNlRWZmZWN0IiwiZm9jdXNlZCIsImhvdmVyZWQiLCJjcmVhdGVFbGVtZW50IiwiRnJhZ21lbnQiLCJwb2ludCIsIlBvaW50T2ZFdmVudCIsImV4cG9ydHMiXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvV2lkZ2V0cy9NYXAvZXZlbnRzL1BvaW50c0ZvclNwZWNpZmljRXZlbnQudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCwgeyB1c2VFZmZlY3QgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBJUG9pbnQgfSBmcm9tICcuLi8uLi8uLi9zdG9yZS9wb2ludHMvbW9kZWxzL0lQb2ludCc7XG5pbXBvcnQgeyBmaW5kRWRnZXNGcm9tRXZlbnRQYXRoVG9EcmF3IH0gZnJvbSAnLi9FdmVudFV0aWxzJztcbmltcG9ydCB7IElFdmVudCB9IGZyb20gJy4uLy4uLy4uL3N0b3JlL2V2ZW50cy9tb2RlbHMvSUV2ZW50JztcbmltcG9ydCB7IElFZGdlIH0gZnJvbSAnLi4vLi4vLi4vc3RvcmUvZWRnZXMvbW9kZWxzL0lFZGdlJztcbmltcG9ydCB7IFBvaW50T2ZFdmVudCB9IGZyb20gJy4vUG9pbnRPZkV2ZW50JztcblxudHlwZSBJUHJvcHMgPSB7XG4gIHBvaW50czogSVBvaW50W107XG4gIGV2ZW50OiBJRXZlbnQ7XG4gIGVkZ2VzOiBJRWRnZVtdO1xuICBtYXA6IGFueTtcbn07XG5cbmV4cG9ydCBjb25zdCBQb2ludHNGb3JTcGVjaWZpY0V2ZW50OiBSZWFjdC5GQzxJUHJvcHM+ID0gKHtcbiAgcG9pbnRzLFxuICBldmVudCxcbiAgZWRnZXMsXG4gIG1hcCxcbn0pID0+IHtcbiAgY29uc3QgZmluZFBvaW50c1RvRHJhdyA9ICgpID0+IHtcbiAgICBpZiAoZXZlbnQucGF0aC5sZW5ndGggIT09IDApIHtcbiAgICAgIGxldCByZWxldmFudEVkZ2VzOiBJRWRnZVtdID0gW107XG4gICAgICBsZXQgcmVsZXZhbnRQb2ludHM6IElQb2ludFtdID0gW107XG4gICAgICBmaW5kRWRnZXNGcm9tRXZlbnRQYXRoVG9EcmF3KHJlbGV2YW50RWRnZXMsIGV2ZW50LCBlZGdlcyk7XG5cbiAgICAgIHJlbGV2YW50RWRnZXMuZm9yRWFjaCgoZWRnZTogSUVkZ2UpID0+IHtcbiAgICAgICAgbGV0IHBvaW50VG9EcmF3ID0gcG9pbnRzLmZpbmQoXG4gICAgICAgICAgKHA6IElQb2ludCkgPT5cbiAgICAgICAgICAgIHAucGFydF9vZl9tb25pdG9yZWRfcGF0aCAmJiBwLmlkID09PSBlZGdlLnNvdXJjZV9wb2ludF9pZCxcbiAgICAgICAgKTtcbiAgICAgICAgaWYgKHBvaW50VG9EcmF3ICE9PSB1bmRlZmluZWQpIHJlbGV2YW50UG9pbnRzLnB1c2gocG9pbnRUb0RyYXcpO1xuICAgICAgfSk7XG5cbiAgICAgIGxldCBsYXN0UG9pbnRPZkhpZXJhcmNoeTogSVBvaW50IHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xuICAgICAgbGV0IGxhc3RFZGdlSW5kZXggPVxuICAgICAgICByZWxldmFudEVkZ2VzLmxlbmd0aCA9PT0gMSA/IDAgOiByZWxldmFudEVkZ2VzLmxlbmd0aCAtIDE7XG4gICAgICBpZiAocmVsZXZhbnRFZGdlcy5sZW5ndGggPj0gMSlcbiAgICAgICAgbGFzdFBvaW50T2ZIaWVyYXJjaHkgPSBwb2ludHMuZmluZChcbiAgICAgICAgICAocDogSVBvaW50KSA9PiBwLmlkID09PSByZWxldmFudEVkZ2VzW2xhc3RFZGdlSW5kZXhdLnRhcmdldF9wb2ludF9pZCxcbiAgICAgICAgKTtcblxuICAgICAgaWYgKFxuICAgICAgICBsYXN0UG9pbnRPZkhpZXJhcmNoeSAhPT0gdW5kZWZpbmVkICYmXG4gICAgICAgICFyZWxldmFudFBvaW50cy5pbmNsdWRlcyhsYXN0UG9pbnRPZkhpZXJhcmNoeSlcbiAgICAgIClcbiAgICAgICAgcmVsZXZhbnRQb2ludHMucHVzaChsYXN0UG9pbnRPZkhpZXJhcmNoeSk7XG5cbiAgICAgIHJldHVybiByZWxldmFudFBvaW50cztcbiAgICB9IGVsc2Uge1xuICAgICAgbGV0IHJlbGV2YW50UG9pbnRzOiBJUG9pbnRbXSA9IFtdO1xuICAgICAgZXZlbnQub2JzZXJ2YXRpb25zLmZvckVhY2goKG9icykgPT4ge1xuICAgICAgICBsZXQgZmluZFBvaW50ID0gcG9pbnRzLmZpbmQoKHApID0+IHAuaWQgPT09IG9icy5wb2ludF9pZCk7XG4gICAgICAgIGlmIChmaW5kUG9pbnQpIHJlbGV2YW50UG9pbnRzLnB1c2goZmluZFBvaW50KTtcbiAgICAgIH0pO1xuXG4gICAgICByZXR1cm4gcmVsZXZhbnRQb2ludHM7XG4gICAgfVxuICB9O1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7fSwgW2V2ZW50LmZvY3VzZWQsIGV2ZW50LmhvdmVyZWRdKTtcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICB7ZmluZFBvaW50c1RvRHJhdygpLm1hcCgocG9pbnQ6IElQb2ludCkgPT4gKFxuICAgICAgICA8UG9pbnRPZkV2ZW50IG1hcD17bWFwfSBwb2ludD17cG9pbnR9IGV2ZW50PXtldmVudH0ga2V5PXtwb2ludC5pZH0gLz5cbiAgICAgICkpfVxuICAgIDwvPlxuICApO1xufTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBLElBQUFBLE1BQUEsR0FBQUMsdUJBQUEsQ0FBQUMsT0FBQTtBQUVBLElBQUFDLFdBQUEsR0FBQUQsT0FBQTtBQUdBLElBQUFFLGFBQUEsR0FBQUYsT0FBQTtBQUE4QyxTQUFBRyx5QkFBQUMsV0FBQSxlQUFBQyxPQUFBLGtDQUFBQyxpQkFBQSxPQUFBRCxPQUFBLFFBQUFFLGdCQUFBLE9BQUFGLE9BQUEsWUFBQUYsd0JBQUEsWUFBQUEseUJBQUFDLFdBQUEsV0FBQUEsV0FBQSxHQUFBRyxnQkFBQSxHQUFBRCxpQkFBQSxLQUFBRixXQUFBO0FBQUEsU0FBQUwsd0JBQUFTLEdBQUEsRUFBQUosV0FBQSxTQUFBQSxXQUFBLElBQUFJLEdBQUEsSUFBQUEsR0FBQSxDQUFBQyxVQUFBLFdBQUFELEdBQUEsUUFBQUEsR0FBQSxhQUFBRSxPQUFBLENBQUFGLEdBQUEseUJBQUFBLEdBQUEsNEJBQUFHLE9BQUEsRUFBQUgsR0FBQSxVQUFBSSxLQUFBLEdBQUFULHdCQUFBLENBQUFDLFdBQUEsT0FBQVEsS0FBQSxJQUFBQSxLQUFBLENBQUFDLEdBQUEsQ0FBQUwsR0FBQSxZQUFBSSxLQUFBLENBQUFF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