@carto/kepler.gl 0.0.18-alpha.0 → 0.0.21

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 (32) hide show
  1. package/dist/components/common/checkbox.js +2 -2
  2. package/dist/components/common/info-helper.js +4 -3
  3. package/dist/components/kepler-gl.js +9 -5
  4. package/dist/components/map-container.js +16 -2
  5. package/dist/components/plot-container.js +5 -3
  6. package/dist/components/side-panel/layer-panel/layer-config-group.js +21 -5
  7. package/dist/components/side-panel/layer-panel/layer-configurator.js +10 -4
  8. package/dist/components/side-panel/layer-panel/vis-config-switch.js +2 -1
  9. package/dist/constants/default-settings.js +5 -3
  10. package/dist/deckgl-layers/cluster-layer/cluster-layer.js +9 -4
  11. package/dist/layers/aggregation-layer.js +6 -3
  12. package/dist/layers/base-layer.js +9 -5
  13. package/dist/localization/en.js +3 -2
  14. package/dist/utils/layer-utils.js +17 -3
  15. package/package.json +14 -14
  16. package/src/components/common/checkbox.js +5 -1
  17. package/src/components/common/info-helper.js +2 -2
  18. package/src/components/kepler-gl.d.ts +1 -0
  19. package/src/components/kepler-gl.js +15 -3
  20. package/src/components/map-container.js +14 -1
  21. package/src/components/plot-container.js +3 -2
  22. package/src/components/side-panel/layer-panel/layer-config-group.js +19 -5
  23. package/src/components/side-panel/layer-panel/layer-configurator.js +9 -0
  24. package/src/components/side-panel/layer-panel/vis-config-switch.js +1 -0
  25. package/src/constants/default-settings.js +2 -0
  26. package/src/deckgl-layers/cluster-layer/cluster-layer.js +12 -2
  27. package/src/layers/aggregation-layer.js +5 -1
  28. package/src/layers/base-layer.js +6 -3
  29. package/src/localization/en.js +2 -1
  30. package/src/utils/layer-utils.d.ts +7 -0
  31. package/src/utils/layer-utils.js +15 -3
  32. package/umd/keplergl.min.js +180 -181
@@ -38,6 +38,10 @@ var _react2 = _interopRequireDefault(require("@deck.gl/react"));
38
38
 
39
39
  var _reselect = require("reselect");
40
40
 
41
+ var _core = require("@deck.gl/core");
42
+
43
+ var _layers = require("@deck.gl/layers");
44
+
41
45
  var _viewportMercatorProject = _interopRequireDefault(require("viewport-mercator-project"));
42
46
 
43
47
  var _notificationsUtils = require("../utils/notifications-utils");
@@ -406,7 +410,8 @@ function MapContainerFactory(MapPopover, MapControl, Editor) {
406
410
  layers = _this$props6.layers,
407
411
  visStateActions = _this$props6.visStateActions,
408
412
  mapboxApiAccessToken = _this$props6.mapboxApiAccessToken,
409
- mapboxApiUrl = _this$props6.mapboxApiUrl; // initialise layers from props if exists
413
+ mapboxApiUrl = _this$props6.mapboxApiUrl,
414
+ maskPolygon = _this$props6.maskPolygon; // initialise layers from props if exists
410
415
 
411
416
  var deckGlLayers = ((_this$props$deckGlPro = this.props.deckGlProps) === null || _this$props$deckGlPro === void 0 ? void 0 : _this$props$deckGlPro.layers) || []; // wait until data is ready before render data layers
412
417
 
@@ -430,6 +435,15 @@ function MapContainerFactory(MapPopover, MapControl, Editor) {
430
435
  deckGlLayers = deckGlLayers.concat(this.props.deckGlProps.layersOnTop);
431
436
  }
432
437
 
438
+ deckGlLayers.push(new _layers.SolidPolygonLayer({
439
+ id: _defaultSettings.MASK_LAYER_ID,
440
+ operation: _core.OPERATION.MASK,
441
+ data: maskPolygon ? [{
442
+ polygon: maskPolygon
443
+ }] : [],
444
+ getFillColor: [255, 255, 255, 255]
445
+ }));
446
+
433
447
  if (mapStyle.visibleLayerGroups['3d building']) {
434
448
  deckGlLayers.push(new _dBuildingLayer["default"]({
435
449
  id: '_keplergl_3d-building',
@@ -636,4 +650,4 @@ function MapContainerFactory(MapPopover, MapControl, Editor) {
636
650
  MapContainer.displayName = 'MapContainer';
637
651
  return MapContainer;
638
652
  }
639
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb21wb25lbnRzL21hcC1jb250YWluZXIuanMiXSwibmFtZXMiOlsiTUFQX1NUWUxFIiwiY29udGFpbmVyIiwiZGlzcGxheSIsInBvc2l0aW9uIiwid2lkdGgiLCJoZWlnaHQiLCJ0b3AiLCJwb2ludGVyRXZlbnRzIiwiTUFQQk9YR0xfU1RZTEVfVVBEQVRFIiwiTUFQQk9YR0xfUkVOREVSIiwiVFJBTlNJVElPTl9EVVJBVElPTiIsIkF0dHJpYnV0aW9uIiwiTWFwQ29udGFpbmVyRmFjdG9yeSIsImRlcHMiLCJNYXBQb3BvdmVyRmFjdG9yeSIsIk1hcENvbnRyb2xGYWN0b3J5IiwiRWRpdG9yRmFjdG9yeSIsIk1hcFBvcG92ZXIiLCJNYXBDb250cm9sIiwiRWRpdG9yIiwiTWFwQ29udGFpbmVyIiwicHJvcHMiLCJkaW1lbnNpb25zIiwicHJpbWFyeSIsImlzRXhwb3J0IiwibWFwU3RhdGVBY3Rpb25zIiwidXBkYXRlTWFwIiwibGF5ZXJzIiwibGF5ZXJEYXRhIiwibWFwTGF5ZXJzIiwibGF5ZXJPcmRlciIsImxheWVyc1NlbGVjdG9yIiwibGF5ZXJEYXRhU2VsZWN0b3IiLCJtYXBMYXllcnNTZWxlY3RvciIsInByZXBhcmVMYXllcnNUb1JlbmRlciIsInByZXBhcmVMYXllcnNGb3JEZWNrIiwiZmlsdGVycyIsImZpbHRlcnNTZWxlY3RvciIsImZpbHRlciIsImYiLCJ0eXBlIiwiRklMVEVSX1RZUEVTIiwicG9seWdvbiIsImxheWVyT3JkZXJTZWxlY3RvciIsImxheWVyc1RvUmVuZGVyU2VsZWN0b3IiLCJnZW5lcmF0ZU1hcGJveExheWVycyIsInZpc1N0YXRlQWN0aW9ucyIsIm9uTGF5ZXJDbGljayIsImlkeCIsImNvbG9yRG9tYWluIiwibGF5ZXJDb25maWdDaGFuZ2UiLCJsYXllcklkIiwiaW5kZXgiLCJtYXBJbmRleCIsInRvZ2dsZUxheWVyRm9yTWFwIiwicHJldmlvdXNMYXllcnMiLCJfdXBkYXRlTWFwYm94TGF5ZXJzIiwib25NYXBTdHlsZUxvYWRlZCIsIl9tYXAiLCJtYXBib3giLCJnZXRNYXAiLCJvbiIsIl9vbk1hcGJveFN0eWxlVXBkYXRlIiwib25NYXBSZW5kZXIiLCJnZXRNYXBib3hSZWYiLCJnbCIsImxheWVyQmxlbmRpbmciLCJlcnJvciIsImxheWVyIiwiZXJyb3JNZXNzYWdlIiwibWVzc2FnZSIsImlkIiwibm90aWZpY2F0aW9uSWQiLCJfZGVja0dMRXJyb3JzRWxhcHNlZCIsImxhc3RTaG93biIsIkRhdGUiLCJub3ciLCJUSFJPVFRMRV9OT1RJRklDQVRJT05fVElNRSIsInVpU3RhdGVBY3Rpb25zIiwiYWRkTm90aWZpY2F0aW9uIiwidmlld1N0YXRlIiwicmVzdFZpZXdTdGF0ZSIsIm5leHQiLCJ0cmFuc2l0aW9uRHVyYXRpb24iLCJvblZpZXdTdGF0ZUNoYW5nZSIsInBhbmVsSWQiLCJ0b2dnbGVNYXBDb250cm9sIiwiX2RlY2siLCJfcmVmIiwiY3VycmVudCIsIl9oYW5kbGVSZXNpemUiLCJvZmYiLCJvbkRlY2tJbml0aWFsaXplZCIsImxheWVyc1RvUmVuZGVyIiwibWFwU3RhdGUiLCJob3ZlckluZm8iLCJjbGlja2VkIiwiZGF0YXNldHMiLCJpbnRlcmFjdGlvbkNvbmZpZyIsIm1vdXNlUG9zIiwibW91c2VQb3NpdGlvbiIsImNvb3JkaW5hdGUiLCJwaW5uZWQiLCJ0b29sdGlwIiwibGF5ZXJIb3ZlclByb3AiLCJjb21wYXJlTW9kZSIsImNvbmZpZyIsInBpbm5lZFBvc2l0aW9uIiwibGF5ZXJQaW5uZWRQcm9wIiwidmlld3BvcnQiLCJXZWJNZXJjYXRvclZpZXdwb3J0IiwibG5nTGF0IiwiX2dldEhvdmVyWFkiLCJwcmltYXJ5RGF0YSIsImRhdGEiLCJjb21wYXJlVHlwZSIsImNvbW1vblByb3AiLCJvbkNsb3NlIiwiX29uQ2xvc2VNYXBQb3BvdmVyIiwiem9vbSIsImVuYWJsZWQiLCJzY3JlZW5Db29yZCIsInByb2plY3QiLCJ4IiwieSIsImxheWVyc0ZvckRlY2siLCJtYXBTdHlsZSIsIm1hcGJveEFwaUFjY2Vzc1Rva2VuIiwibWFwYm94QXBpVXJsIiwiZGVja0dsTGF5ZXJzIiwiZGVja0dsUHJvcHMiLCJsZW5ndGgiLCJkYXRhTGF5ZXJzIiwic2xpY2UiLCJyZXZlcnNlIiwicmVkdWNlIiwib3ZlcmxheXMiLCJsYXllckNhbGxiYWNrcyIsIm9uU2V0TGF5ZXJEb21haW4iLCJ2YWwiLCJfb25MYXllclNldERvbWFpbiIsImxheWVyT3ZlcmxheSIsImNvbmNhdCIsImxheWVyc09uVG9wIiwidmlzaWJsZUxheWVyR3JvdXBzIiwicHVzaCIsIlRocmVlREJ1aWxkaW5nTGF5ZXIiLCJ0aHJlZURCdWlsZGluZ0NvbG9yIiwidXBkYXRlVHJpZ2dlcnMiLCJnZXRGaWxsQ29sb3IiLCJfb25WaWV3cG9ydENoYW5nZSIsIl9vbkJlZm9yZVJlbmRlciIsIm9uTGF5ZXJIb3ZlciIsIl9vbkRlY2tFcnJvciIsImNvbXAiLCJkZWNrIiwiX29uRGVja0luaXRpYWxpemVkIiwibWFwYm94TGF5ZXJzIiwibWFwYm94TGF5ZXJzU2VsZWN0b3IiLCJPYmplY3QiLCJrZXlzIiwiaXNTdHlsZUxvYWRlZCIsIk1hcENvbXBvbmVudCIsIm1hcENvbnRyb2xzIiwibG9jYWxlIiwiZWRpdG9yIiwibGF5ZXJzRm9yRGVja1NlbGVjdG9yIiwibWFwUHJvcHMiLCJwcmVzZXJ2ZURyYXdpbmdCdWZmZXIiLCJ0cmFuc2Zvcm1SZXF1ZXN0IiwiaXNFZGl0IiwibWFwRHJhdyIsImFjdGl2ZSIsImhhc0dlb2NvZGVyTGF5ZXIiLCJmaW5kIiwibCIsIkdFT0NPREVSX0xBWUVSX0lEIiwiaXNTcGxpdCIsIkJvb2xlYW4iLCJMT0NBTEVfQ09ERVMiLCJkcmFnUm90YXRlIiwicmVhZE9ubHkiLCJzY2FsZSIsImdlb2NvZGVyIiwidG9nZ2xlUGVyc3BlY3RpdmUiLCJ0b2dnbGVTcGxpdE1hcCIsIl9oYW5kbGVNYXBUb2dnbGVMYXllciIsIl90b2dnbGVNYXBDb250cm9sIiwic2V0RWRpdG9yTW9kZSIsInNldExvY2FsZSIsInRvZ2dsZUVkaXRvclZpc2liaWxpdHkiLCJfc2V0TWFwYm94TWFwIiwiYm90dG9tTWFwU3R5bGUiLCJ1bmRlZmluZWQiLCJvbk1vdXNlTW92ZSIsIl9yZW5kZXJEZWNrT3ZlcmxheSIsIl9yZW5kZXJNYXBib3hPdmVybGF5cyIsInBvbHlnb25GaWx0ZXJzIiwiZGVsZXRlRmVhdHVyZSIsInNldFNlbGVjdGVkRmVhdHVyZSIsInNldEZlYXR1cmVzIiwic2V0UG9seWdvbkZpbHRlckxheWVyIiwidmlzaWJsZSIsInRvcE1hcFN0eWxlIiwiX3JlbmRlck1hcFBvcG92ZXIiLCJnbG9iZSIsIl9yZW5kZXJNYXAiLCJDb21wb25lbnQiLCJQcm9wVHlwZXMiLCJvYmplY3QiLCJpc1JlcXVpcmVkIiwic3RyaW5nIiwiYXJyYXlPZiIsImFueSIsImJvb2wiLCJvbk1hcFRvZ2dsZUxheWVyIiwiZnVuYyIsIm51bWJlciIsIk1hcGJveEdMTWFwIiwiZGlzcGxheU5hbWUiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQXFCQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFHQTs7QUFDQTs7QUFDQTs7QUFFQTs7QUFHQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFRQTs7QUFDQTs7QUFNQTs7QUFDQTs7QUFDQTs7Ozs7Ozs7OztBQUVBO0FBQ0EsSUFBTUEsU0FBUyxHQUFHO0FBQ2hCQyxFQUFBQSxTQUFTLEVBQUU7QUFDVEMsSUFBQUEsT0FBTyxFQUFFLGNBREE7QUFFVEMsSUFBQUEsUUFBUSxFQUFFLFVBRkQ7QUFHVEMsSUFBQUEsS0FBSyxFQUFFLE1BSEU7QUFJVEMsSUFBQUEsTUFBTSxFQUFFO0FBSkMsR0FESztBQU9oQkMsRUFBQUEsR0FBRyxFQUFFO0FBQ0hILElBQUFBLFFBQVEsRUFBRSxVQURQO0FBRUhHLElBQUFBLEdBQUcsRUFBRSxLQUZGO0FBR0hDLElBQUFBLGFBQWEsRUFBRSxNQUhaO0FBSUhILElBQUFBLEtBQUssRUFBRSxNQUpKO0FBS0hDLElBQUFBLE1BQU0sRUFBRTtB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TyxFQUFFZ0gsc0JBQVVDLE1BdkJGO0FBd0JqQmxILElBQUFBLFNBQVMsRUFBRWlILHNCQUFVQyxNQXhCSjtBQXlCakJwTCxJQUFBQSxTQUFTLEVBQUVtTCxzQkFBVUMsTUF6Qko7QUEwQmpCTSxJQUFBQSxnQkFBZ0IsRUFBRVAsc0JBQVVRLElBMUJYO0FBMkJqQi9KLElBQUFBLGdCQUFnQixFQUFFdUosc0JBQVVRLElBM0JYO0FBNEJqQnpKLElBQUFBLFdBQVcsRUFBRWlKLHNCQUFVUSxJQTVCTjtBQTZCakJ4SixJQUFBQSxZQUFZLEVBQUVnSixzQkFBVVEsSUE3QlA7QUE4QmpCcEssSUFBQUEsS0FBSyxFQUFFNEosc0JBQVVTO0FBOUJBLEdBRnFEO0FBQUEsbUNBQ3BFck0sWUFEb0Usa0JBbUNsRDtBQUNwQjhJLElBQUFBLFlBQVksRUFBRXdELHNCQURNO0FBRXBCeEYsSUFBQUEsV0FBVyxFQUFFLEVBRk87QUFHcEI5RSxJQUFBQSxLQUFLLEVBQUUsQ0FIYTtBQUlwQjdCLElBQUFBLE9BQU8sRUFBRTtBQUpXLEdBbkNrRDtBQTZmMUVILEVBQUFBLFlBQVksQ0FBQ3VNLFdBQWIsR0FBMkIsY0FBM0I7QUFFQSxTQUFPdk0sWUFBUDtBQUNEIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IChjKSAyMDIyIFViZXIgVGVjaG5vbG9naWVzLCBJbmMuXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuLy8gb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbFxuLy8gaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0c1xuLy8gdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuLy8gY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG4vLyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy9cbi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluXG4vLyBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vXG4vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4vLyBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbi8vIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuLy8gQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuLy8gTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbi8vIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU5cbi8vIFRIRSBTT0ZUV0FSRS5cblxuLy8gbGlicmFyaWVzXG5pbXBvcnQgUmVhY3QsIHtDb21wb25lbnQsIGNyZWF0ZVJlZn0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJztcbmltcG9ydCBNYXBib3hHTE1hcCBmcm9tICdyZWFjdC1tYXAtZ2wnO1xuaW1wb3J0IERlY2tHTCBmcm9tICdAZGVjay5nbC9yZWFjdCc7XG5pbXBvcnQge2NyZWF0ZVNlbGVjdG9yfSBmcm9tICdyZXNlbGVjdCc7XG5pbXBvcnQgV2ViTWVyY2F0b3JWaWV3cG9ydCBmcm9tICd2aWV3cG9ydC1tZXJjYXRvci1wcm9qZWN0JztcbmltcG9ydCB7ZXJyb3JOb3RpZmljYXRpb259IGZyb20gJ3V0aWxzL25vdGlmaWNhdGlvbnMtdXRpbHMnO1xuXG4vLyBjb21wb25lbnRzXG5pbXBvcnQgTWFwUG9wb3ZlckZhY3RvcnkgZnJvbSAnY29tcG9uZW50cy9tYXAvbWFwLXBvcG92ZXInO1xuaW1wb3J0IE1hcENvbnRyb2xGYWN0b3J5IGZyb20gJ2NvbXBvbmVudHMvbWFwL21hcC1jb250cm9sJztcbmltcG9ydCB7U3R5bGVkTWFwQ29udGFpbmVyLCBTdHlsZWRBdHRyYnV0aW9ufSBmcm9tICdjb21wb25lbnRzL2NvbW1vbi9zdHlsZWQtY29tcG9uZW50cyc7XG5cbmltcG9ydCBFZGl0b3JGYWN0b3J5IGZyb20gJy4vZWRpdG9yL2VkaXRvcic7XG5cbi8vIHV0aWxzXG5pbXBvcnQge2dlbmVyYXRlTWFwYm94TGF5ZXJzLCB1cGRhdGVNYXBib3hMYXllcnN9IGZyb20gJ2xheWVycy9tYXBib3gtdXRpbHMnO1xuaW1wb3J0IHtzZXRMYXllckJsZW5kaW5nfSBmcm9tICd1dGlscy9nbC11dGlscyc7XG5pbXBvcnQge3RyYW5zZm9ybVJlcXVlc3R9IGZyb20gJ3V0aWxzL21hcC1zdHlsZS11dGlscy9tYXBib3gtdXRpbHMnO1xuaW1wb3J0IHtcbiAgZ2V0TGF5ZXJIb3ZlclByb3AsXG4gIHJlbmRlckRlY2tHbExheWVyLFxuICBwcmVwYXJlTGF5ZXJzVG9SZW5kZXIsXG4gIHByZXBhcmVMYXllcnNGb3JEZWNrXG59IGZyb20gJ3V0aWxzL2xheWVyLXV0aWxzJztcblxuLy8gZGVmYXVsdC1zZXR0aW5nc1xuaW1wb3J0IFRocmVlREJ1aWxkaW5nTGF5ZXIgZnJvbSAnZGVja2dsLWxheWVycy8zZC1idWlsZGluZy1sYXllci8zZC1idWlsZGluZy1sYXllcic7XG5pbXBvcnQge1xuICBGSUxURVJfVFlQRVMsXG4gIEdFT0NPREVSX0xBWUVSX0lELFxuICBUSFJPVFRMRV9OT1RJRklDQVRJT05fVElNRVxufSBmcm9tICdjb25zdGFudHMvZGVmYXVsdC1zZXR0aW5ncyc7XG5cbmltcG9ydCBFcnJvckJvdW5kYXJ5IGZyb20gJ2NvbXBvbmVudHMvY29tbW9uL2Vycm9yLWJvdW5kYXJ5JztcbmltcG9ydCB7b2JzZXJ2ZURpbWVuc2lvbnMsIHVub2JzZXJ2ZURpbWVuc2lvbnN9IGZyb20gJy4uL3V0aWxzL29ic2VydmUtZGltZW5zaW9ucyc7XG5pbXBvcnQge0xPQ0FMRV9DT0RFU30gZnJvbSAnbG9jYWxpemF0aW9uL2xvY2FsZXMnO1xuXG4vKiogQHR5cGUge3tba2V5OiBzdHJpbmddOiBSZWFjdC5DU1NQcm9wZXJ0aWVzfX0gKi9cbmNvbnN0IE1BUF9TVFlMRSA9IHtcbiAgY29udGFpbmVyOiB7XG4gICAgZGlzcGxheTogJ2lubGluZS1ibG9jaycsXG4gICAgcG9zaXRpb246ICdyZWxhdGl2ZScsXG4gICAgd2lkdGg6ICcxMDAlJyxcbiAgICBoZWlnaHQ6ICcxMDAlJ1xuICB9LFxuICB0b3A6IHtcbiAgICBwb3NpdGlvbjogJ2Fic29sdXRlJyxcbiAgICB0b3A6ICcwcHgnLFxuICAgIHBvaW50ZXJFdmVudHM6ICdub25lJyxcbiAgICB3aWR0aDogJzEwMCUnLFxuICAgIGhlaWdodDogJzEwMCUnXG4gIH1cbn07XG5cbmNvbnN0IE1BUEJPWEdMX1NUWUxFX1VQREFURSA9ICdzdHlsZS5sb2FkJztcbmNvbnN0IE1BUEJPWEdMX1JFTkRFUiA9ICdyZW5kZXInO1xuY29uc3QgVFJBTlNJVElPTl9EVVJBVElPTiA9IDA7XG5cbmV4cG9ydCBjb25zdCBBdHRyaWJ1dGlvbiA9ICgpID0+IChcbiAgPFN0eWxlZEF0dHJidXRpb24+XG4gICAgPGRpdiBjbGFzc05hbWU9XCJhdHRyaXRpb24tbG9nb1wiPlxuICAgICAgQmFzZW1hcCBieTpcbiAgICAgIDxhXG4gICAgICAgIGNsYXNzTmFtZT1cIm1hcGJveGdsLWN0cmwtbG9nb1wiXG4gICAgICAgIHRhcmdldD1cIl9ibGFua1wiXG4gICAgICAgIHJlbD1cIm5vb3BlbmVyIG5vcmVmZXJyZXJcIlxuICAgICAgICBocmVmPVwiaHR0cHM6Ly93d3cubWFwYm94LmNvbS9cIlxuICAgICAgICBhcmlhLWxhYmVsPVwiTWFwYm94IGxvZ29cIlxuICAgICAgLz5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzTmFtZT1cImF0dHJpdGlvbi1saW5rXCI+XG4gICAgICA8YSBocmVmPVwiaHR0cHM6Ly9rZXBsZXIuZ2wvcG9saWN5L1wiIHRhcmdldD1cIl9ibGFua1wiIHJlbD1cIm5vb3BlbmVyIG5vcmVmZXJyZXJcIj5cbiAgICAgICAgwqkga2VwbGVyLmdsIHx7JyAnfVxuICAgICAgPC9hPlxuICAgICAgPGEgaHJlZj1cImh0dHBzOi8vd3d3Lm1hcGJveC5jb20vYWJvdXQvbWFwcy9cIiB0YXJnZXQ9XCJfYmxhbmtcIiByZWw9XCJub29wZW5lciBub3JlZmVycmVyXCI+XG4gICAgICAgIMKpIE1hcGJveCB8eycgJ31cbiAgICAgIDwvYT5cbiAgICAgIDxhIGhyZWY9XCJodHRwOi8vd3d3Lm9wZW5zdHJlZXRtYXAub3JnL2NvcHlyaWdodFwiIHRhcmdldD1cIl9ibGFua1wiIHJlbD1cIm5vb3BlbmVyIG5vcmVmZXJyZXJcIj5cbiAgICAgICAgwqkgT3BlblN0cmVldE1hcCB8eycgJ31cbiAgICAgIDwvYT5cbiAgICAgIDxhIGhyZWY9XCJodHRwczovL3d3dy5tYXBib3guY29tL21hcC1mZWVkYmFjay9cIiB0YXJnZXQ9XCJfYmxhbmtcIiByZWw9XCJub29wZW5lciBub3JlZmVycmVyXCI+XG4gICAgICAgIDxzdHJvbmc+SW1wcm92ZSB0aGlzIG1hcDwvc3Ryb25nPlxuICAgICAgPC9hPlxuICAgIDwvZGl2PlxuICA8L1N0eWxlZEF0dHJidXRpb24+XG4pO1xuXG5NYXBDb250YWluZXJGYWN0b3J5LmRlcHMgPSBbTWFwUG9wb3ZlckZhY3RvcnksIE1hcENvbnRyb2xGYWN0b3J5LCBFZGl0b3JGYWN0b3J5XTtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gTWFwQ29udGFpbmVyRmFjdG9yeShNYXBQb3BvdmVyLCBNYXBDb250cm9sLCBFZGl0b3IpIHtcbiAgY2xhc3MgTWFwQ29udGFpbmVyIGV4dGVuZHMgQ29tcG9uZW50IHtcbiAgICBzdGF0aWMgcHJvcFR5cGVzID0ge1xuICAgICAgLy8gcmVxdWlyZWRcbiAgICAgIGRhdGFzZXRzOiBQcm9wVHlwZXMub2JqZWN0LFxuICAgICAgaW50ZXJhY3Rpb25Db25maWc6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgICAgIGxheWVyQmxlbmRpbmc6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgICAgIGxheWVyT3JkZXI6IFByb3BUeXBlcy5hcnJheU9mKFByb3BUeXBlcy5hbnkpLmlzUmVxdWlyZWQsXG4gICAgICBsYXllckRhdGE6IFByb3BUeXBlcy5hcnJheU9mKFByb3BUeXBlcy5hbnkpLmlzUmVxdWlyZWQsXG4gICAgICBsYXllcnM6IFByb3BUeXBlcy5hcnJheU9mKFByb3BUeXBlcy5hbnkpLmlzUmVxdWlyZWQsXG4gICAgICBmaWx0ZXJzOiBQcm9wVHlwZXMuYXJyYXlPZihQcm9wVHlwZXMuYW55KS5pc1JlcXVpcmVkLFxuICAgICAgbWFwU3RhdGU6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgICAgIG1hcENvbnRyb2xzOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gICAgICBtYXBTdHlsZTogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICAgICAgbW91c2VQb3M6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgICAgIG1hcGJveEFwaUFjY2Vzc1Rva2VuOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gICAgICBtYXBib3hBcGlVcmw6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgICB2aXNTdGF0ZUFjdGlvbnM6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgICAgIG1hcFN0YXRlQWN0aW9uczogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICAgICAgdWlTdGF0ZUFjdGlvbnM6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcblxuICAgICAgLy8gb3B0aW9uYWxcbiAgICAgIHByaW1hcnk6IFByb3BUeXBlcy5ib29sLCAvLyBwcmltYXJ5IG9uZSB3aWxsIGJlIHJlcG9ydGluZyBpdHMgc2l6ZSB0byBhcHBTdGF0ZVxuICAgICAgcmVhZE9ubHk6IFByb3BUeXBlcy5ib29sLFxuICAgICAgaXNFeHBvcnQ6IFByb3BUeXBlcy5ib29sLFxuICAgICAgY2xpY2tlZDogUHJvcFR5cGVzLm9iamVjdCxcbiAgICAgIGhvdmVySW5mbzogUHJvcFR5cGVzLm9iamVjdCxcbiAgICAgIG1hcExheWVyczogUHJvcFR5cGVzLm9iamVjdCxcbiAgICAgIG9uTWFwVG9nZ2xlTGF5ZXI6IFByb3BUeXBlcy5mdW5jLFxuICAgICAgb25NYXBTdHlsZUxvYWRlZDogUHJvcFR5cGVzLmZ1bmMsXG4gICAgICBvbk1hcFJlbmRlcjogUHJvcFR5cGVzLmZ1bmMsXG4gICAgICBnZXRNYXBib3hSZWY6IFByb3BUeXBlcy5mdW5jLFxuICAgICAgaW5kZXg6IFByb3BUeXBlcy5udW1iZXJcbiAgICB9O1xuXG4gICAgc3RhdGljIGRlZmF1bHRQcm9wcyA9IHtcbiAgICAgIE1hcENvbXBvbmVudDogTWFwYm94R0xNYXAsXG4gICAgICBkZWNrR2xQcm9wczoge30sXG4gICAgICBpbmRleDogMCxcbiAgICAgIHByaW1hcnk6IHRydWVcbiAgICB9O1xuXG4gICAgY29uc3RydWN0b3IocHJvcHMpIHtcbiAgICAgIHN1cGVyKHByb3BzKTtcblxuICAgICAgdGhpcy5wcmV2aW91c0xheWVycyA9IHtcbiAgICAgICAgLy8gW2xheWVycy5pZF06IG1hcGJveExheWVyQ29uZmlnXG4gICAgICB9O1xuXG4gICAgICB0aGlzLl9kZWNrID0gbnVsbDtcbiAgICAgIHRoaXMuX3JlZiA9IGNyZWF0ZVJlZigpO1xuICAgIH1cblxuICAgIGNvbXBvbmVudERpZE1vdW50KCkge1xuICAgICAgb2JzZXJ2ZURpbWVuc2lvbnModGhpcy5fcmVmLmN1cnJlbnQsIHRoaXMuX2hhbmRsZVJlc2l6ZSk7XG4gICAgfVxuXG4gICAgY29tcG9uZW50V2lsbFVubW91bnQoKSB7XG4gICAgICAvLyB1bmJpbmQgbWFwYm94Z2wgZXZlbnQgbGlzdGVuZXJcbiAgICAgIGlmICh0aGlzLl9tYXApIHtcbiAgICAgICAgdGhpcy5fbWFwLm9mZihNQVBCT1hHTF9TVFlMRV9VUERBVEUpO1xuICAgICAgICB0aGlzLl9tYXAub2ZmKE1BUEJPWEdMX1JFTkRFUik7XG4gICAgICB9XG4gICAgICB1bm9ic2VydmVEaW1lbnNpb25zKHRoaXMuX3JlZi5jdXJyZW50KTtcbiAgICB9XG5cbiAgICBfaGFuZGxlUmVzaXplID0gZGltZW5zaW9ucyA9PiB7XG4gICAgICBjb25zdCB7cHJpbWFyeSwgaXNFeHBvcnR9ID0gdGhpcy5wcm9wcztcbiAgICAgIGlmIChwcmltYXJ5KSB7XG4gICAgICAgIGNvbnN0IHttYXBTdGF0ZUFjdGlvbnN9ID0gdGhpcy5wcm9wcztcbiAgICAgICAgaWYgKCFpc0V4cG9ydCAmJiBkaW1lbnNpb25zICYmIGRpbWVuc2lvbnMud2lkdGggPiAwICYmIGRpbWVuc2lvbnMuaGVpZ2h0ID4gMCkge1xuICAgICAgICAgIG1hcFN0YXRlQWN0aW9ucy51cGRhdGVNYXAoZGltZW5zaW9ucyk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9O1xuXG4gICAgbGF5ZXJzU2VsZWN0b3IgPSBwcm9wcyA9PiBwcm9wcy5sYXllcnM7XG4gICAgbGF5ZXJEYXRhU2VsZWN0b3IgPSBwcm9wcyA9PiBwcm9wcy5sYXllckRhdGE7XG4gICAgbWFwTGF5ZXJzU2VsZWN0b3IgPSBwcm9wcyA9PiBwcm9wcy5tYXBMYXllcnM7XG4gICAgbGF5ZXJPcmRlclNlbGVjdG9yID0gcHJvcHMgPT4gcHJvcHMubGF5ZXJPcmRlcjtcbiAgICBsYXllcnNUb1JlbmRlclNlbGVjdG9yID0gY3JlYXRlU2VsZWN0b3IoXG4gICAgICB0aGlzLmxheWVyc1NlbGVjdG9yLFxuICAgICAgdGhpcy5sYXllckRhdGFTZWxlY3RvcixcbiAgICAgIHRoaXMubWFwTGF5ZXJzU2VsZWN0b3IsXG4gICAgICBwcmVwYXJlTGF5ZXJzVG9SZW5kZXJcbiAgICApO1xuICAgIGxheWVyc0ZvckRlY2tTZWxlY3RvciA9IGNyZWF0ZVNlbGVjdG9yKFxuICAgICAgdGhpcy5sYXllcnNTZWxlY3RvcixcbiAgICAgIHRoaXMubGF5ZXJEYXRhU2VsZWN0b3IsXG4gICAgICBwcmVwYXJlTGF5ZXJzRm9yRGVja1xuICAgICk7XG4gICAgZmlsdGVyc1NlbGVjdG9yID0gcHJvcHMgPT4gcHJvcHMuZmlsdGVycztcbiAgICBwb2x5Z29uRmlsdGVycyA9IGNyZWF0ZVNlbGVjdG9yKHRoaXMuZmlsdGVyc1NlbGVjdG9yLCBmaWx0ZXJzID0+XG4gICAgICBmaWx0ZXJzLmZpbHRlcihmID0+IGYudHlwZSA9PT0gRklMVEVSX1RZUEVTLnBvbHlnb24pXG4gICAgKTtcblxuICAgIG1hcGJveExheWVyc1NlbGVjdG9yID0gY3JlYXRlU2VsZWN0b3IoXG4gICAgICB0aGlzLmxheWVyc1NlbGVjdG9yLFxuICAgICAgdGhpcy5sYXllckRhdGFTZWxlY3RvcixcbiAgICAgIHRoaXMubGF5ZXJPcmRlclNlbGVjdG9yLFxuICAgICAgdGhpcy5sYXllcnNUb1JlbmRlclNlbGVjdG9yLFxuICAgICAgZ2VuZXJhdGVNYXBib3hMYXllcnNcbiAgICApO1xuXG4gICAgLyogY29tcG9uZW50IHByaXZhdGUgZnVuY3Rpb25zICovXG4gICAgX29uQ2xvc2VNYXBQb3BvdmVyID0gKCkgPT4ge1xuICAgICAgdGhpcy5wcm9wcy52aXNTdGF0ZUFjdGlvbnMub25MYXllckNsaWNrKG51bGwpO1xuICAgIH07XG5cbiAgICBfb25MYXllclNldERvbWFpbiA9IChpZHgsIGNvbG9yRG9tYWluKSA9PiB7XG4gICAgICB0aGlzLnByb3BzLnZpc1N0YXRlQWN0aW9ucy5sYXllckNvbmZpZ0NoYW5nZSh0aGlzLnByb3BzLmxheWVyc1tpZHhdLCB7XG4gICAgICAgIGNvbG9yRG9tYWluXG4gICAgICB9KTtcbiAgICB9O1xuXG4gICAgX2hhbmRsZU1hcFRvZ2dsZUxheWVyID0gbGF5ZXJJZCA9PiB7XG4gICAgICBjb25zdCB7aW5kZXg6IG1hcEluZGV4ID0gMCwgdmlzU3RhdGVBY3Rpb25zfSA9IHRoaXMucHJvcHM7XG4gICAgICB2aXNTdGF0ZUFjdGlvbnMudG9nZ2xlTGF5ZXJGb3JNYXAobWFwSW5kZXgsIGxheWVySWQpO1xuICAgIH07XG5cbiAgICBfb25NYXBib3hTdHlsZVVwZGF0ZSA9ICgpID0+IHtcbiAgICAgIC8vIGZvcmNlIHJlZnJlc2ggbWFwYm94Z2wgbGF5ZXJzXG4gICAgICB0aGlzLnByZXZpb3VzTGF5ZXJzID0ge307XG4gICAgICB0aGlzLl91cGRhdGVNYXBib3hMYXllcnMoKTtcblxuICAgICAgaWYgKHR5cGVvZiB0aGlzLnByb3BzLm9uTWFwU3R5bGVMb2FkZWQgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgdGhpcy5wcm9wcy5vbk1hcFN0eWxlTG9hZGVkKHRoaXMuX21hcCk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIF9zZXRNYXBib3hNYXAgPSBtYXBib3ggPT4ge1xuICAgICAgaWYgKCF0aGlzLl9tYXAgJiYgbWFwYm94KSB7XG4gICAgICAgIHRoaXMuX21hcCA9IG1hcGJveC5nZXRNYXAoKTtcbiAgICAgICAgLy8gaSBub3RpY2VkIGluIGNlcnRhaW4gY29udGV4dCB3ZSBkb24ndCBhY2Nlc3MgdGhlIGFjdHVhbCBtYXAgZWxlbWVudFxuICAgICAgICBpZiAoIXRoaXMuX21hcCkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICAvLyBiaW5kIG1hcGJveGdsIGV2ZW50IGxpc3RlbmVyXG4gICAgICAgIHRoaXMuX21hcC5vbihNQVBCT1hHTF9TVFlMRV9VUERBVEUsIHRoaXMuX29uTWFwYm94U3R5bGVVcGRhdGUpO1xuXG4gICAgICAgIHRoaXMuX21hcC5vbihNQVBCT1hHTF9SRU5ERVIsICgpID0+IHtcbiAgICAgICAgICBpZiAodHlwZW9mIHRoaXMucHJvcHMub25NYXBSZW5kZXIgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIHRoaXMucHJvcHMub25NYXBSZW5kZXIodGhpcy5fbWFwKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5wcm9wcy5nZXRNYXBib3hSZWYpIHtcbiAgICAgICAgLy8gVGhlIHBhcmVudCBjb21wb25lbnQgY2FuIGdhaW4gYWNjZXNzIHRvIG91ciBNYXBib3hHbE1hcCBieVxuICAgICAgICAvLyBwcm92aWRpbmcgdGhpcyBjYWxsYmFjay4gTm90ZSB0aGF0ICdtYXBib3gnIHdpbGwgYmUgbnVsbCB3aGVuIHRoZVxuICAgICAgICAvLyByZWYgaXMgdW5zZXQgKGUuZy4gd2hlbiBhIHNwbGl0IG1hcCBpcyBjbG9zZWQpLlxuICAgICAgICB0aGlzLnByb3BzLmdldE1hcGJveFJlZihtYXBib3gsIHRoaXMucHJvcHMuaW5kZXgpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBfb25EZWNrSW5pdGlhbGl6ZWQoZ2wpIHtcbiAgICAgIGlmICh0aGlzLnByb3BzLm9uRGVja0luaXRpYWxpemVkKSB7XG4gICAgICAgIHRoaXMucHJvcHMub25EZWNrSW5pdGlhbGl6ZWQodGhpcy5fZGVjaywgZ2wpO1xuICAgICAgfVxuICAgIH1cblxuICAgIF9vbkJlZm9yZVJlbmRlciA9ICh7Z2x9KSA9PiB7XG4gICAgICBzZXRMYXllckJsZW5kaW5nKGdsLCB0aGlzLnByb3BzLmxheWVyQmxlbmRpbmcpO1xuICAgIH07XG5cbiAgICBfb25EZWNrRXJyb3IgPSAoZXJyb3IsIGxheWVyKSA9PiB7XG4gICAgICBjb25zdCBlcnJvck1lc3NhZ2UgPSBgQW4gZXJyb3IgaW4gZGVjay5nbDogJHtlcnJvci5tZXNzYWdlfSBpbiAke2xheWVyLmlkfWA7XG4gICAgICBjb25zdCBub3RpZmljYXRpb25JZCA9IGAke2xheWVyLmlkfS0ke2Vycm9yLm1lc3NhZ2V9YDtcblxuICAgICAgLy8gVGhyb3R0bGUgZXJyb3Igbm90aWZpY2F0aW9ucywgYXMgUmVhY3QgZG9lc24ndCBsaWtlIHRvbyBtYW55IHN0YXRlIGNoYW5nZXMgZnJvbSBoZXJlLlxuICAgICAgdGhpcy5fZGVja0dMRXJyb3JzRWxhcHNlZCA9IHRoaXMuX2RlY2tHTEVycm9yc0VsYXBzZWQgfHwge307XG4gICAgICBjb25zdCBsYXN0U2hvd24gPSB0aGlzLl9kZWNrR0xFcnJvcnNFbGFwc2VkW25vdGlmaWNhdGlvbklkXTtcbiAgICAgIGlmICghbGFzdFNob3duIHx8IGxhc3RTaG93biA8IERhdGUubm93KCkgLSBUSFJPVFRMRV9OT1RJRklDQVRJT05fVElNRSkge1xuICAgICAgICB0aGlzLl9kZWNrR0xFcnJvcnNFbGFwc2VkW25vdGlmaWNhdGlvbklkXSA9IERhdGUubm93KCk7XG5cbiAgICAgICAgLy8gQ3JlYXRlIG5ldyBlcnJvciBub3RpZmljYXRpb24gb3IgdXBkYXRlIGV4aXN0aW5nIG9uZSB3aXRoIHNhbWUgaWQuXG4gICAgICAgIC8vIFVwZGF0ZSBpcyByZXF1aXJlZCB0byBwcmVzZXJ2ZSB0aGUgb3JkZXIgb2Ygbm90aWZpY2F0aW9ucyBhcyB0aGV5IHByb2JhYmx5IGFyZSBnb2luZyB0byBcImp1bXBcIiBiYXNlZCBvbiBvcmRlciBvZiBlcnJvcnMuXG4gICAgICAgIGNvbnN0IHt1aVN0YXRlQWN0aW9uc30gPSB0aGlzLnByb3BzO1xuICAgICAgICB1aVN0YXRlQWN0aW9ucy5hZGROb3RpZmljYXRpb24oXG4gICAgICAgICAgZXJyb3JOb3RpZmljYXRpb24oe1xuICAgICAgICAgICAgbWVzc2FnZTogZXJyb3JNZXNzYWdlLFxuICAgICAgICAgICAgaWQ6IG5vdGlmaWNhdGlvbklkXG4gICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgLyogY29tcG9uZW50IHJlbmRlciBmdW5jdGlvbnMgKi9cblxuICAgIC8qIGVzbGludC1kaXNhYmxlIGNvbXBsZXhpdHkgKi9cbiAgICBfcmVuZGVyTWFwUG9wb3ZlcihsYXllcnNUb1JlbmRlcikge1xuICAgICAgLy8gVE9ETzogbW92ZSB0aGlzIGludG8gcmVkdWNlciBzbyBpdCBjYW4gYmUgdGVzdGVkXG4gICAgICBjb25zdCB7XG4gICAgICAgIG1hcFN0YXRlLFxuICAgICAgICBob3ZlckluZm8sXG4gICAgICAgIGNsaWNrZWQsXG4gICAgICAgIGRhdGFzZXRzLFxuICAgICAgICBpbnRlcmFjdGlvbkNvbmZpZyxcbiAgICAgICAgbGF5ZXJzLFxuICAgICAgICBtb3VzZVBvczoge21vdXNlUG9zaXRpb24sIGNvb3JkaW5hdGUsIHBpbm5lZH1cbiAgICAgIH0gPSB0aGlzLnByb3BzO1xuXG4gICAgICBpZiAoIW1vdXNlUG9zaXRpb24gfHwgIWludGVyYWN0aW9uQ29uZmlnLnRvb2x0aXApIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGxheWVySG92ZXJQcm9wID0gZ2V0TGF5ZXJIb3ZlclByb3Aoe1xuICAgICAgICBpbnRlcmFjdGlvbkNvbmZpZyxcbiAgICAgICAgaG92ZXJJbmZvLFxuICAgICAgICBsYXllcnMsXG4gICAgICAgIGxheWVyc1RvUmVuZGVyLFxuICAgICAgICBkYXRhc2V0c1xuICAgICAgfSk7XG5cbiAgICAgIGNvbnN0IGNvbXBhcmVNb2RlID0gaW50ZXJhY3Rpb25Db25maWcudG9vbHRpcC5jb25maWdcbiAgICAgICAgPyBpbnRlcmFjdGlvbkNvbmZpZy50b29sdGlwLmNvbmZpZy5jb21wYXJlTW9kZVxuICAgICAgICA6IGZhbHNlO1xuXG4gICAgICBsZXQgcGlubmVkUG9zaXRpb24gPSB7fTtcbiAgICAgIGxldCBsYXllclBpbm5lZFByb3AgPSBudWxsO1xuICAgICAgaWYgKHBpbm5lZCB8fCBjbGlja2VkKSB7XG4gICAgICAgIC8vIHByb2plY3QgbG5nbGF0IHRvIHNjcmVlbiBzbyB0aGF0IHRvb2x0aXAgZm9sbG93cyB0aGUgb2JqZWN0IG9uIHpvb21cbiAgICAgICAgY29uc3Qgdmlld3BvcnQgPSBuZXcgV2ViTWVyY2F0b3JWaWV3cG9ydChtYXBTdGF0ZSk7XG4gICAgICAgIGNvbnN0IGxuZ0xhdCA9IGNsaWNrZWQgPyBjbGlja2VkLmxuZ0xhdCA6IHBpbm5lZC5jb29yZGluYXRlO1xuICAgICAgICBwaW5uZWRQb3NpdGlvbiA9IHRoaXMuX2dldEhvdmVyWFkodmlld3BvcnQsIGxuZ0xhdCk7XG4gICAgICAgIGxheWVyUGlubmVkUHJvcCA9IGdldExheWVySG92ZXJQcm9wKHtcbiAgICAgICAgICBpbnRlcmFjdGlvbkNvbmZpZyxcbiAgICAgICAgICBob3ZlckluZm86IGNsaWNrZWQsXG4gICAgICAgICAgbGF5ZXJzLFxuICAgICAgICAgIGxheWVyc1RvUmVuZGVyLFxuICAgICAgICAgIGRhdGFzZXRzXG4gICAgICAgIH0pO1xuICAgICAgICBpZiAobGF5ZXJIb3ZlclByb3AgJiYgbGF5ZXJQaW5uZWRQcm9wKSB7XG4gICAgICAgICAgbGF5ZXJIb3ZlclByb3AucHJpbWFyeURhdGEgPSBsYXllclBpbm5lZFByb3AuZGF0YTtcbiAgICAgICAgICBsYXllckhvdmVyUHJvcC5jb21wYXJlVHlwZSA9IGludGVyYWN0aW9uQ29uZmlnLnRvb2x0aXAuY29uZmlnLmNvbXBhcmVUeXBlO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGNvbW1vblByb3AgPSB7XG4gICAgICAgIG9uQ2xvc2U6IHRoaXMuX29uQ2xvc2VNYXBQb3BvdmVyLFxuICAgICAgICB6b29tOiBtYXBTdGF0ZS56b29tLFxuICAgICAgICBjb250YWluZXI6IHRoaXMuX3JlZi5jdXJyZW50XG4gICAgICB9O1xuXG4gICAgICByZXR1cm4gKFxuICAgICAgICA8RXJyb3JCb3VuZGFyeT5cbiAgICAgICAgICB7bGF5ZXJQaW5uZWRQcm9wICYmIChcbiAgICAgICAgICAgIDxNYXBQb3BvdmVyXG4gICAgICAgICAgICAgIHsuLi5waW5uZWRQb3NpdGlvbn1cbiAgICAgICAgICAgICAgey4uLmNvbW1vblByb3B9XG4gICAgICAgICAgICAgIGxheWVySG92ZXJQcm9wPXtsYXllclBpbm5lZFByb3B9XG4gICAgICAgICAgICAgIGNvb3JkaW5hdGU9e2ludGVyYWN0aW9uQ29uZmlnLmNvb3JkaW5hdGUuZW5hYmxlZCAmJiAocGlubmVkIHx8IHt9KS5jb29yZGluYXRlfVxuICAgICAgICAgICAgICBmcm96ZW49e3RydWV9XG4gICAgICAgICAgICAgIGlzQmFzZT17Y29tcGFyZU1vZGV9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICl9XG4gICAgICAgICAge2xheWVySG92ZXJQcm9wICYmICghbGF5ZXJQaW5uZWRQcm9wIHx8IGNvbXBhcmVNb2RlKSAmJiAoXG4gICAgICAgICAgICA8TWFwUG9wb3ZlclxuICAgICAgICAgICAgICB4PXttb3VzZVBvc2l0aW9uWzBdfVxuICAgICAgICAgICAgICB5PXttb3VzZVBvc2l0aW9uWzFdfVxuICAgICAgICAgICAgICB7Li4uY29tbW9uUHJvcH1cbiAgICAgICAgICAgICAgbGF5ZXJIb3ZlclByb3A9e2xheWVySG92ZXJQcm9wfVxuICAgICAgICAgICAgICBmcm96ZW49e2ZhbHNlfVxuICAgICAgICAgICAgICBjb29yZGluYXRlPXtpbnRlcmFjdGlvbkNvbmZpZy5jb29yZGluYXRlLmVuYWJsZWQgJiYgY29vcmRpbmF0ZX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgKX1cbiAgICAgICAgPC9FcnJvckJvdW5kYXJ5PlxuICAgICAgKTtcbiAgICB9XG5cbiAgICAvKiBlc2xpbnQtZW5hYmxlIGNvbXBsZXhpdHkgKi9cblxuICAgIF9nZXRIb3ZlclhZKHZpZXdwb3J0LCBsbmdMYXQpIHtcbiAgICAgIGNvbnN0IHNjcmVlbkNvb3JkID0gIXZpZXdwb3J0IHx8ICFsbmdMYXQgPyBudWxsIDogdmlld3BvcnQucHJvamVjdChsbmdMYXQpO1xuICAgICAgcmV0dXJuIHNjcmVlbkNvb3JkICYmIHt4OiBzY3JlZW5Db29yZFswXSwgeTogc2NyZWVuQ29vcmRbMV19O1xuICAgIH1cblxuICAgIF9yZW5kZXJEZWNrT3ZlcmxheShsYXllcnNGb3JEZWNrKSB7XG4gICAgICBjb25zdCB7XG4gICAgICAgIG1hcFN0YXRlLFxuICAgICAgICBtYXBTdHlsZSxcbiAgICAgICAgbGF5ZXJEYXRhLFxuICAgICAgICBsYXllck9yZGVyLFxuICAgICAgICBsYXllcnMsXG4gICAgICAgIHZpc1N0YXRlQWN0aW9ucyxcbiAgICAgICAgbWFwYm94QXBpQWNjZXNzVG9rZW4sXG4gICAgICAgIG1hcGJveEFwaVVybFxuICAgICAgfSA9IHRoaXMucHJvcHM7XG5cbiAgICAgIC8vIGluaXRpYWxpc2UgbGF5ZXJzIGZyb20gcHJvcHMgaWYgZXhpc3RzXG4gICAgICBsZXQgZGVja0dsTGF5ZXJzID0gdGhpcy5wcm9wcy5kZWNrR2xQcm9wcz8ubGF5ZXJzIHx8IFtdO1xuXG4gICAgICAvLyB3YWl0IHVudGlsIGRhdGEgaXMgcmVhZHkgYmVmb3JlIHJlbmRlciBkYXRhIGxheWVyc1xuICAgICAgaWYgKGxheWVyRGF0YSAmJiBsYXllckRhdGEubGVuZ3RoKSB7XG4gICAgICAgIC8vIGxhc3QgbGF5ZXIgcmVuZGVyIGZpcnN0XG4gICAgICAgIGNvbnN0IGRhdGFMYXllcnMgPSBsYXllck9yZGVyXG4gICAgICAgICAgLnNsaWNlKClcbiAgICAgICAgICAucmV2ZXJzZSgpXG4gICAgICAgICAgLmZpbHRlcihpZHggPT4gbGF5ZXJzRm9yRGVja1tsYXllcnNbaWR4XS5pZF0pXG4gICAgICAgICAgLnJlZHVjZSgob3ZlcmxheXMsIGlkeCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgbGF5ZXJDYWxsYmFja3MgPSB7XG4gICAgICAgICAgICAgIG9uU2V0TGF5ZXJEb21haW46IHZhbCA9PiB0aGlzLl9vbkxheWVyU2V0RG9tYWluKGlkeCwgdmFsKVxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGNvbnN0IGxheWVyT3ZlcmxheSA9IHJlbmRlckRlY2tHbExheWVyKHRoaXMucHJvcHMsIGxheWVyQ2FsbGJhY2tzLCBpZHgpO1xuICAgICAgICAgICAgcmV0dXJuIG92ZXJsYXlzLmNvbmNhdChsYXllck92ZXJsYXkgfHwgW10pO1xuICAgICAgICAgIH0sIFtdKTtcbiAgICAgICAgZGVja0dsTGF5ZXJzID0gZGVja0dsTGF5ZXJzLmNvbmNhdChkYXRhTGF5ZXJzKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMucHJvcHMuZGVja0dsUHJvcHM/LmxheWVyc09uVG9wKSB7XG4gICAgICAgIGRlY2tHbExheWVycyA9IGRlY2tHbExheWVycy5jb25jYXQodGhpcy5wcm9wcy5kZWNrR2xQcm9wcy5sYXllcnNPblRvcCk7XG4gICAgICB9XG5cbiAgICAgIGlmIChtYXBTdHlsZS52aXNpYmxlTGF5ZXJHcm91cHNbJzNkIGJ1aWxkaW5nJ10pIHtcbiAgICAgICAgZGVja0dsTGF5ZXJzLnB1c2goXG4gICAgICAgICAgbmV3IFRocmVlREJ1aWxkaW5nTGF5ZXIoe1xuICAgICAgICAgICAgaWQ6ICdfa2VwbGVyZ2xfM2QtYnVpbGRpbmcnLFxuICAgICAgICAgICAgbWFwYm94QXBpQWNjZXNzVG9rZW4sXG4gICAgICAgICAgICBtYXBib3hBcGlVcmwsXG4gICAgICAgICAgICB0aHJlZURCdWlsZGluZ0NvbG9yOiBtYXBTdHlsZS50aHJlZURCdWlsZGluZ0NvbG9yLFxuICAgICAgICAgICAgdXBkYXRlVHJpZ2dlcnM6IHtcbiAgICAgICAgICAgICAgZ2V0RmlsbENvbG9yOiBtYXBTdHlsZS50aHJlZURCdWlsZGluZ0NvbG9yXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIChcbiAgICAgICAgPERlY2tHTFxuICAgICAgICAgIHsuLi50aGlzLnByb3BzLmRlY2tHbFByb3BzfVxuICAgICAgICAgIHZpZXdTdGF0ZT17bWFwU3RhdGV9XG4gICAgICAgICAgY29udHJvbGxlcj17dHJ1ZX1cbiAgICAgICAgICBvblZpZXdTdGF0ZUNoYW5nZT17KHt2aWV3U3RhdGV9KSA9PiB0aGlzLl9vblZpZXdwb3J0Q2hhbmdlKHZpZXdTdGF0ZSl9XG4gICAgICAgICAgaWQ9XCJkZWZhdWx0LWRlY2tnbC1vdmVybGF5XCJcbiAgICAgICAgICBsYXllcnM9e2RlY2tHbExheWVyc31cbiAgICAgICAgICBvbkJlZm9yZVJlbmRlcj17dGhpcy5fb25CZWZvcmVSZW5kZXJ9XG4gICAgICAgICAgb25Ib3Zlcj17dmlzU3RhdGVBY3Rpb25zLm9uTGF5ZXJIb3Zlcn1cbiAgICAgICAgICBvbkNsaWNrPXt2aXNTdGF0ZUFjdGlvbnMub25MYXllckNsaWNrfVxuICAgICAgICAgIG9uRXJyb3I9e3RoaXMuX29uRGVja0Vycm9yfVxuICAgICAgICAgIHJlZj17Y29tcCA9PiB7XG4gICAgICAgICAgICBpZiAoY29tcCAmJiBjb21wLmRlY2sgJiYgY29tcC5kZWNrICE9PSB0aGlzLl9kZWNrKSB7XG4gICAgICAgICAgICAgIHRoaXMuX2RlY2sgPSBjb21wLmRlY2s7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfX1cbiAgICAgICAgICBvbldlYkdMSW5pdGlhbGl6ZWQ9e2dsID0+IHRoaXMuX29uRGVja0luaXRpYWxpemVkKGdsKX1cbiAgICAgICAgLz5cbiAgICAgICk7XG4gICAgfVxuXG4gICAgX3VwZGF0ZU1hcGJveExheWVycygpIHtcbiAgICAgIGNvbnN0IG1hcGJveExheWVycyA9IHRoaXMubWFwYm94TGF5ZXJzU2VsZWN0b3IodGhpcy5wcm9wcyk7XG4gICAgICBpZiAoIU9iamVjdC5rZXlzKG1hcGJveExheWVycykubGVuZ3RoICYmICFPYmplY3Qua2V5cyh0aGlzLnByZXZpb3VzTGF5ZXJzKS5sZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICB1cGRhdGVNYXBib3hMYXllcnModGhpcy5fbWFwLCBtYXBib3hMYXllcnMsIHRoaXMucHJldmlvdXNMYXllcnMpO1xuXG4gICAgICB0aGlzLnByZXZpb3VzTGF5ZXJzID0gbWFwYm94TGF5ZXJzO1xuICAgIH1cblxuICAgIF9yZW5kZXJNYXBib3hPdmVybGF5cygpIHtcbiAgICAgIGlmICh0aGlzLl9tYXAgJiYgdGhpcy5fbWFwLmlzU3R5bGVMb2FkZWQoKSkge1xuICAgICAgICB0aGlzLl91cGRhdGVNYXBib3hMYXllcnMoKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBfb25WaWV3cG9ydENoYW5nZSA9IHZpZXdTdGF0ZSA9PiB7XG4gICAgICBjb25zdCB7d2lkdGgsIGhlaWdodCwgLi4ucmVzdFZpZXdTdGF0ZX0gPSB2aWV3U3RhdGU7XG4gICAgICBjb25zdCB7cHJpbWFyeSwgaXNFeHBvcnR9ID0gdGhpcy5wcm9wcztcbiAgICAgIC8vIHJlYWN0LW1hcC1nbCBzZW5kcyAwLDAgZGltZW5zaW9ucyBkdXJpbmcgaW5pdGlhbGl6YXRpb25cbiAgICAgIC8vIGFmdGVyIHdlIGhhdmUgcmVjZWl2ZWQgcHJvcGVyIGRpbWVuc2lvbnMgZnJvbSBvYnNlcnZlRGltZW5zaW9uc1xuICAgICAgY29uc3QgbmV4dCA9IHtcbiAgICAgICAgLi4uKHdpZHRoID4gMCAmJiBoZWlnaHQgPiAwID8gdmlld1N0YXRlIDogcmVzdFZpZXdTdGF0ZSksXG4gICAgICAgIC8vIGVuYWJsaW5nIHRyYW5zaXRpb24gaW4gdHdvIG1hcHMgbWF5IGxlYWQgdG8gZW5kbGVzcyB1cGRhdGUgbG9vcHNcbiAgICAgICAgdHJhbnNpdGlvbkR1cmF0aW9uOiBwcmltYXJ5ID8gVFJBTlNJVElPTl9EVVJBVElPTiA6IDBcbiAgICAgIH07XG4gICAgICBpZiAodHlwZW9mIHRoaXMucHJvcHMub25WaWV3U3RhdGVDaGFuZ2UgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgdGhpcy5wcm9wcy5vblZpZXdTdGF0ZUNoYW5nZShuZXh0KTtcbiAgICAgIH1cblxuICAgICAgaWYgKCFpc0V4cG9ydCkge1xuICAgICAgICB0aGlzLnByb3BzLm1hcFN0YXRlQWN0aW9ucy51cGRhdGVNYXAobmV4dCk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIF90b2dnbGVNYXBDb250cm9sID0gcGFuZWxJZCA9PiB7XG4gICAgICBjb25zdCB7aW5kZXgsIHVpU3RhdGVBY3Rpb25zfSA9IHRoaXMucHJvcHM7XG5cbiAgICAgIHVpU3RhdGVBY3Rpb25zLnRvZ2dsZU1hcENvbnRyb2wocGFuZWxJZCwgaW5kZXgpO1xuICAgIH07XG5cbiAgICAvKiBlc2xpbnQtZGlzYWJsZSBjb21wbGV4aXR5ICovXG4gICAgX3JlbmRlck1hcCgpIHtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgbWFwU3RhdGUsXG4gICAgICAgIG1hcFN0eWxlLFxuICAgICAgICBtYXBTdGF0ZUFjdGlvbnMsXG4gICAgICAgIGxheWVycyxcbiAgICAgICAgTWFwQ29tcG9uZW50LFxuICAgICAgICBkYXRhc2V0cyxcbiAgICAgICAgbWFwYm94QXBpQWNjZXNzVG9rZW4sXG4gICAgICAgIG1hcGJveEFwaVVybCxcbiAgICAgICAgbWFwQ29udHJvbHMsXG4gICAgICAgIGlzRXhwb3J0LFxuICAgICAgICBsb2NhbGUsXG4gICAgICAgIHVpU3RhdGVBY3Rpb25zLFxuICAgICAgICB2aXNTdGF0ZUFjdGlvbnMsXG4gICAgICAgIGludGVyYWN0aW9uQ29uZmlnLFxuICAgICAgICBlZGl0b3IsXG4gICAgICAgIGluZGV4LFxuICAgICAgICBwcmltYXJ5XG4gICAgICB9ID0gdGhpcy5wcm9wcztcblxuICAgICAgY29uc3QgbGF5ZXJzVG9SZW5kZXIgPSB0aGlzLmxheWVyc1RvUmVuZGVyU2VsZWN0b3IodGhpcy5wcm9wcyk7XG4gICAgICBjb25zdCBsYXllcnNGb3JEZWNrID0gdGhpcy5sYXllcnNGb3JEZWNrU2VsZWN0b3IodGhpcy5wcm9wcyk7XG5cbiAgICAgIGNvbnN0IG1hcFByb3BzID0ge1xuICAgICAgICAuLi5tYXBTdGF0ZSxcbiAgICAgICAgd2lkdGg6ICcxMDAlJyxcbiAgICAgICAgaGVpZ2h0OiAnMTAwJScsXG4gICAgICAgIHByZXNlcnZlRHJhd2luZ0J1ZmZlcjogdHJ1ZSxcbiAgICAgICAgbWFwYm94QXBpQWNjZXNzVG9rZW4sXG4gICAgICAgIG1hcGJveEFwaVVybCxcbiAgICAgICAgdHJhbnNmb3JtUmVxdWVzdFxuICAgICAgfTtcblxuICAgICAgY29uc3QgaXNFZGl0ID0gKG1hcENvbnRyb2xzLm1hcERyYXcgfHwge30pLmFjdGl2ZTtcblxuICAgICAgY29uc3QgaGFzR2VvY29kZXJMYXllciA9IGxheWVycy5maW5kKGwgPT4gbC5pZCA9PT0gR0VPQ09ERVJfTEFZRVJfSUQpO1xuICAgICAgY29uc3QgaXNTcGxpdCA9IEJvb2xlYW4obWFwU3RhdGUuaXNTcGxpdCk7XG5cbiAgICAgIHJldHVybiAoXG4gICAgICAgIDw+XG4gICAgICAgICAgPE1hcENvbnRyb2xcbiAgICAgICAgICAgIGRhdGFzZXRzPXtkYXRhc2V0c31cbiAgICAgICAgICAgIGF2YWlsYWJsZUxvY2FsZXM9e09iamVjdC5rZXlzKExPQ0FMRV9DT0RFUyl9XG4gICAgICAgICAgICBkcmFnUm90YXRlPXttYXBTdGF0ZS5kcmFnUm90YXRlfVxuICAgICAgICAgICAgaXNTcGxpdD17aXNTcGxpdH1cbiAgICAgICAgICAgIHByaW1hcnk9e3ByaW1hcnl9XG4gICAgICAgICAgICBpc0V4cG9ydD17aXNFeHBvcnR9XG4gICAgICAgICAgICBsYXllcnM9e2xheWVyc31cbiAgICAgICAgICAgIGxheWVyc1RvUmVuZGVyPXtsYXllcnNUb1JlbmRlcn1cbiAgICAgICAgICAgIG1hcEluZGV4PXtpbmRleH1cbiAgICAgICAgICAgIG1hcENvbnRyb2xzPXttYXBDb250cm9sc31cbiAgICAgICAgICAgIHJlYWRPbmx5PXt0aGlzLnByb3BzLnJlYWRPbmx5fVxuICAgICAgICAgICAgc2NhbGU9e21hcFN0YXRlLnNjYWxlIHx8IDF9XG4gICAgICAgICAgICB0b3A9e2ludGVyYWN0aW9uQ29uZmlnLmdlb2NvZGVyICYmIGludGVyYWN0aW9uQ29uZmlnLmdlb2NvZGVyLmVuYWJsZWQgPyA1MiA6IDB9XG4gICAgICAgICAgICBlZGl0b3I9e2VkaXRvcn1cbiAgICAgICAgICAgIGxvY2FsZT17bG9jYWxlfVxuICAgICAgICAgICAgb25Ub2dnbGVQZXJzcGVjdGl2ZT17bWFwU3RhdGVBY3Rpb25zLnRvZ2dsZVBlcnNwZWN0aXZlfVxuICAgICAgICAgICAgb25Ub2dnbGVTcGxpdE1hcD17bWFwU3RhdGVBY3Rpb25zLnRvZ2dsZVNwbGl0TWFwfVxuICAgICAgICAgICAgb25NYXBUb2dnbGVMYXllcj17dGhpcy5faGFuZGxlTWFwVG9nZ2xlTGF5ZXJ9XG4gICAgICAgICAgICBvblRvZ2dsZU1hcENvbnRyb2w9e3RoaXMuX3RvZ2dsZU1hcENvbnRyb2x9XG4gICAgICAgICAgICBvblNldEVkaXRvck1vZGU9e3Zpc1N0YXRlQWN0aW9ucy5zZXRFZGl0b3JNb2RlfVxuICAgICAgICAgICAgb25TZXRMb2NhbGU9e3VpU3RhdGVBY3Rpb25zLnNldExvY2FsZX1cbiAgICAgICAgICAgIG9uVG9nZ2xlRWRpdG9yVmlzaWJpbGl0eT17dmlzU3RhdGVBY3Rpb25zLnRvZ2dsZUVkaXRvclZpc2liaWxpdHl9XG4gICAgICAgICAgLz5cbiAgICAgICAgICA8TWFwQ29tcG9uZW50XG4gICAgICAgICAgICB7Li4ubWFwUHJvcHN9XG4gICAgICAgICAgICBrZXk9XCJib3R0b21cIlxuICAgICAgICAgICAgcmVmPXt0aGlzLl9zZXRNYXBib3hNYXB9XG4gICAgICAgICAgICBtYXBTdHlsZT17bWFwU3R5bGUuYm90dG9tTWFwU3R5bGV9XG4gICAgICAgICAgICBnZXRDdXJzb3I9e3RoaXMucHJvcHMuaG92ZXJJbmZvID8gKCkgPT4gJ3BvaW50ZXInIDogdW5kZWZpbmVkfVxuICAgICAgICAgICAgb25Nb3VzZU1vdmU9e3RoaXMucHJvcHMudmlzU3RhdGVBY3Rpb25zLm9uTW91c2VNb3ZlfVxuICAgICAgICAgID5cbiAgICAgICAgICAgIHt0aGlzLl9yZW5kZXJEZWNrT3ZlcmxheShsYXllcnNGb3JEZWNrKX1cbiAgICAgICAgICAgIHt0aGlzLl9yZW5kZXJNYXBib3hPdmVybGF5cygpfVxuICAgICAgICAgICAgPEVkaXRvclxuICAgICAgICAgICAgICBpbmRleD17aW5kZXh9XG4gICAgICAgICAgICAgIGRhdGFzZXRzPXtkYXRhc2V0c31cbiAgICAgICAgICAgICAgZWRpdG9yPXtlZGl0b3J9XG4gICAgICAgICAgICAgIGZpbHRlcnM9e3RoaXMucG9seWdvbkZpbHRlcnModGhpcy5wcm9wcyl9XG4gICAgICAgICAgICAgIGlzRW5hYmxlZD17aXNFZGl0fVxuICAgICAgICAgICAgICBsYXllcnM9e2xheWVyc31cbiAgICAgICAgICAgICAgbGF5ZXJzVG9SZW5kZXI9e2xheWVyc1RvUmVuZGVyfVxuICAgICAgICAgICAgICBvbkRlbGV0ZUZlYXR1cmU9e3Zpc1N0YXRlQWN0aW9ucy5kZWxldGVGZWF0dXJlfVxuICAgICAgICAgICAgICBvblNlbGVjdD17dmlzU3RhdGVBY3Rpb25zLnNldFNlbGVjdGVkRmVhdHVyZX1cbiAgICAgICAgICAgICAgb25VcGRhdGU9e3Zpc1N0YXRlQWN0aW9ucy5zZXRGZWF0dXJlc31cbiAgICAgICAgICAgICAgb25Ub2dnbGVQb2x5Z29uRmlsdGVyPXt2aXNTdGF0ZUFjdGlvbnMuc2V0UG9seWdvbkZpbHRlckxheWVyfVxuICAgICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgIHBvaW50ZXJFdmVudHM6IGlzRWRpdCA/ICdhbGwnIDogJ25vbmUnLFxuICAgICAgICAgICAgICAgIHBvc2l0aW9uOiAnYWJzb2x1dGUnLFxuICAgICAgICAgICAgICAgIGRpc3BsYXk6IGVkaXRvci52aXNpYmxlID8gJ2Jsb2NrJyA6ICdub25lJ1xuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L01hcENvbXBvbmVudD5cbiAgICAgICAgICB7bWFwU3R5bGUudG9wTWFwU3R5bGUgfHwgaGFzR2VvY29kZXJMYXllciA/IChcbiAgICAgICAgICAgIDxkaXYgc3R5bGU9e01BUF9TVFlMRS50b3B9PlxuICAgICAgICAgICAgICA8TWFwQ29tcG9uZW50IHsuLi5tYXBQcm9wc30ga2V5PVwidG9wXCIgbWFwU3R5bGU9e21hcFN0eWxlLnRvcE1hcFN0eWxlfT5cbiAgICAgICAgICAgICAgICB7dGhpcy5fcmVuZGVyRGVja092ZXJsYXkoe1tHRU9DT0RFUl9MQVlFUl9JRF06IHRydWV9KX1cbiAgICAgICAgICAgICAgPC9NYXBDb21wb25lbnQ+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICB7dGhpcy5fcmVuZGVyTWFwUG9wb3ZlcihsYXllcnNUb1JlbmRlcil9XG4gICAgICAgICAgeyFpc1NwbGl0IHx8IGluZGV4ID09PSAxID8gPEF0dHJpYnV0aW9uIC8+IDogbnVsbH1cbiAgICAgICAgPC8+XG4gICAgICApO1xuICAgIH1cblxuICAgIHJlbmRlcigpIHtcbiAgICAgIGNvbnN0IHttYXBTdGF0ZSwgbWFwU3R5bGV9ID0gdGhpcy5wcm9wcztcbiAgICAgIHJldHVybiAoXG4gICAgICAgIDxTdHlsZWRNYXBDb250YWluZXIgcmVmPXt0aGlzLl9yZWZ9IHN0eWxlPXtNQVBfU1RZTEUuY29udGFpbmVyfSBnbG9iZT17bWFwU3RhdGUuZ2xvYmV9PlxuICAgICAgICAgIHttYXBTdHlsZS5ib3R0b21NYXBTdHlsZSAmJiB0aGlzLl9yZW5kZXJNYXAoKX1cbiAgICAgICAgPC9TdHlsZWRNYXBDb250YWluZXI+XG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIE1hcENvbnRhaW5lci5kaXNwbGF5TmFtZSA9ICdNYXBDb250YWluZXInO1xuXG4gIHJldHVybiBNYXBDb250YWluZXI7XG59XG4iXX0=
653
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb21wb25lbnRzL21hcC1jb250YWluZXIuanMiXSwibmFtZXMiOlsiTUFQX1NUWUxFIiwiY29udGFpbmVyIiwiZGlzcGxheSIsInBvc2l0aW9uIiwid2lkdGgiLCJoZWlnaHQiLCJ0b3AiLCJwb2ludGVyRXZlbnRzIiwiTUFQQk9YR0xfU1RZTEVfVVBEQVRFIiwiTUFQQk9YR0xfUkVOREVSIiwiVFJBTlNJVElPTl9EVVJBVElPTiIsIkF0dHJpYnV0aW9uIiwiTWFwQ29udGFpbmVyRmFjdG9yeSIsImRlcHMiLCJNYXBQb3BvdmVyRmFjdG9yeSIsIk1hcENvbnRyb2xGYWN0b3J5IiwiRWRpdG9yRmFjdG9yeSIsIk1hcFBvcG92ZXIiLCJNYXBDb250cm9sIiwiRWRpdG9yIiwiTWFwQ29udGFpbmVyIiwicHJvcHMiLCJkaW1lbnNpb25zIiwicHJpbWFyeSIsImlzRXhwb3J0IiwibWFwU3RhdGVBY3Rpb25zIiwidXBkYXRlTWFwIiwibGF5ZXJzIiwibGF5ZXJEYXRhIiwibWFwTGF5ZXJzIiwibGF5ZXJPcmRlciIsImxheWVyc1NlbGVjdG9yIiwibGF5ZXJEYXRhU2VsZWN0b3IiLCJtYXBMYXllcnNTZWxlY3RvciIsInByZXBhcmVMYXllcnNUb1JlbmRlciIsInByZXBhcmVMYXllcnNGb3JEZWNrIiwiZmlsdGVycyIsImZpbHRlcnNTZWxlY3RvciIsImZpbHRlciIsImYiLCJ0eXBlIiwiRklMVEVSX1RZUEVTIiwicG9seWdvbiIsImxheWVyT3JkZXJTZWxlY3RvciIsImxheWVyc1RvUmVuZGVyU2VsZWN0b3IiLCJnZW5lcmF0ZU1hcGJveExheWVycyIsInZpc1N0YXRlQWN0aW9ucyIsIm9uTGF5ZXJDbGljayIsImlkeCIsImNvbG9yRG9tYWluIiwibGF5ZXJDb25maWdDaGFuZ2UiLCJsYXllcklkIiwiaW5kZXgiLCJtYXBJbmRleCIsInRvZ2dsZUxheWVyRm9yTWFwIiwicHJldmlvdXNMYXllcnMiLCJfdXBkYXRlTWFwYm94TGF5ZXJzIiwib25NYXBTdHlsZUxvYWRlZCIsIl9tYXAiLCJtYXBib3giLCJnZXRNYXAiLCJvbiIsIl9vbk1hcGJveFN0eWxlVXBkYXRlIiwib25NYXBSZW5kZXIiLCJnZXRNYXBib3hSZWYiLCJnbCIsImxheWVyQmxlbmRpbmciLCJlcnJvciIsImxheWVyIiwiZXJyb3JNZXNzYWdlIiwibWVzc2FnZSIsImlkIiwibm90aWZpY2F0aW9uSWQiLCJfZGVja0dMRXJyb3JzRWxhcHNlZCIsImxhc3RTaG93biIsIkRhdGUiLCJub3ciLCJUSFJPVFRMRV9OT1RJRklDQVRJT05fVElNRSIsInVpU3RhdGVBY3Rpb25zIiwiYWRkTm90aWZpY2F0aW9uIiwidmlld1N0YXRlIiwicmVzdFZpZXdTdGF0ZSIsIm5leHQiLCJ0cmFuc2l0aW9uRHVyYXRpb24iLCJvblZpZXdTdGF0ZUNoYW5nZSIsInBhbmVsSWQiLCJ0b2dnbGVNYXBDb250cm9sIiwiX2RlY2siLCJfcmVmIiwiY3VycmVudCIsIl9oYW5kbGVSZXNpemUiLCJvZmYiLCJvbkRlY2tJbml0aWFsaXplZCIsImxheWVyc1RvUmVuZGVyIiwibWFwU3RhdGUiLCJob3ZlckluZm8iLCJjbGlja2VkIiwiZGF0YXNldHMiLCJpbnRlcmFjdGlvbkNvbmZpZyIsIm1vdXNlUG9zIiwibW91c2VQb3NpdGlvbiIsImNvb3JkaW5hdGUiLCJwaW5uZWQiLCJ0b29sdGlwIiwibGF5ZXJIb3ZlclByb3AiLCJjb21wYXJlTW9kZSIsImNvbmZpZyIsInBpbm5lZFBvc2l0aW9uIiwibGF5ZXJQaW5uZWRQcm9wIiwidmlld3BvcnQiLCJXZWJNZXJjYXRvclZpZXdwb3J0IiwibG5nTGF0IiwiX2dldEhvdmVyWFkiLCJwcmltYXJ5RGF0YSIsImRhdGEiLCJjb21wYXJlVHlwZSIsImNvbW1vblByb3AiLCJvbkNsb3NlIiwiX29uQ2xvc2VNYXBQb3BvdmVyIiwiem9vbSIsImVuYWJsZWQiLCJzY3JlZW5Db29yZCIsInByb2plY3QiLCJ4IiwieSIsImxheWVyc0ZvckRlY2siLCJtYXBTdHlsZSIsIm1hcGJveEFwaUFjY2Vzc1Rva2VuIiwibWFwYm94QXBpVXJsIiwibWFza1BvbHlnb24iLCJkZWNrR2xMYXllcnMiLCJkZWNrR2xQcm9wcyIsImxlbmd0aCIsImRhdGFMYXllcnMiLCJzbGljZSIsInJldmVyc2UiLCJyZWR1Y2UiLCJvdmVybGF5cyIsImxheWVyQ2FsbGJhY2tzIiwib25TZXRMYXllckRvbWFpbiIsInZhbCIsIl9vbkxheWVyU2V0RG9tYWluIiwibGF5ZXJPdmVybGF5IiwiY29uY2F0IiwibGF5ZXJzT25Ub3AiLCJwdXNoIiwiU29saWRQb2x5Z29uTGF5ZXIiLCJNQVNLX0xBWUVSX0lEIiwib3BlcmF0aW9uIiwiT1BFUkFUSU9OIiwiTUFTSyIsImdldEZpbGxDb2xvciIsInZpc2libGVMYXllckdyb3VwcyIsIlRocmVlREJ1aWxkaW5nTGF5ZXIiLCJ0aHJlZURCdWlsZGluZ0NvbG9yIiwidXBkYXRlVHJpZ2dlcnMiLCJfb25WaWV3cG9ydENoYW5nZSIsIl9vbkJlZm9yZVJlbmRlciIsIm9uTGF5ZXJIb3ZlciIsIl9vbkRlY2tFcnJvciIsImNvbXAiLCJkZWNrIiwiX29uRGVja0luaXRpYWxpemVkIiwibWFwYm94TGF5ZXJzIiwibWFwYm94TGF5ZXJzU2VsZWN0b3IiLCJPYmplY3QiLCJrZXlzIiwiaXNTdHlsZUxvYWRlZCIsIk1hcENvbXBvbmVudCIsIm1hcENvbnRyb2xzIiwibG9jYWxlIiwiZWRpdG9yIiwibGF5ZXJzRm9yRGVja1NlbGVjdG9yIiwibWFwUHJvcHMiLCJwcmVzZXJ2ZURyYXdpbmdCdWZmZXIiLCJ0cmFuc2Zvcm1SZXF1ZXN0IiwiaXNFZGl0IiwibWFwRHJhdyIsImFjdGl2ZSIsImhhc0dlb2NvZGVyTGF5ZXIiLCJmaW5kIiwibCIsIkdFT0NPREVSX0xBWUVSX0lEIiwiaXNTcGxpdCIsIkJvb2xlYW4iLCJMT0NBTEVfQ09ERVMiLCJkcmFnUm90YXRlIiwicmVhZE9ubHkiLCJzY2FsZSIsImdlb2NvZGVyIiwidG9nZ2xlUGVyc3BlY3RpdmUiLCJ0b2dnbGVTcGxpdE1hcCIsIl9oYW5kbGVNYXBUb2dnbGVMYXllciIsIl90b2dnbGVNYXBDb250cm9sIiwic2V0RWRpdG9yTW9kZSIsInNldExvY2FsZSIsInRvZ2dsZUVkaXRvclZpc2liaWxpdHkiLCJfc2V0TWFwYm94TWFwIiwiYm90dG9tTWFwU3R5bGUiLCJ1bmRlZmluZWQiLCJvbk1vdXNlTW92ZSIsIl9yZW5kZXJEZWNrT3ZlcmxheSIsIl9yZW5kZXJNYXBib3hPdmVybGF5cyIsInBvbHlnb25GaWx0ZXJzIiwiZGVsZXRlRmVhdHVyZSIsInNldFNlbGVjdGVkRmVhdHVyZSIsInNldEZlYXR1cmVzIiwic2V0UG9seWdvbkZpbHRlckxheWVyIiwidmlzaWJsZSIsInRvcE1hcFN0eWxlIiwiX3JlbmRlck1hcFBvcG92ZXIiLCJnbG9iZSIsIl9yZW5kZXJNYXAiLCJDb21wb25lbnQiLCJQcm9wVHlwZXMiLCJvYmplY3QiLCJpc1JlcXVpcmVkIiwic3RyaW5nIiwiYXJyYXlPZiIsImFueSIsImJvb2wiLCJvbk1hcFRvZ2dsZUxheWVyIiwiZnVuYyIsIm51bWJlciIsIk1hcGJveEdMTWFwIiwiZGlzcGxheU5hbWUiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQXFCQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFHQTs7QUFDQTs7QUFDQTs7QUFFQTs7QUFHQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFRQTs7QUFDQTs7QUFPQTs7QUFDQTs7QUFDQTs7Ozs7Ozs7OztBQUVBO0FBQ0EsSUFBTUEsU0FBUyxHQUFHO0FBQ2hCQyxFQUFBQSxTQUFTLEVBQUU7QUFDVEMsSUFBQUEsT0FBTyxFQUFFLGNBREE7QUFFVEMsSUFBQUEsUUFBUSxFQUFFLFVBRkQ7QUFHVEMsSUFBQUEsS0FBSyxFQUFFLE1BSEU7QUFJVEMsSUFBQUEsTUFBTSxFQUFFO0FBSkMsR0FESztBQU9oQkMsRUFBQUEsR0FBRyxFQUFFO0FBQ0hILElBQUFBLFFBQVEsRUFBRSxVQURQO0FBRUhHLElBQUFB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LFlBQVksQ0FBQzZNLFdBQWIsR0FBMkIsY0FBM0I7QUFFQSxTQUFPN00sWUFBUDtBQUNEIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IChjKSAyMDIyIFViZXIgVGVjaG5vbG9naWVzLCBJbmMuXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuLy8gb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbFxuLy8gaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0c1xuLy8gdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuLy8gY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG4vLyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy9cbi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluXG4vLyBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vXG4vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4vLyBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbi8vIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuLy8gQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuLy8gTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbi8vIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU5cbi8vIFRIRSBTT0ZUV0FSRS5cblxuLy8gbGlicmFyaWVzXG5pbXBvcnQgUmVhY3QsIHtDb21wb25lbnQsIGNyZWF0ZVJlZn0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJztcbmltcG9ydCBNYXBib3hHTE1hcCBmcm9tICdyZWFjdC1tYXAtZ2wnO1xuaW1wb3J0IERlY2tHTCBmcm9tICdAZGVjay5nbC9yZWFjdCc7XG5pbXBvcnQge2NyZWF0ZVNlbGVjdG9yfSBmcm9tICdyZXNlbGVjdCc7XG5pbXBvcnQge09QRVJBVElPTn0gZnJvbSAnQGRlY2suZ2wvY29yZSc7XG5pbXBvcnQge1NvbGlkUG9seWdvbkxheWVyfSBmcm9tICdAZGVjay5nbC9sYXllcnMnO1xuaW1wb3J0IFdlYk1lcmNhdG9yVmlld3BvcnQgZnJvbSAndmlld3BvcnQtbWVyY2F0b3ItcHJvamVjdCc7XG5pbXBvcnQge2Vycm9yTm90aWZpY2F0aW9ufSBmcm9tICd1dGlscy9ub3RpZmljYXRpb25zLXV0aWxzJztcblxuLy8gY29tcG9uZW50c1xuaW1wb3J0IE1hcFBvcG92ZXJGYWN0b3J5IGZyb20gJ2NvbXBvbmVudHMvbWFwL21hcC1wb3BvdmVyJztcbmltcG9ydCBNYXBDb250cm9sRmFjdG9yeSBmcm9tICdjb21wb25lbnRzL21hcC9tYXAtY29udHJvbCc7XG5pbXBvcnQge1N0eWxlZE1hcENvbnRhaW5lciwgU3R5bGVkQXR0cmJ1dGlvbn0gZnJvbSAnY29tcG9uZW50cy9jb21tb24vc3R5bGVkLWNvbXBvbmVudHMnO1xuXG5pbXBvcnQgRWRpdG9yRmFjdG9yeSBmcm9tICcuL2VkaXRvci9lZGl0b3InO1xuXG4vLyB1dGlsc1xuaW1wb3J0IHtnZW5lcmF0ZU1hcGJveExheWVycywgdXBkYXRlTWFwYm94TGF5ZXJzfSBmcm9tICdsYXllcnMvbWFwYm94LXV0aWxzJztcbmltcG9ydCB7c2V0TGF5ZXJCbGVuZGluZ30gZnJvbSAndXRpbHMvZ2wtdXRpbHMnO1xuaW1wb3J0IHt0cmFuc2Zvcm1SZXF1ZXN0fSBmcm9tICd1dGlscy9tYXAtc3R5bGUtdXRpbHMvbWFwYm94LXV0aWxzJztcbmltcG9ydCB7XG4gIGdldExheWVySG92ZXJQcm9wLFxuICByZW5kZXJEZWNrR2xMYXllcixcbiAgcHJlcGFyZUxheWVyc1RvUmVuZGVyLFxuICBwcmVwYXJlTGF5ZXJzRm9yRGVja1xufSBmcm9tICd1dGlscy9sYXllci11dGlscyc7XG5cbi8vIGRlZmF1bHQtc2V0dGluZ3NcbmltcG9ydCBUaHJlZURCdWlsZGluZ0xheWVyIGZyb20gJ2RlY2tnbC1sYXllcnMvM2QtYnVpbGRpbmctbGF5ZXIvM2QtYnVpbGRpbmctbGF5ZXInO1xuaW1wb3J0IHtcbiAgRklMVEVSX1RZUEVTLFxuICBHRU9DT0RFUl9MQVlFUl9JRCxcbiAgTUFTS19MQVlFUl9JRCxcbiAgVEhST1RUTEVfTk9USUZJQ0FUSU9OX1RJTUVcbn0gZnJvbSAnY29uc3RhbnRzL2RlZmF1bHQtc2V0dGluZ3MnO1xuXG5pbXBvcnQgRXJyb3JCb3VuZGFyeSBmcm9tICdjb21wb25lbnRzL2NvbW1vbi9lcnJvci1ib3VuZGFyeSc7XG5pbXBvcnQge29ic2VydmVEaW1lbnNpb25zLCB1bm9ic2VydmVEaW1lbnNpb25zfSBmcm9tICcuLi91dGlscy9vYnNlcnZlLWRpbWVuc2lvbnMnO1xuaW1wb3J0IHtMT0NBTEVfQ09ERVN9IGZyb20gJ2xvY2FsaXphdGlvbi9sb2NhbGVzJztcblxuLyoqIEB0eXBlIHt7W2tleTogc3RyaW5nXTogUmVhY3QuQ1NTUHJvcGVydGllc319ICovXG5jb25zdCBNQVBfU1RZTEUgPSB7XG4gIGNvbnRhaW5lcjoge1xuICAgIGRpc3BsYXk6ICdpbmxpbmUtYmxvY2snLFxuICAgIHBvc2l0aW9uOiAncmVsYXRpdmUnLFxuICAgIHdpZHRoOiAnMTAwJScsXG4gICAgaGVpZ2h0OiAnMTAwJSdcbiAgfSxcbiAgdG9wOiB7XG4gICAgcG9zaXRpb246ICdhYnNvbHV0ZScsXG4gICAgdG9wOiAnMHB4JyxcbiAgICBwb2ludGVyRXZlbnRzOiAnbm9uZScsXG4gICAgd2lkdGg6ICcxMDAlJyxcbiAgICBoZWlnaHQ6ICcxMDAlJ1xuICB9XG59O1xuXG5jb25zdCBNQVBCT1hHTF9TVFlMRV9VUERBVEUgPSAnc3R5bGUubG9hZCc7XG5jb25zdCBNQVBCT1hHTF9SRU5ERVIgPSAncmVuZGVyJztcbmNvbnN0IFRSQU5TSVRJT05fRFVSQVRJT04gPSAwO1xuXG5leHBvcnQgY29uc3QgQXR0cmlidXRpb24gPSAoKSA9PiAoXG4gIDxTdHlsZWRBdHRyYnV0aW9uPlxuICAgIDxkaXYgY2xhc3NOYW1lPVwiYXR0cml0aW9uLWxvZ29cIj5cbiAgICAgIEJhc2VtYXAgYnk6XG4gICAgICA8YVxuICAgICAgICBjbGFzc05hbWU9XCJtYXBib3hnbC1jdHJsLWxvZ29cIlxuICAgICAgICB0YXJnZXQ9XCJfYmxhbmtcIlxuICAgICAgICByZWw9XCJub29wZW5lciBub3JlZmVycmVyXCJcbiAgICAgICAgaHJlZj1cImh0dHBzOi8vd3d3Lm1hcGJveC5jb20vXCJcbiAgICAgICAgYXJpYS1sYWJlbD1cIk1hcGJveCBsb2dvXCJcbiAgICAgIC8+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzc05hbWU9XCJhdHRyaXRpb24tbGlua1wiPlxuICAgICAgPGEgaHJlZj1cImh0dHBzOi8va2VwbGVyLmdsL3BvbGljeS9cIiB0YXJnZXQ9XCJfYmxhbmtcIiByZWw9XCJub29wZW5lciBub3JlZmVycmVyXCI+XG4gICAgICAgIMKpIGtlcGxlci5nbCB8eycgJ31cbiAgICAgIDwvYT5cbiAgICAgIDxhIGhyZWY9XCJodHRwczovL3d3dy5tYXBib3guY29tL2Fib3V0L21hcHMvXCIgdGFyZ2V0PVwiX2JsYW5rXCIgcmVsPVwibm9vcGVuZXIgbm9yZWZlcnJlclwiPlxuICAgICAgICDCqSBNYXBib3ggfHsnICd9XG4gICAgICA8L2E+XG4gICAgICA8YSBocmVmPVwiaHR0cDovL3d3dy5vcGVuc3RyZWV0bWFwLm9yZy9jb3B5cmlnaHRcIiB0YXJnZXQ9XCJfYmxhbmtcIiByZWw9XCJub29wZW5lciBub3JlZmVycmVyXCI+XG4gICAgICAgIMKpIE9wZW5TdHJlZXRNYXAgfHsnICd9XG4gICAgICA8L2E+XG4gICAgICA8YSBocmVmPVwiaHR0cHM6Ly93d3cubWFwYm94LmNvbS9tYXAtZmVlZGJhY2svXCIgdGFyZ2V0PVwiX2JsYW5rXCIgcmVsPVwibm9vcGVuZXIgbm9yZWZlcnJlclwiPlxuICAgICAgICA8c3Ryb25nPkltcHJvdmUgdGhpcyBtYXA8L3N0cm9uZz5cbiAgICAgIDwvYT5cbiAgICA8L2Rpdj5cbiAgPC9TdHlsZWRBdHRyYnV0aW9uPlxuKTtcblxuTWFwQ29udGFpbmVyRmFjdG9yeS5kZXBzID0gW01hcFBvcG92ZXJGYWN0b3J5LCBNYXBDb250cm9sRmFjdG9yeSwgRWRpdG9yRmFjdG9yeV07XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIE1hcENvbnRhaW5lckZhY3RvcnkoTWFwUG9wb3ZlciwgTWFwQ29udHJvbCwgRWRpdG9yKSB7XG4gIGNsYXNzIE1hcENvbnRhaW5lciBleHRlbmRzIENvbXBvbmVudCB7XG4gICAgc3RhdGljIHByb3BUeXBlcyA9IHtcbiAgICAgIC8vIHJlcXVpcmVkXG4gICAgICBkYXRhc2V0czogUHJvcFR5cGVzLm9iamVjdCxcbiAgICAgIGludGVyYWN0aW9uQ29uZmlnOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gICAgICBsYXllckJsZW5kaW5nOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gICAgICBsYXllck9yZGVyOiBQcm9wVHlwZXMuYXJyYXlPZihQcm9wVHlwZXMuYW55KS5pc1JlcXVpcmVkLFxuICAgICAgbGF5ZXJEYXRhOiBQcm9wVHlwZXMuYXJyYXlPZihQcm9wVHlwZXMuYW55KS5pc1JlcXVpcmVkLFxuICAgICAgbGF5ZXJzOiBQcm9wVHlwZXMuYXJyYXlPZihQcm9wVHlwZXMuYW55KS5pc1JlcXVpcmVkLFxuICAgICAgZmlsdGVyczogUHJvcFR5cGVzLmFycmF5T2YoUHJvcFR5cGVzLmFueSkuaXNSZXF1aXJlZCxcbiAgICAgIG1hcFN0YXRlOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gICAgICBtYXBDb250cm9sczogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICAgICAgbWFwU3R5bGU6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgICAgIG1vdXNlUG9zOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gICAgICBtYXBib3hBcGlBY2Nlc3NUb2tlbjogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICAgICAgbWFwYm94QXBpVXJsOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgICAgdmlzU3RhdGVBY3Rpb25zOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gICAgICBtYXBTdGF0ZUFjdGlvbnM6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgICAgIHVpU3RhdGVBY3Rpb25zOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG5cbiAgICAgIC8vIG9wdGlvbmFsXG4gICAgICBwcmltYXJ5OiBQcm9wVHlwZXMuYm9vbCwgLy8gcHJpbWFyeSBvbmUgd2lsbCBiZSByZXBvcnRpbmcgaXRzIHNpemUgdG8gYXBwU3RhdGVcbiAgICAgIHJlYWRPbmx5OiBQcm9wVHlwZXMuYm9vbCxcbiAgICAgIGlzRXhwb3J0OiBQcm9wVHlwZXMuYm9vbCxcbiAgICAgIGNsaWNrZWQ6IFByb3BUeXBlcy5vYmplY3QsXG4gICAgICBob3ZlckluZm86IFByb3BUeXBlcy5vYmplY3QsXG4gICAgICBtYXBMYXllcnM6IFByb3BUeXBlcy5vYmplY3QsXG4gICAgICBvbk1hcFRvZ2dsZUxheWVyOiBQcm9wVHlwZXMuZnVuYyxcbiAgICAgIG9uTWFwU3R5bGVMb2FkZWQ6IFByb3BUeXBlcy5mdW5jLFxuICAgICAgb25NYXBSZW5kZXI6IFByb3BUeXBlcy5mdW5jLFxuICAgICAgZ2V0TWFwYm94UmVmOiBQcm9wVHlwZXMuZnVuYyxcbiAgICAgIGluZGV4OiBQcm9wVHlwZXMubnVtYmVyXG4gICAgfTtcblxuICAgIHN0YXRpYyBkZWZhdWx0UHJvcHMgPSB7XG4gICAgICBNYXBDb21wb25lbnQ6IE1hcGJveEdMTWFwLFxuICAgICAgZGVja0dsUHJvcHM6IHt9LFxuICAgICAgaW5kZXg6IDAsXG4gICAgICBwcmltYXJ5OiB0cnVlXG4gICAgfTtcblxuICAgIGNvbnN0cnVjdG9yKHByb3BzKSB7XG4gICAgICBzdXBlcihwcm9wcyk7XG5cbiAgICAgIHRoaXMucHJldmlvdXNMYXllcnMgPSB7XG4gICAgICAgIC8vIFtsYXllcnMuaWRdOiBtYXBib3hMYXllckNvbmZpZ1xuICAgICAgfTtcblxuICAgICAgdGhpcy5fZGVjayA9IG51bGw7XG4gICAgICB0aGlzLl9yZWYgPSBjcmVhdGVSZWYoKTtcbiAgICB9XG5cbiAgICBjb21wb25lbnREaWRNb3VudCgpIHtcbiAgICAgIG9ic2VydmVEaW1lbnNpb25zKHRoaXMuX3JlZi5jdXJyZW50LCB0aGlzLl9oYW5kbGVSZXNpemUpO1xuICAgIH1cblxuICAgIGNvbXBvbmVudFdpbGxVbm1vdW50KCkge1xuICAgICAgLy8gdW5iaW5kIG1hcGJveGdsIGV2ZW50IGxpc3RlbmVyXG4gICAgICBpZiAodGhpcy5fbWFwKSB7XG4gICAgICAgIHRoaXMuX21hcC5vZmYoTUFQQk9YR0xfU1RZTEVfVVBEQVRFKTtcbiAgICAgICAgdGhpcy5fbWFwLm9mZihNQVBCT1hHTF9SRU5ERVIpO1xuICAgICAgfVxuICAgICAgdW5vYnNlcnZlRGltZW5zaW9ucyh0aGlzLl9yZWYuY3VycmVudCk7XG4gICAgfVxuXG4gICAgX2hhbmRsZVJlc2l6ZSA9IGRpbWVuc2lvbnMgPT4ge1xuICAgICAgY29uc3Qge3ByaW1hcnksIGlzRXhwb3J0fSA9IHRoaXMucHJvcHM7XG4gICAgICBpZiAocHJpbWFyeSkge1xuICAgICAgICBjb25zdCB7bWFwU3RhdGVBY3Rpb25zfSA9IHRoaXMucHJvcHM7XG4gICAgICAgIGlmICghaXNFeHBvcnQgJiYgZGltZW5zaW9ucyAmJiBkaW1lbnNpb25zLndpZHRoID4gMCAmJiBkaW1lbnNpb25zLmhlaWdodCA+IDApIHtcbiAgICAgICAgICBtYXBTdGF0ZUFjdGlvbnMudXBkYXRlTWFwKGRpbWVuc2lvbnMpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfTtcblxuICAgIGxheWVyc1NlbGVjdG9yID0gcHJvcHMgPT4gcHJvcHMubGF5ZXJzO1xuICAgIGxheWVyRGF0YVNlbGVjdG9yID0gcHJvcHMgPT4gcHJvcHMubGF5ZXJEYXRhO1xuICAgIG1hcExheWVyc1NlbGVjdG9yID0gcHJvcHMgPT4gcHJvcHMubWFwTGF5ZXJzO1xuICAgIGxheWVyT3JkZXJTZWxlY3RvciA9IHByb3BzID0+IHByb3BzLmxheWVyT3JkZXI7XG4gICAgbGF5ZXJzVG9SZW5kZXJTZWxlY3RvciA9IGNyZWF0ZVNlbGVjdG9yKFxuICAgICAgdGhpcy5sYXllcnNTZWxlY3RvcixcbiAgICAgIHRoaXMubGF5ZXJEYXRhU2VsZWN0b3IsXG4gICAgICB0aGlzLm1hcExheWVyc1NlbGVjdG9yLFxuICAgICAgcHJlcGFyZUxheWVyc1RvUmVuZGVyXG4gICAgKTtcbiAgICBsYXllcnNGb3JEZWNrU2VsZWN0b3IgPSBjcmVhdGVTZWxlY3RvcihcbiAgICAgIHRoaXMubGF5ZXJzU2VsZWN0b3IsXG4gICAgICB0aGlzLmxheWVyRGF0YVNlbGVjdG9yLFxuICAgICAgcHJlcGFyZUxheWVyc0ZvckRlY2tcbiAgICApO1xuICAgIGZpbHRlcnNTZWxlY3RvciA9IHByb3BzID0+IHByb3BzLmZpbHRlcnM7XG4gICAgcG9seWdvbkZpbHRlcnMgPSBjcmVhdGVTZWxlY3Rvcih0aGlzLmZpbHRlcnNTZWxlY3RvciwgZmlsdGVycyA9PlxuICAgICAgZmlsdGVycy5maWx0ZXIoZiA9PiBmLnR5cGUgPT09IEZJTFRFUl9UWVBFUy5wb2x5Z29uKVxuICAgICk7XG5cbiAgICBtYXBib3hMYXllcnNTZWxlY3RvciA9IGNyZWF0ZVNlbGVjdG9yKFxuICAgICAgdGhpcy5sYXllcnNTZWxlY3RvcixcbiAgICAgIHRoaXMubGF5ZXJEYXRhU2VsZWN0b3IsXG4gICAgICB0aGlzLmxheWVyT3JkZXJTZWxlY3RvcixcbiAgICAgIHRoaXMubGF5ZXJzVG9SZW5kZXJTZWxlY3RvcixcbiAgICAgIGdlbmVyYXRlTWFwYm94TGF5ZXJzXG4gICAgKTtcblxuICAgIC8qIGNvbXBvbmVudCBwcml2YXRlIGZ1bmN0aW9ucyAqL1xuICAgIF9vbkNsb3NlTWFwUG9wb3ZlciA9ICgpID0+IHtcbiAgICAgIHRoaXMucHJvcHMudmlzU3RhdGVBY3Rpb25zLm9uTGF5ZXJDbGljayhudWxsKTtcbiAgICB9O1xuXG4gICAgX29uTGF5ZXJTZXREb21haW4gPSAoaWR4LCBjb2xvckRvbWFpbikgPT4ge1xuICAgICAgdGhpcy5wcm9wcy52aXNTdGF0ZUFjdGlvbnMubGF5ZXJDb25maWdDaGFuZ2UodGhpcy5wcm9wcy5sYXllcnNbaWR4XSwge1xuICAgICAgICBjb2xvckRvbWFpblxuICAgICAgfSk7XG4gICAgfTtcblxuICAgIF9oYW5kbGVNYXBUb2dnbGVMYXllciA9IGxheWVySWQgPT4ge1xuICAgICAgY29uc3Qge2luZGV4OiBtYXBJbmRleCA9IDAsIHZpc1N0YXRlQWN0aW9uc30gPSB0aGlzLnByb3BzO1xuICAgICAgdmlzU3RhdGVBY3Rpb25zLnRvZ2dsZUxheWVyRm9yTWFwKG1hcEluZGV4LCBsYXllcklkKTtcbiAgICB9O1xuXG4gICAgX29uTWFwYm94U3R5bGVVcGRhdGUgPSAoKSA9PiB7XG4gICAgICAvLyBmb3JjZSByZWZyZXNoIG1hcGJveGdsIGxheWVyc1xuICAgICAgdGhpcy5wcmV2aW91c0xheWVycyA9IHt9O1xuICAgICAgdGhpcy5fdXBkYXRlTWFwYm94TGF5ZXJzKCk7XG5cbiAgICAgIGlmICh0eXBlb2YgdGhpcy5wcm9wcy5vbk1hcFN0eWxlTG9hZGVkID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHRoaXMucHJvcHMub25NYXBTdHlsZUxvYWRlZCh0aGlzLl9tYXApO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBfc2V0TWFwYm94TWFwID0gbWFwYm94ID0+IHtcbiAgICAgIGlmICghdGhpcy5fbWFwICYmIG1hcGJveCkge1xuICAgICAgICB0aGlzLl9tYXAgPSBtYXBib3guZ2V0TWFwKCk7XG4gICAgICAgIC8vIGkgbm90aWNlZCBpbiBjZXJ0YWluIGNvbnRleHQgd2UgZG9uJ3QgYWNjZXNzIHRoZSBhY3R1YWwgbWFwIGVsZW1lbnRcbiAgICAgICAgaWYgKCF0aGlzLl9tYXApIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgLy8gYmluZCBtYXBib3hnbCBldmVudCBsaXN0ZW5lclxuICAgICAgICB0aGlzLl9tYXAub24oTUFQQk9YR0xfU1RZTEVfVVBEQVRFLCB0aGlzLl9vbk1hcGJveFN0eWxlVXBkYXRlKTtcblxuICAgICAgICB0aGlzLl9tYXAub24oTUFQQk9YR0xfUkVOREVSLCAoKSA9PiB7XG4gICAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnByb3BzLm9uTWFwUmVuZGVyID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICB0aGlzLnByb3BzLm9uTWFwUmVuZGVyKHRoaXMuX21hcCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMucHJvcHMuZ2V0TWFwYm94UmVmKSB7XG4gICAgICAgIC8vIFRoZSBwYXJlbnQgY29tcG9uZW50IGNhbiBnYWluIGFjY2VzcyB0byBvdXIgTWFwYm94R2xNYXAgYnlcbiAgICAgICAgLy8gcHJvdmlkaW5nIHRoaXMgY2FsbGJhY2suIE5vdGUgdGhhdCAnbWFwYm94JyB3aWxsIGJlIG51bGwgd2hlbiB0aGVcbiAgICAgICAgLy8gcmVmIGlzIHVuc2V0IChlLmcuIHdoZW4gYSBzcGxpdCBtYXAgaXMgY2xvc2VkKS5cbiAgICAgICAgdGhpcy5wcm9wcy5nZXRNYXBib3hSZWYobWFwYm94LCB0aGlzLnByb3BzLmluZGV4KTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgX29uRGVja0luaXRpYWxpemVkKGdsKSB7XG4gICAgICBpZiAodGhpcy5wcm9wcy5vbkRlY2tJbml0aWFsaXplZCkge1xuICAgICAgICB0aGlzLnByb3BzLm9uRGVja0luaXRpYWxpemVkKHRoaXMuX2RlY2ssIGdsKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBfb25CZWZvcmVSZW5kZXIgPSAoe2dsfSkgPT4ge1xuICAgICAgc2V0TGF5ZXJCbGVuZGluZyhnbCwgdGhpcy5wcm9wcy5sYXllckJsZW5kaW5nKTtcbiAgICB9O1xuXG4gICAgX29uRGVja0Vycm9yID0gKGVycm9yLCBsYXllcikgPT4ge1xuICAgICAgY29uc3QgZXJyb3JNZXNzYWdlID0gYEFuIGVycm9yIGluIGRlY2suZ2w6ICR7ZXJyb3IubWVzc2FnZX0gaW4gJHtsYXllci5pZH1gO1xuICAgICAgY29uc3Qgbm90aWZpY2F0aW9uSWQgPSBgJHtsYXllci5pZH0tJHtlcnJvci5tZXNzYWdlfWA7XG5cbiAgICAgIC8vIFRocm90dGxlIGVycm9yIG5vdGlmaWNhdGlvbnMsIGFzIFJlYWN0IGRvZXNuJ3QgbGlrZSB0b28gbWFueSBzdGF0ZSBjaGFuZ2VzIGZyb20gaGVyZS5cbiAgICAgIHRoaXMuX2RlY2tHTEVycm9yc0VsYXBzZWQgPSB0aGlzLl9kZWNrR0xFcnJvcnNFbGFwc2VkIHx8IHt9O1xuICAgICAgY29uc3QgbGFzdFNob3duID0gdGhpcy5fZGVja0dMRXJyb3JzRWxhcHNlZFtub3RpZmljYXRpb25JZF07XG4gICAgICBpZiAoIWxhc3RTaG93biB8fCBsYXN0U2hvd24gPCBEYXRlLm5vdygpIC0gVEhST1RUTEVfTk9USUZJQ0FUSU9OX1RJTUUpIHtcbiAgICAgICAgdGhpcy5fZGVja0dMRXJyb3JzRWxhcHNlZFtub3RpZmljYXRpb25JZF0gPSBEYXRlLm5vdygpO1xuXG4gICAgICAgIC8vIENyZWF0ZSBuZXcgZXJyb3Igbm90aWZpY2F0aW9uIG9yIHVwZGF0ZSBleGlzdGluZyBvbmUgd2l0aCBzYW1lIGlkLlxuICAgICAgICAvLyBVcGRhdGUgaXMgcmVxdWlyZWQgdG8gcHJlc2VydmUgdGhlIG9yZGVyIG9mIG5vdGlmaWNhdGlvbnMgYXMgdGhleSBwcm9iYWJseSBhcmUgZ29pbmcgdG8gXCJqdW1wXCIgYmFzZWQgb24gb3JkZXIgb2YgZXJyb3JzLlxuICAgICAgICBjb25zdCB7dWlTdGF0ZUFjdGlvbnN9ID0gdGhpcy5wcm9wcztcbiAgICAgICAgdWlTdGF0ZUFjdGlvbnMuYWRkTm90aWZpY2F0aW9uKFxuICAgICAgICAgIGVycm9yTm90aWZpY2F0aW9uKHtcbiAgICAgICAgICAgIG1lc3NhZ2U6IGVycm9yTWVzc2FnZSxcbiAgICAgICAgICAgIGlkOiBub3RpZmljYXRpb25JZFxuICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIC8qIGNvbXBvbmVudCByZW5kZXIgZnVuY3Rpb25zICovXG5cbiAgICAvKiBlc2xpbnQtZGlzYWJsZSBjb21wbGV4aXR5ICovXG4gICAgX3JlbmRlck1hcFBvcG92ZXIobGF5ZXJzVG9SZW5kZXIpIHtcbiAgICAgIC8vIFRPRE86IG1vdmUgdGhpcyBpbnRvIHJlZHVjZXIgc28gaXQgY2FuIGJlIHRlc3RlZFxuICAgICAgY29uc3Qge1xuICAgICAgICBtYXBTdGF0ZSxcbiAgICAgICAgaG92ZXJJbmZvLFxuICAgICAgICBjbGlja2VkLFxuICAgICAgICBkYXRhc2V0cyxcbiAgICAgICAgaW50ZXJhY3Rpb25Db25maWcsXG4gICAgICAgIGxheWVycyxcbiAgICAgICAgbW91c2VQb3M6IHttb3VzZVBvc2l0aW9uLCBjb29yZGluYXRlLCBwaW5uZWR9XG4gICAgICB9ID0gdGhpcy5wcm9wcztcblxuICAgICAgaWYgKCFtb3VzZVBvc2l0aW9uIHx8ICFpbnRlcmFjdGlvbkNvbmZpZy50b29sdGlwKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBsYXllckhvdmVyUHJvcCA9IGdldExheWVySG92ZXJQcm9wKHtcbiAgICAgICAgaW50ZXJhY3Rpb25Db25maWcsXG4gICAgICAgIGhvdmVySW5mbyxcbiAgICAgICAgbGF5ZXJzLFxuICAgICAgICBsYXllcnNUb1JlbmRlcixcbiAgICAgICAgZGF0YXNldHNcbiAgICAgIH0pO1xuXG4gICAgICBjb25zdCBjb21wYXJlTW9kZSA9IGludGVyYWN0aW9uQ29uZmlnLnRvb2x0aXAuY29uZmlnXG4gICAgICAgID8gaW50ZXJhY3Rpb25Db25maWcudG9vbHRpcC5jb25maWcuY29tcGFyZU1vZGVcbiAgICAgICAgOiBmYWxzZTtcblxuICAgICAgbGV0IHBpbm5lZFBvc2l0aW9uID0ge307XG4gICAgICBsZXQgbGF5ZXJQaW5uZWRQcm9wID0gbnVsbDtcbiAgICAgIGlmIChwaW5uZWQgfHwgY2xpY2tlZCkge1xuICAgICAgICAvLyBwcm9qZWN0IGxuZ2xhdCB0byBzY3JlZW4gc28gdGhhdCB0b29sdGlwIGZvbGxvd3MgdGhlIG9iamVjdCBvbiB6b29tXG4gICAgICAgIGNvbnN0IHZpZXdwb3J0ID0gbmV3IFdlYk1lcmNhdG9yVmlld3BvcnQobWFwU3RhdGUpO1xuICAgICAgICBjb25zdCBsbmdMYXQgPSBjbGlja2VkID8gY2xpY2tlZC5sbmdMYXQgOiBwaW5uZWQuY29vcmRpbmF0ZTtcbiAgICAgICAgcGlubmVkUG9zaXRpb24gPSB0aGlzLl9nZXRIb3ZlclhZKHZpZXdwb3J0LCBsbmdMYXQpO1xuICAgICAgICBsYXllclBpbm5lZFByb3AgPSBnZXRMYXllckhvdmVyUHJvcCh7XG4gICAgICAgICAgaW50ZXJhY3Rpb25Db25maWcsXG4gICAgICAgICAgaG92ZXJJbmZvOiBjbGlja2VkLFxuICAgICAgICAgIGxheWVycyxcbiAgICAgICAgICBsYXllcnNUb1JlbmRlcixcbiAgICAgICAgICBkYXRhc2V0c1xuICAgICAgICB9KTtcbiAgICAgICAgaWYgKGxheWVySG92ZXJQcm9wICYmIGxheWVyUGlubmVkUHJvcCkge1xuICAgICAgICAgIGxheWVySG92ZXJQcm9wLnByaW1hcnlEYXRhID0gbGF5ZXJQaW5uZWRQcm9wLmRhdGE7XG4gICAgICAgICAgbGF5ZXJIb3ZlclByb3AuY29tcGFyZVR5cGUgPSBpbnRlcmFjdGlvbkNvbmZpZy50b29sdGlwLmNvbmZpZy5jb21wYXJlVHlwZTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBjb25zdCBjb21tb25Qcm9wID0ge1xuICAgICAgICBvbkNsb3NlOiB0aGlzLl9vbkNsb3NlTWFwUG9wb3ZlcixcbiAgICAgICAgem9vbTogbWFwU3RhdGUuem9vbSxcbiAgICAgICAgY29udGFpbmVyOiB0aGlzLl9yZWYuY3VycmVudFxuICAgICAgfTtcblxuICAgICAgcmV0dXJuIChcbiAgICAgICAgPEVycm9yQm91bmRhcnk+XG4gICAgICAgICAge2xheWVyUGlubmVkUHJvcCAmJiAoXG4gICAgICAgICAgICA8TWFwUG9wb3ZlclxuICAgICAgICAgICAgICB7Li4ucGlubmVkUG9zaXRpb259XG4gICAgICAgICAgICAgIHsuLi5jb21tb25Qcm9wfVxuICAgICAgICAgICAgICBsYXllckhvdmVyUHJvcD17bGF5ZXJQaW5uZWRQcm9wfVxuICAgICAgICAgICAgICBjb29yZGluYXRlPXtpbnRlcmFjdGlvbkNvbmZpZy5jb29yZGluYXRlLmVuYWJsZWQgJiYgKHBpbm5lZCB8fCB7fSkuY29vcmRpbmF0ZX1cbiAgICAgICAgICAgICAgZnJvemVuPXt0cnVlfVxuICAgICAgICAgICAgICBpc0Jhc2U9e2NvbXBhcmVNb2RlfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICApfVxuICAgICAgICAgIHtsYXllckhvdmVyUHJvcCAmJiAoIWxheWVyUGlubmVkUHJvcCB8fCBjb21wYXJlTW9kZSkgJiYgKFxuICAgICAgICAgICAgPE1hcFBvcG92ZXJcbiAgICAgICAgICAgICAgeD17bW91c2VQb3NpdGlvblswXX1cbiAgICAgICAgICAgICAgeT17bW91c2VQb3NpdGlvblsxXX1cbiAgICAgICAgICAgICAgey4uLmNvbW1vblByb3B9XG4gICAgICAgICAgICAgIGxheWVySG92ZXJQcm9wPXtsYXllckhvdmVyUHJvcH1cbiAgICAgICAgICAgICAgZnJvemVuPXtmYWxzZX1cbiAgICAgICAgICAgICAgY29vcmRpbmF0ZT17aW50ZXJhY3Rpb25Db25maWcuY29vcmRpbmF0ZS5lbmFibGVkICYmIGNvb3JkaW5hdGV9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICl9XG4gICAgICAgIDwvRXJyb3JCb3VuZGFyeT5cbiAgICAgICk7XG4gICAgfVxuXG4gICAgLyogZXNsaW50LWVuYWJsZSBjb21wbGV4aXR5ICovXG5cbiAgICBfZ2V0SG92ZXJYWSh2aWV3cG9ydCwgbG5nTGF0KSB7XG4gICAgICBjb25zdCBzY3JlZW5Db29yZCA9ICF2aWV3cG9ydCB8fCAhbG5nTGF0ID8gbnVsbCA6IHZpZXdwb3J0LnByb2plY3QobG5nTGF0KTtcbiAgICAgIHJldHVybiBzY3JlZW5Db29yZCAmJiB7eDogc2NyZWVuQ29vcmRbMF0sIHk6IHNjcmVlbkNvb3JkWzFdfTtcbiAgICB9XG5cbiAgICBfcmVuZGVyRGVja092ZXJsYXkobGF5ZXJzRm9yRGVjaykge1xuICAgICAgY29uc3Qge1xuICAgICAgICBtYXBTdGF0ZSxcbiAgICAgICAgbWFwU3R5bGUsXG4gICAgICAgIGxheWVyRGF0YSxcbiAgICAgICAgbGF5ZXJPcmRlcixcbiAgICAgICAgbGF5ZXJzLFxuICAgICAgICB2aXNTdGF0ZUFjdGlvbnMsXG4gICAgICAgIG1hcGJveEFwaUFjY2Vzc1Rva2VuLFxuICAgICAgICBtYXBib3hBcGlVcmwsXG4gICAgICAgIG1hc2tQb2x5Z29uXG4gICAgICB9ID0gdGhpcy5wcm9wcztcblxuICAgICAgLy8gaW5pdGlhbGlzZSBsYXllcnMgZnJvbSBwcm9wcyBpZiBleGlzdHNcbiAgICAgIGxldCBkZWNrR2xMYXllcnMgPSB0aGlzLnByb3BzLmRlY2tHbFByb3BzPy5sYXllcnMgfHwgW107XG5cbiAgICAgIC8vIHdhaXQgdW50aWwgZGF0YSBpcyByZWFkeSBiZWZvcmUgcmVuZGVyIGRhdGEgbGF5ZXJzXG4gICAgICBpZiAobGF5ZXJEYXRhICYmIGxheWVyRGF0YS5sZW5ndGgpIHtcbiAgICAgICAgLy8gbGFzdCBsYXllciByZW5kZXIgZmlyc3RcbiAgICAgICAgY29uc3QgZGF0YUxheWVycyA9IGxheWVyT3JkZXJcbiAgICAgICAgICAuc2xpY2UoKVxuICAgICAgICAgIC5yZXZlcnNlKClcbiAgICAgICAgICAuZmlsdGVyKGlkeCA9PiBsYXllcnNGb3JEZWNrW2xheWVyc1tpZHhdLmlkXSlcbiAgICAgICAgICAucmVkdWNlKChvdmVybGF5cywgaWR4KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBsYXllckNhbGxiYWNrcyA9IHtcbiAgICAgICAgICAgICAgb25TZXRMYXllckRvbWFpbjogdmFsID0+IHRoaXMuX29uTGF5ZXJTZXREb21haW4oaWR4LCB2YWwpXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgY29uc3QgbGF5ZXJPdmVybGF5ID0gcmVuZGVyRGVja0dsTGF5ZXIodGhpcy5wcm9wcywgbGF5ZXJDYWxsYmFja3MsIGlkeCk7XG4gICAgICAgICAgICByZXR1cm4gb3ZlcmxheXMuY29uY2F0KGxheWVyT3ZlcmxheSB8fCBbXSk7XG4gICAgICAgICAgfSwgW10pO1xuICAgICAgICBkZWNrR2xMYXllcnMgPSBkZWNrR2xMYXllcnMuY29uY2F0KGRhdGFMYXllcnMpO1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5wcm9wcy5kZWNrR2xQcm9wcz8ubGF5ZXJzT25Ub3ApIHtcbiAgICAgICAgZGVja0dsTGF5ZXJzID0gZGVja0dsTGF5ZXJzLmNvbmNhdCh0aGlzLnByb3BzLmRlY2tHbFByb3BzLmxheWVyc09uVG9wKTtcbiAgICAgIH1cblxuICAgICAgZGVja0dsTGF5ZXJzLnB1c2goXG4gICAgICAgIG5ldyBTb2xpZFBvbHlnb25MYXllcih7XG4gICAgICAgICAgaWQ6IE1BU0tfTEFZRVJfSUQsXG4gICAgICAgICAgb3BlcmF0aW9uOiBPUEVSQVRJT04uTUFTSyxcbiAgICAgICAgICBkYXRhOiBtYXNrUG9seWdvbiA/IFt7cG9seWdvbjogbWFza1BvbHlnb259XSA6IFtdLFxuICAgICAgICAgIGdldEZpbGxDb2xvcjogWzI1NSwgMjU1LCAyNTUsIDI1NV1cbiAgICAgICAgfSlcbiAgICAgICk7XG5cbiAgICAgIGlmIChtYXBTdHlsZS52aXNpYmxlTGF5ZXJHcm91cHNbJzNkIGJ1aWxkaW5nJ10pIHtcbiAgICAgICAgZGVja0dsTGF5ZXJzLnB1c2goXG4gICAgICAgICAgbmV3IFRocmVlREJ1aWxkaW5nTGF5ZXIoe1xuICAgICAgICAgICAgaWQ6ICdfa2VwbGVyZ2xfM2QtYnVpbGRpbmcnLFxuICAgICAgICAgICAgbWFwYm94QXBpQWNjZXNzVG9rZW4sXG4gICAgICAgICAgICBtYXBib3hBcGlVcmwsXG4gICAgICAgICAgICB0aHJlZURCdWlsZGluZ0NvbG9yOiBtYXBTdHlsZS50aHJlZURCdWlsZGluZ0NvbG9yLFxuICAgICAgICAgICAgdXBkYXRlVHJpZ2dlcnM6IHtcbiAgICAgICAgICAgICAgZ2V0RmlsbENvbG9yOiBtYXBTdHlsZS50aHJlZURCdWlsZGluZ0NvbG9yXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIChcbiAgICAgICAgPERlY2tHTFxuICAgICAgICAgIHsuLi50aGlzLnByb3BzLmRlY2tHbFByb3BzfVxuICAgICAgICAgIHZpZXdTdGF0ZT17bWFwU3RhdGV9XG4gICAgICAgICAgY29udHJvbGxlcj17dHJ1ZX1cbiAgICAgICAgICBvblZpZXdTdGF0ZUNoYW5nZT17KHt2aWV3U3RhdGV9KSA9PiB0aGlzLl9vblZpZXdwb3J0Q2hhbmdlKHZpZXdTdGF0ZSl9XG4gICAgICAgICAgaWQ9XCJkZWZhdWx0LWRlY2tnbC1vdmVybGF5XCJcbiAgICAgICAgICBsYXllcnM9e2RlY2tHbExheWVyc31cbiAgICAgICAgICBvbkJlZm9yZVJlbmRlcj17dGhpcy5fb25CZWZvcmVSZW5kZXJ9XG4gICAgICAgICAgb25Ib3Zlcj17dmlzU3RhdGVBY3Rpb25zLm9uTGF5ZXJIb3Zlcn1cbiAgICAgICAgICBvbkNsaWNrPXt2aXNTdGF0ZUFjdGlvbnMub25MYXllckNsaWNrfVxuICAgICAgICAgIG9uRXJyb3I9e3RoaXMuX29uRGVja0Vycm9yfVxuICAgICAgICAgIHJlZj17Y29tcCA9PiB7XG4gICAgICAgICAgICBpZiAoY29tcCAmJiBjb21wLmRlY2sgJiYgY29tcC5kZWNrICE9PSB0aGlzLl9kZWNrKSB7XG4gICAgICAgICAgICAgIHRoaXMuX2RlY2sgPSBjb21wLmRlY2s7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfX1cbiAgICAgICAgICBvbldlYkdMSW5pdGlhbGl6ZWQ9e2dsID0+IHRoaXMuX29uRGVja0luaXRpYWxpemVkKGdsKX1cbiAgICAgICAgLz5cbiAgICAgICk7XG4gICAgfVxuXG4gICAgX3VwZGF0ZU1hcGJveExheWVycygpIHtcbiAgICAgIGNvbnN0IG1hcGJveExheWVycyA9IHRoaXMubWFwYm94TGF5ZXJzU2VsZWN0b3IodGhpcy5wcm9wcyk7XG4gICAgICBpZiAoIU9iamVjdC5rZXlzKG1hcGJveExheWVycykubGVuZ3RoICYmICFPYmplY3Qua2V5cyh0aGlzLnByZXZpb3VzTGF5ZXJzKS5sZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICB1cGRhdGVNYXBib3hMYXllcnModGhpcy5fbWFwLCBtYXBib3hMYXllcnMsIHRoaXMucHJldmlvdXNMYXllcnMpO1xuXG4gICAgICB0aGlzLnByZXZpb3VzTGF5ZXJzID0gbWFwYm94TGF5ZXJzO1xuICAgIH1cblxuICAgIF9yZW5kZXJNYXBib3hPdmVybGF5cygpIHtcbiAgICAgIGlmICh0aGlzLl9tYXAgJiYgdGhpcy5fbWFwLmlzU3R5bGVMb2FkZWQoKSkge1xuICAgICAgICB0aGlzLl91cGRhdGVNYXBib3hMYXllcnMoKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBfb25WaWV3cG9ydENoYW5nZSA9IHZpZXdTdGF0ZSA9PiB7XG4gICAgICBjb25zdCB7d2lkdGgsIGhlaWdodCwgLi4ucmVzdFZpZXdTdGF0ZX0gPSB2aWV3U3RhdGU7XG4gICAgICBjb25zdCB7cHJpbWFyeSwgaXNFeHBvcnR9ID0gdGhpcy5wcm9wcztcbiAgICAgIC8vIHJlYWN0LW1hcC1nbCBzZW5kcyAwLDAgZGltZW5zaW9ucyBkdXJpbmcgaW5pdGlhbGl6YXRpb25cbiAgICAgIC8vIGFmdGVyIHdlIGhhdmUgcmVjZWl2ZWQgcHJvcGVyIGRpbWVuc2lvbnMgZnJvbSBvYnNlcnZlRGltZW5zaW9uc1xuICAgICAgY29uc3QgbmV4dCA9IHtcbiAgICAgICAgLi4uKHdpZHRoID4gMCAmJiBoZWlnaHQgPiAwID8gdmlld1N0YXRlIDogcmVzdFZpZXdTdGF0ZSksXG4gICAgICAgIC8vIGVuYWJsaW5nIHRyYW5zaXRpb24gaW4gdHdvIG1hcHMgbWF5IGxlYWQgdG8gZW5kbGVzcyB1cGRhdGUgbG9vcHNcbiAgICAgICAgdHJhbnNpdGlvbkR1cmF0aW9uOiBwcmltYXJ5ID8gVFJBTlNJVElPTl9EVVJBVElPTiA6IDBcbiAgICAgIH07XG4gICAgICBpZiAodHlwZW9mIHRoaXMucHJvcHMub25WaWV3U3RhdGVDaGFuZ2UgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgdGhpcy5wcm9wcy5vblZpZXdTdGF0ZUNoYW5nZShuZXh0KTtcbiAgICAgIH1cblxuICAgICAgaWYgKCFpc0V4cG9ydCkge1xuICAgICAgICB0aGlzLnByb3BzLm1hcFN0YXRlQWN0aW9ucy51cGRhdGVNYXAobmV4dCk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIF90b2dnbGVNYXBDb250cm9sID0gcGFuZWxJZCA9PiB7XG4gICAgICBjb25zdCB7aW5kZXgsIHVpU3RhdGVBY3Rpb25zfSA9IHRoaXMucHJvcHM7XG5cbiAgICAgIHVpU3RhdGVBY3Rpb25zLnRvZ2dsZU1hcENvbnRyb2wocGFuZWxJZCwgaW5kZXgpO1xuICAgIH07XG5cbiAgICAvKiBlc2xpbnQtZGlzYWJsZSBjb21wbGV4aXR5ICovXG4gICAgX3JlbmRlck1hcCgpIHtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgbWFwU3RhdGUsXG4gICAgICAgIG1hcFN0eWxlLFxuICAgICAgICBtYXBTdGF0ZUFjdGlvbnMsXG4gICAgICAgIGxheWVycyxcbiAgICAgICAgTWFwQ29tcG9uZW50LFxuICAgICAgICBkYXRhc2V0cyxcbiAgICAgICAgbWFwYm94QXBpQWNjZXNzVG9rZW4sXG4gICAgICAgIG1hcGJveEFwaVVybCxcbiAgICAgICAgbWFwQ29udHJvbHMsXG4gICAgICAgIGlzRXhwb3J0LFxuICAgICAgICBsb2NhbGUsXG4gICAgICAgIHVpU3RhdGVBY3Rpb25zLFxuICAgICAgICB2aXNTdGF0ZUFjdGlvbnMsXG4gICAgICAgIGludGVyYWN0aW9uQ29uZmlnLFxuICAgICAgICBlZGl0b3IsXG4gICAgICAgIGluZGV4LFxuICAgICAgICBwcmltYXJ5XG4gICAgICB9ID0gdGhpcy5wcm9wcztcblxuICAgICAgY29uc3QgbGF5ZXJzVG9SZW5kZXIgPSB0aGlzLmxheWVyc1RvUmVuZGVyU2VsZWN0b3IodGhpcy5wcm9wcyk7XG4gICAgICBjb25zdCBsYXllcnNGb3JEZWNrID0gdGhpcy5sYXllcnNGb3JEZWNrU2VsZWN0b3IodGhpcy5wcm9wcyk7XG5cbiAgICAgIGNvbnN0IG1hcFByb3BzID0ge1xuICAgICAgICAuLi5tYXBTdGF0ZSxcbiAgICAgICAgd2lkdGg6ICcxMDAlJyxcbiAgICAgICAgaGVpZ2h0OiAnMTAwJScsXG4gICAgICAgIHByZXNlcnZlRHJhd2luZ0J1ZmZlcjogdHJ1ZSxcbiAgICAgICAgbWFwYm94QXBpQWNjZXNzVG9rZW4sXG4gICAgICAgIG1hcGJveEFwaVVybCxcbiAgICAgICAgdHJhbnNmb3JtUmVxdWVzdFxuICAgICAgfTtcblxuICAgICAgY29uc3QgaXNFZGl0ID0gKG1hcENvbnRyb2xzLm1hcERyYXcgfHwge30pLmFjdGl2ZTtcblxuICAgICAgY29uc3QgaGFzR2VvY29kZXJMYXllciA9IGxheWVycy5maW5kKGwgPT4gbC5pZCA9PT0gR0VPQ09ERVJfTEFZRVJfSUQpO1xuICAgICAgY29uc3QgaXNTcGxpdCA9IEJvb2xlYW4obWFwU3RhdGUuaXNTcGxpdCk7XG5cbiAgICAgIHJldHVybiAoXG4gICAgICAgIDw+XG4gICAgICAgICAgPE1hcENvbnRyb2xcbiAgICAgICAgICAgIGRhdGFzZXRzPXtkYXRhc2V0c31cbiAgICAgICAgICAgIGF2YWlsYWJsZUxvY2FsZXM9e09iamVjdC5rZXlzKExPQ0FMRV9DT0RFUyl9XG4gICAgICAgICAgICBkcmFnUm90YXRlPXttYXBTdGF0ZS5kcmFnUm90YXRlfVxuICAgICAgICAgICAgaXNTcGxpdD17aXNTcGxpdH1cbiAgICAgICAgICAgIHByaW1hcnk9e3ByaW1hcnl9XG4gICAgICAgICAgICBpc0V4cG9ydD17aXNFeHBvcnR9XG4gICAgICAgICAgICBsYXllcnM9e2xheWVyc31cbiAgICAgICAgICAgIGxheWVyc1RvUmVuZGVyPXtsYXllcnNUb1JlbmRlcn1cbiAgICAgICAgICAgIG1hcEluZGV4PXtpbmRleH1cbiAgICAgICAgICAgIG1hcENvbnRyb2xzPXttYXBDb250cm9sc31cbiAgICAgICAgICAgIHJlYWRPbmx5PXt0aGlzLnByb3BzLnJlYWRPbmx5fVxuICAgICAgICAgICAgc2NhbGU9e21hcFN0YXRlLnNjYWxlIHx8IDF9XG4gICAgICAgICAgICB0b3A9e2ludGVyYWN0aW9uQ29uZmlnLmdlb2NvZGVyICYmIGludGVyYWN0aW9uQ29uZmlnLmdlb2NvZGVyLmVuYWJsZWQgPyA1MiA6IDB9XG4gICAgICAgICAgICBlZGl0b3I9e2VkaXRvcn1cbiAgICAgICAgICAgIGxvY2FsZT17bG9jYWxlfVxuICAgICAgICAgICAgb25Ub2dnbGVQZXJzcGVjdGl2ZT17bWFwU3RhdGVBY3Rpb25zLnRvZ2dsZVBlcnNwZWN0aXZlfVxuICAgICAgICAgICAgb25Ub2dnbGVTcGxpdE1hcD17bWFwU3RhdGVBY3Rpb25zLnRvZ2dsZVNwbGl0TWFwfVxuICAgICAgICAgICAgb25NYXBUb2dnbGVMYXllcj17dGhpcy5faGFuZGxlTWFwVG9nZ2xlTGF5ZXJ9XG4gICAgICAgICAgICBvblRvZ2dsZU1hcENvbnRyb2w9e3RoaXMuX3RvZ2dsZU1hcENvbnRyb2x9XG4gICAgICAgICAgICBvblNldEVkaXRvck1vZGU9e3Zpc1N0YXRlQWN0aW9ucy5zZXRFZGl0b3JNb2RlfVxuICAgICAgICAgICAgb25TZXRMb2NhbGU9e3VpU3RhdGVBY3Rpb25zLnNldExvY2FsZX1cbiAgICAgICAgICAgIG9uVG9nZ2xlRWRpdG9yVmlzaWJpbGl0eT17dmlzU3RhdGVBY3Rpb25zLnRvZ2dsZUVkaXRvclZpc2liaWxpdHl9XG4gICAgICAgICAgLz5cbiAgICAgICAgICA8TWFwQ29tcG9uZW50XG4gICAgICAgICAgICB7Li4ubWFwUHJvcHN9XG4gICAgICAgICAgICBrZXk9XCJib3R0b21cIlxuICAgICAgICAgICAgcmVmPXt0aGlzLl9zZXRNYXBib3hNYXB9XG4gICAgICAgICAgICBtYXBTdHlsZT17bWFwU3R5bGUuYm90dG9tTWFwU3R5bGV9XG4gICAgICAgICAgICBnZXRDdXJzb3I9e3RoaXMucHJvcHMuaG92ZXJJbmZvID8gKCkgPT4gJ3BvaW50ZXInIDogdW5kZWZpbmVkfVxuICAgICAgICAgICAgb25Nb3VzZU1vdmU9e3RoaXMucHJvcHMudmlzU3RhdGVBY3Rpb25zLm9uTW91c2VNb3ZlfVxuICAgICAgICAgID5cbiAgICAgICAgICAgIHt0aGlzLl9yZW5kZXJEZWNrT3ZlcmxheShsYXllcnNGb3JEZWNrKX1cbiAgICAgICAgICAgIHt0aGlzLl9yZW5kZXJNYXBib3hPdmVybGF5cygpfVxuICAgICAgICAgICAgPEVkaXRvclxuICAgICAgICAgICAgICBpbmRleD17aW5kZXh9XG4gICAgICAgICAgICAgIGRhdGFzZXRzPXtkYXRhc2V0c31cbiAgICAgICAgICAgICAgZWRpdG9yPXtlZGl0b3J9XG4gICAgICAgICAgICAgIGZpbHRlcnM9e3RoaXMucG9seWdvbkZpbHRlcnModGhpcy5wcm9wcyl9XG4gICAgICAgICAgICAgIGlzRW5hYmxlZD17aXNFZGl0fVxuICAgICAgICAgICAgICBsYXllcnM9e2xheWVyc31cbiAgICAgICAgICAgICAgbGF5ZXJzVG9SZW5kZXI9e2xheWVyc1RvUmVuZGVyfVxuICAgICAgICAgICAgICBvbkRlbGV0ZUZlYXR1cmU9e3Zpc1N0YXRlQWN0aW9ucy5kZWxldGVGZWF0dXJlfVxuICAgICAgICAgICAgICBvblNlbGVjdD17dmlzU3RhdGVBY3Rpb25zLnNldFNlbGVjdGVkRmVhdHVyZX1cbiAgICAgICAgICAgICAgb25VcGRhdGU9e3Zpc1N0YXRlQWN0aW9ucy5zZXRGZWF0dXJlc31cbiAgICAgICAgICAgICAgb25Ub2dnbGVQb2x5Z29uRmlsdGVyPXt2aXNTdGF0ZUFjdGlvbnMuc2V0UG9seWdvbkZpbHRlckxheWVyfVxuICAgICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgIHBvaW50ZXJFdmVudHM6IGlzRWRpdCA/ICdhbGwnIDogJ25vbmUnLFxuICAgICAgICAgICAgICAgIHBvc2l0aW9uOiAnYWJzb2x1dGUnLFxuICAgICAgICAgICAgICAgIGRpc3BsYXk6IGVkaXRvci52aXNpYmxlID8gJ2Jsb2NrJyA6ICdub25lJ1xuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L01hcENvbXBvbmVudD5cbiAgICAgICAgICB7bWFwU3R5bGUudG9wTWFwU3R5bGUgfHwgaGFzR2VvY29kZXJMYXllciA/IChcbiAgICAgICAgICAgIDxkaXYgc3R5bGU9e01BUF9TVFlMRS50b3B9PlxuICAgICAgICAgICAgICA8TWFwQ29tcG9uZW50IHsuLi5tYXBQcm9wc30ga2V5PVwidG9wXCIgbWFwU3R5bGU9e21hcFN0eWxlLnRvcE1hcFN0eWxlfT5cbiAgICAgICAgICAgICAgICB7dGhpcy5fcmVuZGVyRGVja092ZXJsYXkoe1tHRU9DT0RFUl9MQVlFUl9JRF06IHRydWV9KX1cbiAgICAgICAgICAgICAgPC9NYXBDb21wb25lbnQ+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICB7dGhpcy5fcmVuZGVyTWFwUG9wb3ZlcihsYXllcnNUb1JlbmRlcil9XG4gICAgICAgICAgeyFpc1NwbGl0IHx8IGluZGV4ID09PSAxID8gPEF0dHJpYnV0aW9uIC8+IDogbnVsbH1cbiAgICAgICAgPC8+XG4gICAgICApO1xuICAgIH1cblxuICAgIHJlbmRlcigpIHtcbiAgICAgIGNvbnN0IHttYXBTdGF0ZSwgbWFwU3R5bGV9ID0gdGhpcy5wcm9wcztcbiAgICAgIHJldHVybiAoXG4gICAgICAgIDxTdHlsZWRNYXBDb250YWluZXIgcmVmPXt0aGlzLl9yZWZ9IHN0eWxlPXtNQVBfU1RZTEUuY29udGFpbmVyfSBnbG9iZT17bWFwU3RhdGUuZ2xvYmV9PlxuICAgICAgICAgIHttYXBTdHlsZS5ib3R0b21NYXBTdHlsZSAmJiB0aGlzLl9yZW5kZXJNYXAoKX1cbiAgICAgICAgPC9TdHlsZWRNYXBDb250YWluZXI+XG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIE1hcENvbnRhaW5lci5kaXNwbGF5TmFtZSA9ICdNYXBDb250YWluZXInO1xuXG4gIHJldHVybiBNYXBDb250YWluZXI7XG59XG4iXX0=
@@ -189,7 +189,8 @@ function PlotContainerFactory(MapContainer, MapsLayout) {
189
189
  var _this$props = this.props,
190
190
  exportImageSetting = _this$props.exportImageSetting,
191
191
  mapFields = _this$props.mapFields,
192
- splitMaps = _this$props.splitMaps;
192
+ splitMaps = _this$props.splitMaps,
193
+ maskPolygon = _this$props.maskPolygon;
193
194
  var _exportImageSetting$i = exportImageSetting.imageSize,
194
195
  imageSize = _exportImageSetting$i === void 0 ? {} : _exportImageSetting$i,
195
196
  legend = exportImageSetting.legend;
@@ -242,7 +243,8 @@ function PlotContainerFactory(MapContainer, MapsLayout) {
242
243
  MapComponent: _reactMapGl.StaticMap,
243
244
  onMapRender: this._onMapRender,
244
245
  isExport: true,
245
- deckGlProps: deckGlProps
246
+ deckGlProps: deckGlProps,
247
+ maskPolygon: maskPolygon
246
248
  });
247
249
 
248
250
  var mapContainers = !isSplit ? /*#__PURE__*/_react["default"].createElement(MapContainer, (0, _extends2["default"])({
@@ -272,4 +274,4 @@ function PlotContainerFactory(MapContainer, MapsLayout) {
272
274
  PlotContainer.propsTypes = propTypes;
273
275
  return PlotContainer;
274
276
  }
275
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb21wb25lbnRzL3Bsb3QtY29udGFpbmVyLmpzIl0sIm5hbWVzIjpbIkNMQVNTX0ZJTFRFUiIsIkRPTV9GSUxURVJfRlVOQyIsIm5vZGUiLCJpbmNsdWRlcyIsImNsYXNzTmFtZSIsIk9VVF9PRl9TQ1JFRU5fUE9TSVRJT04iLCJwcm9wVHlwZXMiLCJ3aWR0aCIsIlByb3BUeXBlcyIsIm51bWJlciIsImlzUmVxdWlyZWQiLCJoZWlnaHQiLCJleHBvcnRJbWFnZVNldHRpbmciLCJvYmplY3QiLCJhZGROb3RpZmljYXRpb24iLCJmdW5jIiwibWFwRmllbGRzIiwic2V0RXhwb3J0SW1hZ2VTZXR0aW5nIiwic2V0RXhwb3J0SW1hZ2VEYXRhVXJpIiwic2V0RXhwb3J0SW1hZ2VFcnJvciIsInNwbGl0TWFwcyIsImFycmF5T2YiLCJQbG90Q29udGFpbmVyRmFjdG9yeSIsImRlcHMiLCJNYXBDb250YWluZXJGYWN0b3J5IiwiTWFwc0xheW91dEZhY3RvcnkiLCJTdHlsZWRQbG90Q29udGFpbmVyIiwic3R5bGVkIiwiZGl2IiwiU3R5bGVkTWFwQ29udGFpbmVyIiwicHJvcHMiLCJkZWNrR2xQcm9wcyIsImdsT3B0aW9ucyIsInByZXNlcnZlRHJhd2luZ0J1ZmZlciIsInVzZURldmljZVBpeGVscyIsIk1hcENvbnRhaW5lciIsIk1hcHNMYXlvdXQiLCJQbG90Q29udGFpbmVyIiwibWFwU3R5bGUiLCJpbWFnZVNpemUiLCJtYXBTdGF0ZSIsInNjYWxlIiwiaW1hZ2VXIiwiaW1hZ2VIIiwiaXNTcGxpdCIsIm1hcFN0eWxlU2VsZWN0b3IiLCJtYXBTY2FsZVNlbGVjdG9yIiwiYm90dG9tTWFwU3R5bGUiLCJ0b3BNYXBTdHlsZSIsIm1hcCIsImlzU3R5bGVMb2FkZWQiLCJfcmV0cmlldmVOZXdTY3JlZW5zaG90IiwicGxvdHRpbmdBcmVhUmVmIiwiY3VycmVudCIsImZpbHRlciIsInRoZW4iLCJlcnIiLCJlbmFibGVFcnJvck5vdGlmaWNhdGlvbiIsIl9vbk1hcFJlbmRlciIsInByb2Nlc3NpbmciLCJwcmV2UHJvcHMiLCJjaGVja3MiLCJzaG91bGRSZXRyaWV2ZVNjcmVlbnNob3QiLCJzb21lIiwiaXRlbSIsImxlZ2VuZCIsImxlbmd0aCIsInNpemUiLCJuZXdNYXBTdGF0ZSIsInpvb20iLCJNYXRoIiwibG9nMiIsImNlbnRlciIsInJlbmRlcmVkTGF5ZXJzIiwibGF5ZXJzIiwibGF5ZXIiLCJpZHgiLCJpZCIsIkdFT0NPREVSX0xBWUVSX0lEIiwic2hvdWxkUmVuZGVyTGF5ZXIiLCJsYXllckRhdGEiLCJib3VuZHMiLCJjZW50ZXJBbmRab29tIiwiTnVtYmVyIiwiaXNGaW5pdGUiLCJsb25naXR1ZGUiLCJsYXRpdHVkZSIsIm1hcFByb3BzIiwic2NhbGVkTWFwU3R5bGVTZWxlY3RvciIsIm1hcENvbnRyb2xzIiwibWFwTGVnZW5kIiwic2hvdyIsImFjdGl2ZSIsIk1hcENvbXBvbmVudCIsIlN0YXRpY01hcCIsIm9uTWFwUmVuZGVyIiwiaXNFeHBvcnQiLCJtYXBDb250YWluZXJzIiwic2V0dGluZ3MiLCJpbmRleCIsIkNvbXBvbmVudCIsInByb3BzVHlwZXMiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBcUJBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUVBOztBQUNBOztBQUNBOzs7Ozs7Ozs7Ozs7QUFFQSxJQUFNQSxZQUFZLEdBQUcsQ0FBQyw0QkFBRCxFQUErQixnQkFBL0IsRUFBaUQsZ0JBQWpELENBQXJCOztBQUNBLElBQU1DLGVBQWUsR0FBRyxTQUFsQkEsZUFBa0IsQ0FBQUMsSUFBSTtBQUFBLFNBQUksQ0FBQ0YsWUFBWSxDQUFDRyxRQUFiLENBQXNCRCxJQUFJLENBQUNFLFNBQTNCLENBQUw7QUFBQSxDQUE1Qjs7QUFDQSxJQUFNQyxzQkFBc0IsR0FBRyxDQUFDLElBQWhDO0FBRUEsSUFBTUMsU0FBUyxHQUFHO0FBQ2hCQyxFQUFBQSxL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d0JBQ0UsZ0NBQUMsa0JBQUQ7QUFBb0IsVUFBQSxHQUFHLEVBQUUsS0FBS3RCLGVBQTlCO0FBQStDLFVBQUEsS0FBSyxFQUFFZSxJQUFJLENBQUM1RCxLQUEzRDtBQUFrRSxVQUFBLE1BQU0sRUFBRTRELElBQUksQ0FBQ3hEO0FBQS9FLFdBQ0dzRixhQURILENBREYsQ0FERjtBQU9EO0FBdkprRTtBQUFBO0FBQUEsSUFDekNHLGdCQUR5Qzs7QUEwSnJFL0QsRUFBQUEsYUFBYSxDQUFDZ0UsVUFBZCxHQUEyQi9GLFNBQTNCO0FBQ0EsU0FBTytCLGFBQVA7QUFDRCIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAoYykgMjAyMiBVYmVyIFRlY2hub2xvZ2llcywgSW5jLlxuLy9cbi8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHlcbi8vIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIFwiU29mdHdhcmVcIiksIHRvIGRlYWxcbi8vIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHNcbi8vIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGxcbi8vIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpc1xuLy8gZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcbi8vXG4vLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpblxuLy8gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4vL1xuLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUlxuLy8gSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksXG4vLyBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEVcbi8vIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVJcbi8vIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sXG4vLyBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOXG4vLyBUSEUgU09GVFdBUkUuXG5cbi8vIGxpYnJhcmllc1xuaW1wb3J0IFJlYWN0LCB7Q29tcG9uZW50LCBjcmVhdGVSZWZ9IGZyb20gJ3JlYWN0JztcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcyc7XG5pbXBvcnQge2NyZWF0ZVNlbGVjdG9yfSBmcm9tICdyZXNlbGVjdCc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJ3N0eWxlZC1jb21wb25lbnRzJztcbmltcG9ydCB7U3RhdGljTWFwfSBmcm9tICdyZWFjdC1tYXAtZ2wnO1xuaW1wb3J0IGRlYm91bmNlIGZyb20gJ2xvZGFzaC5kZWJvdW5jZSc7XG5pbXBvcnQge2V4cG9ydEltYWdlRXJyb3J9IGZyb20gJ3V0aWxzL25vdGlmaWNhdGlvbnMtdXRpbHMnO1xuaW1wb3J0IE1hcENvbnRhaW5lckZhY3RvcnkgZnJvbSAnLi9tYXAtY29udGFpbmVyJztcbmltcG9ydCBNYXBzTGF5b3V0RmFjdG9yeSBmcm9tICcuL21hcHMtbGF5b3V0JztcbmltcG9ydCB7Y29udmVydFRvUG5nLCBnZXRTY2FsZUZyb21JbWFnZVNpemV9IGZyb20gJ3V0aWxzL2V4cG9ydC11dGlscyc7XG5pbXBvcnQge3NjYWxlTWFwU3R5bGVCeVJlc29sdXRpb259IGZyb20gJ3V0aWxzL21hcC1zdHlsZS11dGlscy9tYXBib3gtZ2wtc3R5bGUtZWRpdG9yJztcblxuaW1wb3J0IHtmaW5kTWFwQm91bmRzfSBmcm9tICd1dGlscy9kYXRhLXV0aWxzJztcbmltcG9ydCB7Z2V0Q2VudGVyQW5kWm9vbUZyb21Cb3VuZHN9IGZyb20gJ3V0aWxzL3Byb2plY3Rpb24tdXRpbHMnO1xuaW1wb3J0IHtHRU9DT0RFUl9MQVlFUl9JRH0gZnJvbSAnY29uc3RhbnRzL2RlZmF1bHQtc2V0dGluZ3MnO1xuXG5jb25zdCBDTEFTU19GSUxURVIgPSBbJ21hcGJveGdsLWNvbnRyb2wtY29udGFpbmVyJywgJ2F0dHJpdGlvbi1saW5rJywgJ2F0dHJpdGlvbi1sb2dvJ107XG5jb25zdCBET01fRklMVEVSX0ZVTkMgPSBub2RlID0+ICFDTEFTU19GSUxURVIuaW5jbHVkZXMobm9kZS5jbGFzc05hbWUpO1xuY29uc3QgT1VUX09GX1NDUkVFTl9QT1NJVElPTiA9IC05OTk5O1xuXG5jb25zdCBwcm9wVHlwZXMgPSB7XG4gIHdpZHRoOiBQcm9wVHlwZXMubnVtYmVyLmlzUmVxdWlyZWQsXG4gIGhlaWdodDogUHJvcFR5cGVzLm51bWJlci5pc1JlcXVpcmVkLFxuICBleHBvcnRJbWFnZVNldHRpbmc6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgYWRkTm90aWZpY2F0aW9uOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICBtYXBGaWVsZHM6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgc2V0RXhwb3J0SW1hZ2VTZXR0aW5nOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gIHNldEV4cG9ydEltYWdlRGF0YVVyaTogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgc2V0RXhwb3J0SW1hZ2VFcnJvcjogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgc3BsaXRNYXBzOiBQcm9wVHlwZXMuYXJyYXlPZihQcm9wVHlwZXMub2JqZWN0KVxufTtcblxuUGxvdENvbnRhaW5lckZhY3RvcnkuZGVwcyA9IFtNYXBDb250YWluZXJGYWN0b3J5LCBNYXBzTGF5b3V0RmFjdG9yeV07XG5cbi8vIFJlbW92ZSBtYXBib3ggbG9nbyBpbiBleHBvcnRlZCBtYXAsIGJlY2F1c2UgaXQgY29udGFpbnMgbm9uLWFzY2lpIGNoYXJhY3RlcnNcbmNvbnN0IFN0eWxlZFBsb3RDb250YWluZXIgPSBzdHlsZWQuZGl2YFxuICAubWFwYm94Z2wtY3RybC1ib3R0b20tbGVmdCxcbiAgLm1hcGJveGdsLWN0cmwtYm90dG9tLXJpZ2h0LFxuICAubWFwYm94LWF0dHJpYnV0aW9uLWNvbnRhaW5lciB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgfVxuXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAke09VVF9PRl9TQ1JFRU5fUE9TSVRJT059cHg7XG4gIGxlZnQ6ICR7T1VUX09GX1NDUkVFTl9QT1NJVElPTn1weDtcbmA7XG5cbmNvbnN0IFN0eWxlZE1hcENvbnRhaW5lciA9IHN0eWxlZC5kaXZgXG4gIHdpZHRoOiAke3Byb3BzID0+IHByb3BzLndpZHRofXB4O1xuICBoZWlnaHQ6ICR7cHJvcHMgPT4gcHJvcHMuaGVpZ2h0fXB4O1xuICBkaXNwbGF5OiBmbGV4O1xuYDtcblxuY29uc3QgZGVja0dsUHJvcHMgPSB7XG4gIGdsT3B0aW9uczoge1xuICAgIHByZXNlcnZlRHJhd2luZ0J1ZmZlcjogdHJ1ZSxcbiAgICB1c2VEZXZpY2VQaXhlbHM6IGZhbHNlXG4gIH1cbn07XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIFBsb3RDb250YWluZXJGYWN0b3J5KE1hcENvbnRhaW5lciwgTWFwc0xheW91dCkge1xuICBjbGFzcyBQbG90Q29udGFpbmVyIGV4dGVuZHMgQ29tcG9uZW50IHtcbiAgICBjb25zdHJ1Y3Rvcihwcm9wcykge1xuICAgICAgc3VwZXIocHJvcHMpO1xuICAgICAgdGhpcy5fb25NYXBSZW5kZXIgPSBkZWJvdW5jZSh0aGlzLl9vbk1hcFJlbmRlciwgNTAwKTtcbiAgICAgIHRoaXMuX3JldHJpZXZlTmV3U2NyZWVuc2hvdCA9IGRlYm91bmNlKHRoaXMuX3JldHJpZXZlTmV3U2NyZWVuc2hvdCwgNTAwKTtcbiAgICB9XG5cbiAgICBjb21wb25lbnREaWRNb3VudCgpIHtcbiAgICAgIHRoaXMucHJvcHMuc2V0RXhwb3J0SW1hZ2VTZXR0aW5nKHtwcm9jZXNzaW5nOiB0cnVlfSk7XG4gICAgfVxuXG4gICAgY29tcG9uZW50RGlkVXBkYXRlKHByZXZQcm9wcykge1xuICAgICAgLy8gcmUtZmV0Y2ggdGhlIG5ldyBzY3JlZW5zaG90IG9ubHkgd2hlbiByYXRpbyBsZWdlbmQgb3IgcmVzb2x1dGlvbiBjaGFuZ2VzXG4gICAgICBjb25zdCBjaGVja3MgPSBbJ3JhdGlvJywgJ3Jlc29sdXRpb24nLCAnbGVnZW5kJ107XG4gICAgICBjb25zdCBzaG91bGRSZXRyaWV2ZVNjcmVlbnNob3QgPSBjaGVja3Muc29tZShcbiAgICAgICAgaXRlbSA9PiB0aGlzLnByb3BzLmV4cG9ydEltYWdlU2V0dGluZ1tpdGVtXSAhPT0gcHJldlByb3BzLmV4cG9ydEltYWdlU2V0dGluZ1tpdGVtXVxuICAgICAgKTtcbiAgICAgIGlmIChzaG91bGRSZXRyaWV2ZVNjcmVlbnNob3QpIHtcbiAgICAgICAgdGhpcy5wcm9wcy5zZXRFeHBvcnRJbWFnZVNldHRpbmcoe3Byb2Nlc3Npbmc6IHRydWV9KTtcbiAgICAgICAgdGhpcy5fcmV0cmlldmVOZXdTY3JlZW5zaG90KCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcGxvdHRpbmdBcmVhUmVmID0gY3JlYXRlUmVmKCk7XG5cbiAgICBtYXBTdHlsZVNlbGVjdG9yID0gcHJvcHMgPT4gcHJvcHMubWFwRmllbGRzLm1hcFN0eWxlO1xuICAgIG1hcFNjYWxlU2VsZWN0b3IgPSBwcm9wcyA9PiB7XG4gICAgICBjb25zdCB7aW1hZ2VTaXplfSA9IHByb3BzLmV4cG9ydEltYWdlU2V0dGluZztcbiAgICAgIGNvbnN0IHttYXBTdGF0ZX0gPSBwcm9wcy5tYXBGaWVsZHM7XG4gICAgICBpZiAoaW1hZ2VTaXplLnNjYWxlKSB7XG4gICAgICAgIHJldHVybiBpbWFnZVNpemUuc2NhbGU7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHNjYWxlID0gZ2V0U2NhbGVGcm9tSW1hZ2VTaXplKFxuICAgICAgICBpbWFnZVNpemUuaW1hZ2VXLFxuICAgICAgICBpbWFnZVNpemUuaW1hZ2VILFxuICAgICAgICBtYXBTdGF0ZS53aWR0aCAqIChtYXBTdGF0ZS5pc1NwbGl0ID8gMiA6IDEpLFxuICAgICAgICBtYXBTdGF0ZS5oZWlnaHRcbiAgICAgICk7XG5cbiAgICAgIHJldHVybiBzY2FsZSA+IDAgPyBzY2FsZSA6IDE7XG4gICAgfTtcblxuICAgIHNjYWxlZE1hcFN0eWxlU2VsZWN0b3IgPSBjcmVhdGVTZWxlY3RvcihcbiAgICAgIHRoaXMubWFwU3R5bGVTZWxlY3RvcixcbiAgICAgIHRoaXMubWFwU2NhbGVTZWxlY3RvcixcbiAgICAgIChtYXBTdHlsZSwgc2NhbGUpID0+ICh7XG4gICAgICAgIC4uLm1hcFN0eWxlLFxuICAgICAgICBib3R0b21NYXBTdHlsZTogc2NhbGVNYXBTdHlsZUJ5UmVzb2x1dGlvbihtYXBTdHlsZS5ib3R0b21NYXBTdHlsZSwgc2NhbGUpLFxuICAgICAgICB0b3BNYXBTdHlsZTogc2NhbGVNYXBTdHlsZUJ5UmVzb2x1dGlvbihtYXBTdHlsZS50b3BNYXBTdHlsZSwgc2NhbGUpXG4gICAgICB9KVxuICAgICk7XG5cbiAgICBfb25NYXBSZW5kZXIgPSBtYXAgPT4ge1xuICAgICAgaWYgKG1hcC5pc1N0eWxlTG9hZGVkKCkpIHtcbiAgICAgICAgdGhpcy5fcmV0cmlldmVOZXdTY3JlZW5zaG90KCk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIF9yZXRyaWV2ZU5ld1NjcmVlbnNob3QgPSAoKSA9PiB7XG4gICAgICBpZiAodGhpcy5wbG90dGluZ0FyZWFSZWYuY3VycmVudCkge1xuICAgICAgICBjb252ZXJ0VG9QbmcodGhpcy5wbG90dGluZ0FyZWFSZWYuY3VycmVudCwge2ZpbHRlcjogRE9NX0ZJTFRFUl9GVU5DfSlcbiAgICAgICAgICAudGhlbih0aGlzLnByb3BzLnNldEV4cG9ydEltYWdlRGF0YVVyaSlcbiAgICAgICAgICAuY2F0Y2goZXJyID0+IHtcbiAgICAgICAgICAgIHRoaXMucHJvcHMuc2V0RXhwb3J0SW1hZ2VFcnJvcihlcnIpO1xuICAgICAgICAgICAgaWYgKHRoaXMucHJvcHMuZW5hYmxlRXJyb3JOb3RpZmljYXRpb24pIHtcbiAgICAgICAgICAgICAgdGhpcy5wcm9wcy5hZGROb3RpZmljYXRpb24oZXhwb3J0SW1hZ2VFcnJvcih7ZXJyfSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgfVxuICAgIH07XG5cbiAgICByZW5kZXIoKSB7XG4gICAgICBjb25zdCB7ZXhwb3J0SW1hZ2VTZXR0aW5nLCBtYXBGaWVsZHMsIHNwbGl0TWFwc30gPSB0aGlzLnByb3BzO1xuICAgICAgY29uc3Qge2ltYWdlU2l6ZSA9IHt9LCBsZWdlbmR9ID0gZXhwb3J0SW1hZ2VTZXR0aW5nO1xuICAgICAgY29uc3Qge21hcFN0YXRlfSA9IG1hcEZpZWxkcztcbiAgICAgIGNvbnN0IGlzU3BsaXQgPSBzcGxpdE1hcHMgJiYgc3BsaXRNYXBzLmxlbmd0aCA+IDE7XG5cbiAgICAgIGNvbnN0IHNpemUgPSB7XG4gICAgICAgIHdpZHRoOiBpbWFnZVNpemUuaW1hZ2VXIHx8IDEsXG4gICAgICAgIGhlaWdodDogaW1hZ2VTaXplLmltYWdlSCB8fCAxXG4gICAgICB9O1xuICAgICAgY29uc3Qgd2lkdGggPSBzaXplLndpZHRoIC8gKGlzU3BsaXQgPyAyIDogMSk7XG4gICAgICBjb25zdCBoZWlnaHQgPSBzaXplLmhlaWdodDtcbiAgICAgIGNvbnN0IHNjYWxlID0gdGhpcy5tYXBTY2FsZVNlbGVjdG9yKHRoaXMucHJvcHMpO1xuICAgICAgY29uc3QgbmV3TWFwU3RhdGUgPSB7XG4gICAgICAgIC4uLm1hcFN0YXRlLFxuICAgICAgICB3aWR0aCxcbiAgICAgICAgaGVpZ2h0LFxuICAgICAgICB6b29tOiBtYXBTdGF0ZS56b29tICsgKE1hdGgubG9nMihzY2FsZSkgfHwgMClcbiAgICAgIH07XG5cbiAgICAgIC8vIGNlbnRlciBhbmQgYWxsIGxheWVyIGJvdW5kc1xuICAgICAgaWYgKGV4cG9ydEltYWdlU2V0dGluZy5jZW50ZXIpIHtcbiAgICAgICAgY29uc3QgcmVuZGVyZWRMYXllcnMgPSBtYXBGaWVsZHMubGF5ZXJzLmZpbHRlcihcbiAgICAgICAgICAobGF5ZXIsIGlkeCkgPT5cbiAgICAgICAgICAgIGxheWVyLmlkICE9PSBHRU9DT0RFUl9MQVlFUl9JRCAmJiBsYXllci5zaG91bGRSZW5kZXJMYXllcihtYXBGaWVsZHMubGF5ZXJEYXRhW2lkeF0pXG4gICAgICAgICk7XG4gICAgICAgIGNvbnN0IGJvdW5kcyA9IGZpbmRNYXBCb3VuZHMocmVuZGVyZWRMYXllcnMpO1xuICAgICAgICBjb25zdCBjZW50ZXJBbmRab29tID0gZ2V0Q2VudGVyQW5kWm9vbUZyb21Cb3VuZHMoYm91bmRzLCB7d2lkdGgsIGhlaWdodH0pO1xuICAgICAgICBpZiAoY2VudGVyQW5kWm9vbSkge1xuICAgICAgICAgIGNvbnN0IHpvb20gPSBOdW1iZXIuaXNGaW5pdGUoY2VudGVyQW5kWm9vbS56b29tKSA/IGNlbnRlckFuZFpvb20uem9vbSA6IG1hcFN0YXRlLnpvb207XG5cbiAgICAgICAgICBuZXdNYXBTdGF0ZS5sb25naXR1ZGUgPSBjZW50ZXJBbmRab29tLmNlbnRlclswXTtcbiAgICAgICAgICBuZXdNYXBTdGF0ZS5sYXRpdHVkZSA9IGNlbnRlckFuZFpvb20uY2VudGVyWzFdO1xuICAgICAgICAgIG5ld01hcFN0YXRlLnpvb20gPSB6b29tICsgTnVtYmVyKE1hdGgubG9nMihzY2FsZSkgfHwgMCk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgY29uc3QgbWFwUHJvcHMgPSB7XG4gICAgICAgIC4uLm1hcEZpZWxkcyxcbiAgICAgICAgbWFwU3R5bGU6IHRoaXMuc2NhbGVkTWFwU3R5bGVTZWxlY3Rvcih0aGlzLnByb3BzKSxcblxuICAgICAgICAvLyBvdmVycmlkZSB2aWV3cG9ydCBiYXNlZCBvbiBleHBvcnQgc2V0dGluZ3NcbiAgICAgICAgbWFwU3RhdGU6IG5ld01hcFN0YXRlLFxuICAgICAgICBtYXBDb250cm9sczoge1xuICAgICAgICAgIC8vIG92ZXJyaWRlIG1hcCBsZWdlbmQgdmlzaWJpbGl0eVxuICAgICAgICAgIG1hcExlZ2VuZDoge1xuICAgICAgICAgICAgc2hvdzogbGVnZW5kLFxuICAgICAgICAgICAgYWN0aXZlOiB0cnVlXG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBNYXBDb21wb25lbnQ6IFN0YXRpY01hcCxcbiAgICAgICAgb25NYXBSZW5kZXI6IHRoaXMuX29uTWFwUmVuZGVyLFxuICAgICAgICBpc0V4cG9ydDogdHJ1ZSxcbiAgICAgICAgZGVja0dsUHJvcHNcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IG1hcENvbnRhaW5lcnMgPSAhaXNTcGxpdCA/IChcbiAgICAgICAgPE1hcENvbnRhaW5lciBpbmRleD17MH0gcHJpbWFyeT17dHJ1ZX0gey4uLm1hcFByb3BzfSAvPlxuICAgICAgKSA6IChcbiAgICAgICAgPE1hcHNMYXlvdXQ+XG4gICAgICAgICAge3NwbGl0TWFwcy5tYXAoKHNldHRpbmdzLCBpbmRleCkgPT4gKFxuICAgICAgICAgICAgPE1hcENvbnRhaW5lclxuICAgICAgICAgICAgICBrZXk9e2luZGV4fVxuICAgICAgICAgICAgICBpbmRleD17aW5kZXh9XG4gICAgICAgICAgICAgIHByaW1hcnk9e2luZGV4ID09PSAxfVxuICAgICAgICAgICAgICB7Li4ubWFwUHJvcHN9XG4gICAgICAgICAgICAgIG1hcExheWVycz17c3BsaXRNYXBzW2luZGV4XS5sYXllcnN9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICkpfVxuICAgICAgICA8L01hcHNMYXlvdXQ+XG4gICAgICApO1xuICAgICAgcmV0dXJuIChcbiAgICAgICAgPFN0eWxlZFBsb3RDb250YWluZXIgY2xhc3NOYW1lPVwiZXhwb3J0LW1hcC1pbnN0YW5jZVwiPlxuICAgICAgICAgIDxTdHlsZWRNYXBDb250YWluZXIgcmVmPXt0aGlzLnBsb3R0aW5nQXJlYVJlZn0gd2lkdGg9e3NpemUud2lkdGh9IGhlaWdodD17c2l6ZS5oZWlnaHR9PlxuICAgICAgICAgICAge21hcENvbnRhaW5lcnN9XG4gICAgICAgICAgPC9TdHlsZWRNYXBDb250YWluZXI+XG4gICAgICAgIDwvU3R5bGVkUGxvdENvbnRhaW5lcj5cbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgUGxvdENvbnRhaW5lci5wcm9wc1R5cGVzID0gcHJvcFR5cGVzO1xuICByZXR1cm4gUGxvdENvbnRhaW5lcjtcbn1cbiJdfQ==
277
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb21wb25lbnRzL3Bsb3QtY29udGFpbmVyLmpzIl0sIm5hbWVzIjpbIkNMQVNTX0ZJTFRFUiIsIkRPTV9GSUxURVJfRlVOQyIsIm5vZGUiLCJpbmNsdWRlcyIsImNsYXNzTmFtZSIsIk9VVF9PRl9TQ1JFRU5fUE9TSVRJT04iLCJwcm9wVHlwZXMiLCJ3aWR0aCIsIlByb3BUeXBlcyIsIm51bWJlciIsImlzUmVxdWlyZWQiLCJoZWlnaHQiLCJleHBvcnRJbWFnZVNldHRpbmciLCJvYmplY3QiLCJhZGROb3RpZmljYXRpb24iLCJmdW5jIiwibWFwRmllbGRzIiwic2V0RXhwb3J0SW1hZ2VTZXR0aW5nIiwic2V0RXhwb3J0SW1hZ2VEYXRhVXJpIiwic2V0RXhwb3J0SW1hZ2VFcnJvciIsInNwbGl0TWFwcyIsImFycmF5T2YiLCJQbG90Q29udGFpbmVyRmFjdG9yeSIsImRlcHMiLCJNYXBDb250YWluZXJGYWN0b3J5IiwiTWFwc0xheW91dEZhY3RvcnkiLCJTdHlsZWRQbG90Q29udGFpbmVyIiwic3R5bGVkIiwiZGl2IiwiU3R5bGVkTWFwQ29udGFpbmVyIiwicHJvcHMiLCJkZWNrR2xQcm9wcyIsImdsT3B0aW9ucyIsInByZXNlcnZlRHJhd2luZ0J1ZmZlciIsInVzZURldmljZVBpeGVscyIsIk1hcENvbnRhaW5lciIsIk1hcHNMYXlvdXQiLCJQbG90Q29udGFpbmVyIiwibWFwU3R5bGUiLCJpbWFnZVNpemUiLCJtYXBTdGF0ZSIsInNjYWxlIiwiaW1hZ2VXIiwiaW1hZ2VIIiwiaXNTcGxpdCIsIm1hcFN0eWxlU2VsZWN0b3IiLCJtYXBTY2FsZVNlbGVjdG9yIiwiYm90dG9tTWFwU3R5bGUiLCJ0b3BNYXBTdHlsZSIsIm1hcCIsImlzU3R5bGVMb2FkZWQiLCJfcmV0cmlldmVOZXdTY3JlZW5zaG90IiwicGxvdHRpbmdBcmVhUmVmIiwiY3VycmVudCIsImZpbHRlciIsInRoZW4iLCJlcnIiLCJlbmFibGVFcnJvck5vdGlmaWNhdGlvbiIsIl9vbk1hcFJlbmRlciIsInByb2Nlc3NpbmciLCJwcmV2UHJvcHMiLCJjaGVja3MiLCJzaG91bGRSZXRyaWV2ZVNjcmVlbnNob3QiLCJzb21lIiwiaXRlbSIsIm1hc2tQb2x5Z29uIiwibGVnZW5kIiwibGVuZ3RoIiwic2l6ZSIsIm5ld01hcFN0YXRlIiwiem9vbSIsIk1hdGgiLCJsb2cyIiwiY2VudGVyIiwicmVuZGVyZWRMYXllcnMiLCJsYXllcnMiLCJsYXllciIsImlkeCIsImlkIiwiR0VPQ09ERVJfTEFZRVJfSUQiLCJzaG91bGRSZW5kZXJMYXllciIsImxheWVyRGF0YSIsImJvdW5kcyIsImNlbnRlckFuZFpvb20iLCJOdW1iZXIiLCJpc0Zpbml0ZSIsImxvbmdpdHVkZSIsImxhdGl0dWRlIiwibWFwUHJvcHMiLCJzY2FsZWRNYXBTdHlsZVNlbGVjdG9yIiwibWFwQ29udHJvbHMiLCJtYXBMZWdlbmQiLCJzaG93IiwiYWN0aXZlIiwiTWFwQ29tcG9uZW50IiwiU3RhdGljTWFwIiwib25NYXBSZW5kZXIiLCJpc0V4cG9ydCIsIm1hcENvbnRhaW5lcnMiLCJzZXR0aW5ncyIsImluZGV4IiwiQ29tcG9uZW50IiwicHJvcHNUeXBlcyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFxQkE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBRUE7O0FBQ0E7O0FBQ0E7Ozs7Ozs7Ozs7OztBQUVBLElBQU1BLFlBQVksR0FBRyxDQUFDLDRCQUFELEVBQStCLGdCQUEvQixFQUFpRCxnQkFBakQsQ0FBckI7O0FBQ0EsSUFBTUMsZUFBZSxHQUFHLFNBQWxCQSxlQUFrQixDQUFBQyxJQUFJO0FBQUEsU0FBSSxDQUFDRixZQUFZLENBQUNHLFFBQWIsQ0FBc0JELElBQUksQ0FBQ0UsU0FBM0IsQ0FBTDtBQUFBLENBQTVCOztBQUNBLElBQU1DLHNCQUFzQixHQUFHLENBQUMsSUFBaEM7QUFFQSxJQUFNQyxTQUFTLEdBQUc7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OUIsYUFEYTtBQUFBLFNBQWQsQ0FESCxDQUhGO0FBZUEsNEJBQ0UsZ0NBQUMsbUJBQUQ7QUFBcUIsVUFBQSxTQUFTLEVBQUM7QUFBL0Isd0JBQ0UsZ0NBQUMsa0JBQUQ7QUFBb0IsVUFBQSxHQUFHLEVBQUUsS0FBS3ZCLGVBQTlCO0FBQStDLFVBQUEsS0FBSyxFQUFFZ0IsSUFBSSxDQUFDN0QsS0FBM0Q7QUFBa0UsVUFBQSxNQUFNLEVBQUU2RCxJQUFJLENBQUN6RDtBQUEvRSxXQUNHdUYsYUFESCxDQURGLENBREY7QUFPRDtBQXhKa0U7QUFBQTtBQUFBLElBQ3pDRyxnQkFEeUM7O0FBMkpyRWhFLEVBQUFBLGFBQWEsQ0FBQ2lFLFVBQWQsR0FBMkJoRyxTQUEzQjtBQUNBLFNBQU8rQixhQUFQO0FBQ0QiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgKGMpIDIwMjIgVWJlciBUZWNobm9sb2dpZXMsIEluYy5cbi8vXG4vLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5XG4vLyBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLCB0byBkZWFsXG4vLyBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzXG4vLyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsXG4vLyBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXNcbi8vIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4vL1xuLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW5cbi8vIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuLy9cbi8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1Jcbi8vIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxuLy8gRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFXG4vLyBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSXG4vLyBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLFxuLy8gT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTlxuLy8gVEhFIFNPRlRXQVJFLlxuXG4vLyBsaWJyYXJpZXNcbmltcG9ydCBSZWFjdCwge0NvbXBvbmVudCwgY3JlYXRlUmVmfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnO1xuaW1wb3J0IHtjcmVhdGVTZWxlY3Rvcn0gZnJvbSAncmVzZWxlY3QnO1xuaW1wb3J0IHN0eWxlZCBmcm9tICdzdHlsZWQtY29tcG9uZW50cyc7XG5pbXBvcnQge1N0YXRpY01hcH0gZnJvbSAncmVhY3QtbWFwLWdsJztcbmltcG9ydCBkZWJvdW5jZSBmcm9tICdsb2Rhc2guZGVib3VuY2UnO1xuaW1wb3J0IHtleHBvcnRJbWFnZUVycm9yfSBmcm9tICd1dGlscy9ub3RpZmljYXRpb25zLXV0aWxzJztcbmltcG9ydCBNYXBDb250YWluZXJGYWN0b3J5IGZyb20gJy4vbWFwLWNvbnRhaW5lcic7XG5pbXBvcnQgTWFwc0xheW91dEZhY3RvcnkgZnJvbSAnLi9tYXBzLWxheW91dCc7XG5pbXBvcnQge2NvbnZlcnRUb1BuZywgZ2V0U2NhbGVGcm9tSW1hZ2VTaXplfSBmcm9tICd1dGlscy9leHBvcnQtdXRpbHMnO1xuaW1wb3J0IHtzY2FsZU1hcFN0eWxlQnlSZXNvbHV0aW9ufSBmcm9tICd1dGlscy9tYXAtc3R5bGUtdXRpbHMvbWFwYm94LWdsLXN0eWxlLWVkaXRvcic7XG5cbmltcG9ydCB7ZmluZE1hcEJvdW5kc30gZnJvbSAndXRpbHMvZGF0YS11dGlscyc7XG5pbXBvcnQge2dldENlbnRlckFuZFpvb21Gcm9tQm91bmRzfSBmcm9tICd1dGlscy9wcm9qZWN0aW9uLXV0aWxzJztcbmltcG9ydCB7R0VPQ09ERVJfTEFZRVJfSUR9IGZyb20gJ2NvbnN0YW50cy9kZWZhdWx0LXNldHRpbmdzJztcblxuY29uc3QgQ0xBU1NfRklMVEVSID0gWydtYXBib3hnbC1jb250cm9sLWNvbnRhaW5lcicsICdhdHRyaXRpb24tbGluaycsICdhdHRyaXRpb24tbG9nbyddO1xuY29uc3QgRE9NX0ZJTFRFUl9GVU5DID0gbm9kZSA9PiAhQ0xBU1NfRklMVEVSLmluY2x1ZGVzKG5vZGUuY2xhc3NOYW1lKTtcbmNvbnN0IE9VVF9PRl9TQ1JFRU5fUE9TSVRJT04gPSAtOTk5OTtcblxuY29uc3QgcHJvcFR5cGVzID0ge1xuICB3aWR0aDogUHJvcFR5cGVzLm51bWJlci5pc1JlcXVpcmVkLFxuICBoZWlnaHQ6IFByb3BUeXBlcy5udW1iZXIuaXNSZXF1aXJlZCxcbiAgZXhwb3J0SW1hZ2VTZXR0aW5nOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gIGFkZE5vdGlmaWNhdGlvbjogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgbWFwRmllbGRzOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gIHNldEV4cG9ydEltYWdlU2V0dGluZzogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICBzZXRFeHBvcnRJbWFnZURhdGFVcmk6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gIHNldEV4cG9ydEltYWdlRXJyb3I6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gIHNwbGl0TWFwczogUHJvcFR5cGVzLmFycmF5T2YoUHJvcFR5cGVzLm9iamVjdClcbn07XG5cblBsb3RDb250YWluZXJGYWN0b3J5LmRlcHMgPSBbTWFwQ29udGFpbmVyRmFjdG9yeSwgTWFwc0xheW91dEZhY3RvcnldO1xuXG4vLyBSZW1vdmUgbWFwYm94IGxvZ28gaW4gZXhwb3J0ZWQgbWFwLCBiZWNhdXNlIGl0IGNvbnRhaW5zIG5vbi1hc2NpaSBjaGFyYWN0ZXJzXG5jb25zdCBTdHlsZWRQbG90Q29udGFpbmVyID0gc3R5bGVkLmRpdmBcbiAgLm1hcGJveGdsLWN0cmwtYm90dG9tLWxlZnQsXG4gIC5tYXBib3hnbC1jdHJsLWJvdHRvbS1yaWdodCxcbiAgLm1hcGJveC1hdHRyaWJ1dGlvbi1jb250YWluZXIge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cblxuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogJHtPVVRfT0ZfU0NSRUVOX1BPU0lUSU9OfXB4O1xuICBsZWZ0OiAke09VVF9PRl9TQ1JFRU5fUE9TSVRJT059cHg7XG5gO1xuXG5jb25zdCBTdHlsZWRNYXBDb250YWluZXIgPSBzdHlsZWQuZGl2YFxuICB3aWR0aDogJHtwcm9wcyA9PiBwcm9wcy53aWR0aH1weDtcbiAgaGVpZ2h0OiAke3Byb3BzID0+IHByb3BzLmhlaWdodH1weDtcbiAgZGlzcGxheTogZmxleDtcbmA7XG5cbmNvbnN0IGRlY2tHbFByb3BzID0ge1xuICBnbE9wdGlvbnM6IHtcbiAgICBwcmVzZXJ2ZURyYXdpbmdCdWZmZXI6IHRydWUsXG4gICAgdXNlRGV2aWNlUGl4ZWxzOiBmYWxzZVxuICB9XG59O1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBQbG90Q29udGFpbmVyRmFjdG9yeShNYXBDb250YWluZXIsIE1hcHNMYXlvdXQpIHtcbiAgY2xhc3MgUGxvdENvbnRhaW5lciBleHRlbmRzIENvbXBvbmVudCB7XG4gICAgY29uc3RydWN0b3IocHJvcHMpIHtcbiAgICAgIHN1cGVyKHByb3BzKTtcbiAgICAgIHRoaXMuX29uTWFwUmVuZGVyID0gZGVib3VuY2UodGhpcy5fb25NYXBSZW5kZXIsIDUwMCk7XG4gICAgICB0aGlzLl9yZXRyaWV2ZU5ld1NjcmVlbnNob3QgPSBkZWJvdW5jZSh0aGlzLl9yZXRyaWV2ZU5ld1NjcmVlbnNob3QsIDUwMCk7XG4gICAgfVxuXG4gICAgY29tcG9uZW50RGlkTW91bnQoKSB7XG4gICAgICB0aGlzLnByb3BzLnNldEV4cG9ydEltYWdlU2V0dGluZyh7cHJvY2Vzc2luZzogdHJ1ZX0pO1xuICAgIH1cblxuICAgIGNvbXBvbmVudERpZFVwZGF0ZShwcmV2UHJvcHMpIHtcbiAgICAgIC8vIHJlLWZldGNoIHRoZSBuZXcgc2NyZWVuc2hvdCBvbmx5IHdoZW4gcmF0aW8gbGVnZW5kIG9yIHJlc29sdXRpb24gY2hhbmdlc1xuICAgICAgY29uc3QgY2hlY2tzID0gWydyYXRpbycsICdyZXNvbHV0aW9uJywgJ2xlZ2VuZCddO1xuICAgICAgY29uc3Qgc2hvdWxkUmV0cmlldmVTY3JlZW5zaG90ID0gY2hlY2tzLnNvbWUoXG4gICAgICAgIGl0ZW0gPT4gdGhpcy5wcm9wcy5leHBvcnRJbWFnZVNldHRpbmdbaXRlbV0gIT09IHByZXZQcm9wcy5leHBvcnRJbWFnZVNldHRpbmdbaXRlbV1cbiAgICAgICk7XG4gICAgICBpZiAoc2hvdWxkUmV0cmlldmVTY3JlZW5zaG90KSB7XG4gICAgICAgIHRoaXMucHJvcHMuc2V0RXhwb3J0SW1hZ2VTZXR0aW5nKHtwcm9jZXNzaW5nOiB0cnVlfSk7XG4gICAgICAgIHRoaXMuX3JldHJpZXZlTmV3U2NyZWVuc2hvdCgpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHBsb3R0aW5nQXJlYVJlZiA9IGNyZWF0ZVJlZigpO1xuXG4gICAgbWFwU3R5bGVTZWxlY3RvciA9IHByb3BzID0+IHByb3BzLm1hcEZpZWxkcy5tYXBTdHlsZTtcbiAgICBtYXBTY2FsZVNlbGVjdG9yID0gcHJvcHMgPT4ge1xuICAgICAgY29uc3Qge2ltYWdlU2l6ZX0gPSBwcm9wcy5leHBvcnRJbWFnZVNldHRpbmc7XG4gICAgICBjb25zdCB7bWFwU3RhdGV9ID0gcHJvcHMubWFwRmllbGRzO1xuICAgICAgaWYgKGltYWdlU2l6ZS5zY2FsZSkge1xuICAgICAgICByZXR1cm4gaW1hZ2VTaXplLnNjYWxlO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBzY2FsZSA9IGdldFNjYWxlRnJvbUltYWdlU2l6ZShcbiAgICAgICAgaW1hZ2VTaXplLmltYWdlVyxcbiAgICAgICAgaW1hZ2VTaXplLmltYWdlSCxcbiAgICAgICAgbWFwU3RhdGUud2lkdGggKiAobWFwU3RhdGUuaXNTcGxpdCA/IDIgOiAxKSxcbiAgICAgICAgbWFwU3RhdGUuaGVpZ2h0XG4gICAgICApO1xuXG4gICAgICByZXR1cm4gc2NhbGUgPiAwID8gc2NhbGUgOiAxO1xuICAgIH07XG5cbiAgICBzY2FsZWRNYXBTdHlsZVNlbGVjdG9yID0gY3JlYXRlU2VsZWN0b3IoXG4gICAgICB0aGlzLm1hcFN0eWxlU2VsZWN0b3IsXG4gICAgICB0aGlzLm1hcFNjYWxlU2VsZWN0b3IsXG4gICAgICAobWFwU3R5bGUsIHNjYWxlKSA9PiAoe1xuICAgICAgICAuLi5tYXBTdHlsZSxcbiAgICAgICAgYm90dG9tTWFwU3R5bGU6IHNjYWxlTWFwU3R5bGVCeVJlc29sdXRpb24obWFwU3R5bGUuYm90dG9tTWFwU3R5bGUsIHNjYWxlKSxcbiAgICAgICAgdG9wTWFwU3R5bGU6IHNjYWxlTWFwU3R5bGVCeVJlc29sdXRpb24obWFwU3R5bGUudG9wTWFwU3R5bGUsIHNjYWxlKVxuICAgICAgfSlcbiAgICApO1xuXG4gICAgX29uTWFwUmVuZGVyID0gbWFwID0+IHtcbiAgICAgIGlmIChtYXAuaXNTdHlsZUxvYWRlZCgpKSB7XG4gICAgICAgIHRoaXMuX3JldHJpZXZlTmV3U2NyZWVuc2hvdCgpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBfcmV0cmlldmVOZXdTY3JlZW5zaG90ID0gKCkgPT4ge1xuICAgICAgaWYgKHRoaXMucGxvdHRpbmdBcmVhUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgY29udmVydFRvUG5nKHRoaXMucGxvdHRpbmdBcmVhUmVmLmN1cnJlbnQsIHtmaWx0ZXI6IERPTV9GSUxURVJfRlVOQ30pXG4gICAgICAgICAgLnRoZW4odGhpcy5wcm9wcy5zZXRFeHBvcnRJbWFnZURhdGFVcmkpXG4gICAgICAgICAgLmNhdGNoKGVyciA9PiB7XG4gICAgICAgICAgICB0aGlzLnByb3BzLnNldEV4cG9ydEltYWdlRXJyb3IoZXJyKTtcbiAgICAgICAgICAgIGlmICh0aGlzLnByb3BzLmVuYWJsZUVycm9yTm90aWZpY2F0aW9uKSB7XG4gICAgICAgICAgICAgIHRoaXMucHJvcHMuYWRkTm90aWZpY2F0aW9uKGV4cG9ydEltYWdlRXJyb3Ioe2Vycn0pKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgcmVuZGVyKCkge1xuICAgICAgY29uc3Qge2V4cG9ydEltYWdlU2V0dGluZywgbWFwRmllbGRzLCBzcGxpdE1hcHMsIG1hc2tQb2x5Z29ufSA9IHRoaXMucHJvcHM7XG4gICAgICBjb25zdCB7aW1hZ2VTaXplID0ge30sIGxlZ2VuZH0gPSBleHBvcnRJbWFnZVNldHRpbmc7XG4gICAgICBjb25zdCB7bWFwU3RhdGV9ID0gbWFwRmllbGRzO1xuICAgICAgY29uc3QgaXNTcGxpdCA9IHNwbGl0TWFwcyAmJiBzcGxpdE1hcHMubGVuZ3RoID4gMTtcblxuICAgICAgY29uc3Qgc2l6ZSA9IHtcbiAgICAgICAgd2lkdGg6IGltYWdlU2l6ZS5pbWFnZVcgfHwgMSxcbiAgICAgICAgaGVpZ2h0OiBpbWFnZVNpemUuaW1hZ2VIIHx8IDFcbiAgICAgIH07XG4gICAgICBjb25zdCB3aWR0aCA9IHNpemUud2lkdGggLyAoaXNTcGxpdCA/IDIgOiAxKTtcbiAgICAgIGNvbnN0IGhlaWdodCA9IHNpemUuaGVpZ2h0O1xuICAgICAgY29uc3Qgc2NhbGUgPSB0aGlzLm1hcFNjYWxlU2VsZWN0b3IodGhpcy5wcm9wcyk7XG4gICAgICBjb25zdCBuZXdNYXBTdGF0ZSA9IHtcbiAgICAgICAgLi4ubWFwU3RhdGUsXG4gICAgICAgIHdpZHRoLFxuICAgICAgICBoZWlnaHQsXG4gICAgICAgIHpvb206IG1hcFN0YXRlLnpvb20gKyAoTWF0aC5sb2cyKHNjYWxlKSB8fCAwKVxuICAgICAgfTtcblxuICAgICAgLy8gY2VudGVyIGFuZCBhbGwgbGF5ZXIgYm91bmRzXG4gICAgICBpZiAoZXhwb3J0SW1hZ2VTZXR0aW5nLmNlbnRlcikge1xuICAgICAgICBjb25zdCByZW5kZXJlZExheWVycyA9IG1hcEZpZWxkcy5sYXllcnMuZmlsdGVyKFxuICAgICAgICAgIChsYXllciwgaWR4KSA9PlxuICAgICAgICAgICAgbGF5ZXIuaWQgIT09IEdFT0NPREVSX0xBWUVSX0lEICYmIGxheWVyLnNob3VsZFJlbmRlckxheWVyKG1hcEZpZWxkcy5sYXllckRhdGFbaWR4XSlcbiAgICAgICAgKTtcbiAgICAgICAgY29uc3QgYm91bmRzID0gZmluZE1hcEJvdW5kcyhyZW5kZXJlZExheWVycyk7XG4gICAgICAgIGNvbnN0IGNlbnRlckFuZFpvb20gPSBnZXRDZW50ZXJBbmRab29tRnJvbUJvdW5kcyhib3VuZHMsIHt3aWR0aCwgaGVpZ2h0fSk7XG4gICAgICAgIGlmIChjZW50ZXJBbmRab29tKSB7XG4gICAgICAgICAgY29uc3Qgem9vbSA9IE51bWJlci5pc0Zpbml0ZShjZW50ZXJBbmRab29tLnpvb20pID8gY2VudGVyQW5kWm9vbS56b29tIDogbWFwU3RhdGUuem9vbTtcblxuICAgICAgICAgIG5ld01hcFN0YXRlLmxvbmdpdHVkZSA9IGNlbnRlckFuZFpvb20uY2VudGVyWzBdO1xuICAgICAgICAgIG5ld01hcFN0YXRlLmxhdGl0dWRlID0gY2VudGVyQW5kWm9vbS5jZW50ZXJbMV07XG4gICAgICAgICAgbmV3TWFwU3RhdGUuem9vbSA9IHpvb20gKyBOdW1iZXIoTWF0aC5sb2cyKHNjYWxlKSB8fCAwKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBjb25zdCBtYXBQcm9wcyA9IHtcbiAgICAgICAgLi4ubWFwRmllbGRzLFxuICAgICAgICBtYXBTdHlsZTogdGhpcy5zY2FsZWRNYXBTdHlsZVNlbGVjdG9yKHRoaXMucHJvcHMpLFxuXG4gICAgICAgIC8vIG92ZXJyaWRlIHZpZXdwb3J0IGJhc2VkIG9uIGV4cG9ydCBzZXR0aW5nc1xuICAgICAgICBtYXBTdGF0ZTogbmV3TWFwU3RhdGUsXG4gICAgICAgIG1hcENvbnRyb2xzOiB7XG4gICAgICAgICAgLy8gb3ZlcnJpZGUgbWFwIGxlZ2VuZCB2aXNpYmlsaXR5XG4gICAgICAgICAgbWFwTGVnZW5kOiB7XG4gICAgICAgICAgICBzaG93OiBsZWdlbmQsXG4gICAgICAgICAgICBhY3RpdmU6IHRydWVcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIE1hcENvbXBvbmVudDogU3RhdGljTWFwLFxuICAgICAgICBvbk1hcFJlbmRlcjogdGhpcy5fb25NYXBSZW5kZXIsXG4gICAgICAgIGlzRXhwb3J0OiB0cnVlLFxuICAgICAgICBkZWNrR2xQcm9wcyxcbiAgICAgICAgbWFza1BvbHlnb25cbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IG1hcENvbnRhaW5lcnMgPSAhaXNTcGxpdCA/IChcbiAgICAgICAgPE1hcENvbnRhaW5lciBpbmRleD17MH0gcHJpbWFyeT17dHJ1ZX0gey4uLm1hcFByb3BzfSAvPlxuICAgICAgKSA6IChcbiAgICAgICAgPE1hcHNMYXlvdXQ+XG4gICAgICAgICAge3NwbGl0TWFwcy5tYXAoKHNldHRpbmdzLCBpbmRleCkgPT4gKFxuICAgICAgICAgICAgPE1hcENvbnRhaW5lclxuICAgICAgICAgICAgICBrZXk9e2luZGV4fVxuICAgICAgICAgICAgICBpbmRleD17aW5kZXh9XG4gICAgICAgICAgICAgIHByaW1hcnk9e2luZGV4ID09PSAxfVxuICAgICAgICAgICAgICB7Li4ubWFwUHJvcHN9XG4gICAgICAgICAgICAgIG1hcExheWVycz17c3BsaXRNYXBzW2luZGV4XS5sYXllcnN9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICkpfVxuICAgICAgICA8L01hcHNMYXlvdXQ+XG4gICAgICApO1xuICAgICAgcmV0dXJuIChcbiAgICAgICAgPFN0eWxlZFBsb3RDb250YWluZXIgY2xhc3NOYW1lPVwiZXhwb3J0LW1hcC1pbnN0YW5jZVwiPlxuICAgICAgICAgIDxTdHlsZWRNYXBDb250YWluZXIgcmVmPXt0aGlzLnBsb3R0aW5nQXJlYVJlZn0gd2lkdGg9e3NpemUud2lkdGh9IGhlaWdodD17c2l6ZS5oZWlnaHR9PlxuICAgICAgICAgICAge21hcENvbnRhaW5lcnN9XG4gICAgICAgICAgPC9TdHlsZWRNYXBDb250YWluZXI+XG4gICAgICAgIDwvU3R5bGVkUGxvdENvbnRhaW5lcj5cbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgUGxvdENvbnRhaW5lci5wcm9wc1R5cGVzID0gcHJvcFR5cGVzO1xuICByZXR1cm4gUGxvdENvbnRhaW5lcjtcbn1cbiJdfQ==
@@ -32,6 +32,8 @@ var _reactLifecyclesCompat = require("react-lifecycles-compat");
32
32
 
33
33
  var _styledComponents = _interopRequireDefault(require("styled-components"));
34
34
 
35
+ var _styledComponents2 = require("../../common/styled-components");
36
+
35
37
  var _classnames = _interopRequireDefault(require("classnames"));
36
38
 
37
39
  var _reactIntl = require("react-intl");
@@ -42,7 +44,7 @@ var _infoHelper = _interopRequireDefault(require("../../common/info-helper"));
42
44
 
43
45
  var _icons = require("../../common/icons");
44
46
 
45
- var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7;
47
+ var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7, _templateObject8;
46
48
 
47
49
  function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; }
48
50
 
@@ -82,10 +84,16 @@ var StyledConfigGroupHeader = _styledComponents["default"].div(_templateObject5
82
84
 
83
85
  var ConfigGroupContent = _styledComponents["default"].div(_templateObject6 || (_templateObject6 = (0, _taggedTemplateLiteral2["default"])(["\n &.disabled {\n opacity: 0.3;\n pointer-events: none;\n * {\n pointer-events: none;\n }\n }\n"])));
84
86
 
87
+ var StyledLayerConfigGroupSwitch = _styledComponents["default"].div(_templateObject7 || (_templateObject7 = (0, _taggedTemplateLiteral2["default"])(["\n width: ", "px;\n margin-right: ", "px;\n"])), function (props) {
88
+ return props.theme.switchWidth;
89
+ }, function (props) {
90
+ return props.theme.switchLabelMargin;
91
+ });
92
+
85
93
  LayerConfigGroupLabelFactory.deps = [_infoHelper["default"]];
86
94
 
87
95
  function LayerConfigGroupLabelFactory(InfoHelper) {
88
- var StyledLayerConfigGroupLabel = _styledComponents["default"].div(_templateObject7 || (_templateObject7 = (0, _taggedTemplateLiteral2["default"])(["\n border-left: ", " solid\n ", ";\n line-height: 12px;\n margin-left: ", ";\n padding-left: ", ";\n\n display: flex;\n align-items: center;\n\n span {\n color: ", ";\n font-weight: 500;\n letter-spacing: 0.2px;\n text-transform: capitalize;\n margin-left: ", ";\n font-size: ", ";\n }\n "])), function (props) {
96
+ var StyledLayerConfigGroupLabel = _styledComponents["default"].div(_templateObject8 || (_templateObject8 = (0, _taggedTemplateLiteral2["default"])(["\n border-left: ", " solid\n ", ";\n line-height: 12px;\n margin-left: ", ";\n padding-left: ", ";\n\n display: flex;\n align-items: center;\n\n span {\n color: ", ";\n font-weight: 500;\n letter-spacing: 0.2px;\n text-transform: capitalize;\n margin-left: ", ";\n font-size: ", ";\n }\n "])), function (props) {
89
97
  return props.theme.layerConfigGroupLabelBorderLeft;
90
98
  }, function (props) {
91
99
  return props.theme.labelColor;
@@ -151,6 +159,7 @@ function LayerConfigGroupFactory(LayerConfigGroupLabel) {
151
159
  label = _this$props.label,
152
160
  children = _this$props.children,
153
161
  property = _this$props.property,
162
+ switchTooltip = _this$props.switchTooltip,
154
163
  layer = _this$props.layer,
155
164
  _onChange2 = _this$props.onChange,
156
165
  collapsible = _this$props.collapsible,
@@ -170,13 +179,20 @@ function LayerConfigGroupFactory(LayerConfigGroupLabel) {
170
179
  description: description
171
180
  }), /*#__PURE__*/_react["default"].createElement(StyledLayerConfigGroupAction, {
172
181
  className: "layer-config-group__action"
173
- }, property ? /*#__PURE__*/_react["default"].createElement(_switch["default"], {
182
+ }, property ? /*#__PURE__*/_react["default"].createElement(StyledLayerConfigGroupSwitch, {
183
+ "data-tip": true,
184
+ "data-for": "".concat(layer.id, "-").concat(label, "-tooltip")
185
+ }, /*#__PURE__*/_react["default"].createElement(_switch["default"], {
174
186
  checked: layer.config.visConfig[property],
175
187
  id: "".concat(layer.id, "-").concat(property),
176
188
  onChange: function onChange() {
177
189
  return _onChange2((0, _defineProperty2["default"])({}, property, !layer.config.visConfig[property]));
178
190
  }
179
- }) : null, collapsible ? /*#__PURE__*/_react["default"].createElement(CollapseButton, {
191
+ }), switchTooltip ? /*#__PURE__*/_react["default"].createElement(_styledComponents2.Tooltip, {
192
+ id: "".concat(layer.id, "-").concat(label, "-tooltip"),
193
+ effect: "solid",
194
+ place: "top"
195
+ }, switchTooltip) : null) : null, collapsible ? /*#__PURE__*/_react["default"].createElement(CollapseButton, {
180
196
  onClick: function onClick() {
181
197
  return _this2.setState({
182
198
  collapsed: !_this2.state.collapsed
@@ -226,4 +242,4 @@ function LayerConfigGroupFactory(LayerConfigGroupLabel) {
226
242
 
227
243
  var _default = LayerConfigGroupFactory;
228
244
  exports["default"] = _default;
229
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL3NpZGUtcGFuZWwvbGF5ZXItcGFuZWwvbGF5ZXItY29uZmlnLWdyb3VwLmpzIl0sIm5hbWVzIjpbIlN0eWxlZExheWVyQ29uZmlnR3JvdXBBY3Rpb24iLCJzdHlsZWQiLCJkaXYiLCJwcm9wcyIsInRoZW1lIiwidGV4dENvbG9yIiwiQ29uZmlnR3JvdXBDb2xsYXBzaWJsZUNvbnRlbnQiLCJhdHRycyIsImNsYXNzTmFtZSIsIkNvbmZpZ0dyb3VwQ29sbGFwc2libGVIZWFkZXIiLCJTdHlsZWRMYXllckNvbmZpZ0dyb3VwIiwibGF5ZXJDb25maWdHcm91cFBhZGRpbmdMZWZ0IiwibGF5ZXJDb25maWdHcm91cE1hcmdpbkJvdHRvbSIsIlN0eWxlZENvbmZpZ0dyb3VwSGVhZGVyIiwidGV4dENvbG9ySGwiLCJDb25maWdHcm91cENvbnRlbnQiLCJMYXllckNvbmZpZ0dyb3VwTGFiZWxGYWN0b3J5IiwiZGVwcyIsIkluZm9IZWxwZXJGYWN0b3J5IiwiSW5mb0hlbHBlciIsIlN0eWxlZExheWVyQ29uZmlnR3JvdXBMYWJlbCIsImxheWVyQ29uZmlnR3JvdXBMYWJlbEJvcmRlckxlZnQiLCJsYWJlbENvbG9yIiwibGF5ZXJDb25maWdHcm91cExhYmVsTWFyZ2luIiwibGF5ZXJDb25maWdHcm91cExhYmVsUGFkZGluZyIsImxheWVyQ29uZmlnR3JvdXBMYWJlbExhYmVsTWFyZ2luIiwibGF5ZXJDb25maWdHcm91cExhYmVsTGFiZWxGb250U2l6ZSIsIkxheWVyQ29uZmlnR3JvdXBMYWJlbCIsImxhYmVsIiwiZGVzY3JpcHRpb24iLCJMYXllckNvbmZpZ0dyb3VwRmFjdG9yeSIsIkxheWVyQ29uZmlnR3JvdXAiLCJjb2xsYXBzZWQiLCJjaGlsZHJlbiIsInByb3BlcnR5IiwibGF5ZXIiLCJvbkNoYW5nZSIsImNvbGxhcHNpYmxlIiwiZGlzYWJsZWQiLCJDb2xsYXBzZUJ1dHRvbiIsInN0YXRlIiwiY29uZmlnIiwidmlzQ29uZmlnIiwiaWQiLCJzZXRTdGF0ZSIsImV4cGFuZGVkIiwiQ29tcG9uZW50IiwiVmVydFRocmVlRG90cyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQW9CQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7Ozs7Ozs7QUFFTyxJQUFNQSw0QkFBNEIsR0FBR0MsNkJBQU9DLEdBQVYsbUpBRzlCLFVBQUFDLEtBQUs7QUFBQSxTQUFJQSxLQUFLLENBQUNDLEtBQU4sQ0FBWUMsU0FBaEI7QUFBQSxDQUh5QixDQUFsQzs7OztBQU1BLElBQU1DLDZCQUE2QixHQUFHTCw2QkFBT0MsR0FBUCxDQUFXSyxLQUFYLENBQWlCO0FBQzVEQyxFQUFBQSxTQUFTLEVBQUU7QUFEaUQsQ0FBakIsQ0FBSCx1TUFBbkM7Ozs7QUFTQSxJQUFNQyw0QkFBNEIsR0FBR1IsNkJBQU9DLEdBQVAsQ0FBV0ssS0FBWCxDQUFpQjtBQUMzREMsRUFBQUEsU0FBUyxFQUFFO0FBRGdELENBQWpCLENBQUgsdUpBQWxDOzs7O0FBUUEsSUFBTUUsc0JBQXNCLEdBQUdULDZCQUFPQyxHQUFWLDhlQUNqQixVQUFBQyxLQUFLO0FBQUEsU0FBSUEsS0FBSyxDQUFDQyxLQUFOLENBQVlPLDJCQUFoQjtBQUFBLENBRFksRUFFaEIsVUFBQVIsS0FBSztBQUFBLFNBQUlBLEtBQUssQ0FBQ0MsS0FBTixDQUFZUSw0QkFBaEI7QUFBQSxDQUZXLENBQTVCOzs7O0FBc0JQLElBQU1DLHVCQUF1QixHQUFHWiw2QkFBT0MsR0FBVixzV0FTZCxVQUFBQyxLQUFLO0FBQUEsU0FBSUEsS0FBSyxDQUFDQyxLQUFOLENBQVlVLFdBQWhCO0FBQUEsQ0FUUyxFQWFkLFVBQUFYLEtBQUs7QUFBQSxTQUFJQSxLQUFLLENBQUNDLEtBQU4sQ0FBWVUsV0FBaEI7QUFBQSxDQWJTLENBQTdCOztBQWtCQSxJQUFNQyxrQkFBa0IsR0FBR2QsNkJBQU9DLEdBQVYsME1BQXhCOztBQVVBYyw0QkFBNEIsQ0FBQ0MsSUFB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V0FBUDtBQUNEOztBQUVELFlBQUk3QixLQUFLLENBQUNnQyxLQUFOLElBQWUsQ0FBQ2hDLEtBQUssQ0FBQ2dDLEtBQU4sQ0FBWU0sTUFBWixDQUFtQkMsU0FBbkIsQ0FBNkJ2QyxLQUFLLENBQUMrQixRQUFuQyxDQUFoQixJQUFnRSxDQUFDTSxLQUFLLENBQUNSLFNBQTNFLEVBQXNGO0FBQ3BGLGlCQUFPO0FBQUNBLFlBQUFBLFNBQVMsRUFBRTtBQUFaLFdBQVA7QUFDRDs7QUFFRCxlQUFPLElBQVA7QUFDRDtBQXRCbUQ7QUFBQTtBQUFBLElBQ3ZCYyxnQkFEdUI7O0FBQUEsbUNBQ2hEZixnQkFEZ0Qsa0JBRTlCO0FBQ3BCTSxJQUFBQSxXQUFXLEVBQUUsS0FETztBQUVwQlEsSUFBQUEsUUFBUSxFQUFFLEtBRlU7QUFHcEJULElBQUFBLFFBQVEsRUFBRSxvQkFBTSxDQUFFLENBSEU7QUFJcEJQLElBQUFBLFdBQVcsRUFBRSxJQUpPO0FBS3BCUyxJQUFBQSxRQUFRLEVBQUUsS0FMVTtBQU1wQkMsSUFBQUEsY0FBYyxFQUFFUTtBQU5JLEdBRjhCO0FBNEV0RCx1Q0FBU2hCLGdCQUFUO0FBRUEsU0FBT0EsZ0JBQVA7QUFDRDs7ZUFFY0QsdUIiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgKGMpIDIwMjIgVWJlciBUZWNobm9sb2dpZXMsIEluYy5cbi8vXG4vLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5XG4vLyBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLCB0byBkZWFsXG4vLyBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzXG4vLyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsXG4vLyBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXNcbi8vIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4vL1xuLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW5cbi8vIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuLy9cbi8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1Jcbi8vIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxuLy8gRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFXG4vLyBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSXG4vLyBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLFxuLy8gT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTlxuLy8gVEhFIFNPRlRXQVJFLlxuXG5pbXBvcnQgUmVhY3QsIHtDb21wb25lbnR9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7cG9seWZpbGx9IGZyb20gJ3JlYWN0LWxpZmVjeWNsZXMtY29tcGF0JztcbmltcG9ydCBzdHlsZWQgZnJvbSAnc3R5bGVkLWNvbXBvbmVudHMnO1xuaW1wb3J0IGNsYXNzbmFtZXMgZnJvbSAnY2xhc3NuYW1lcyc7XG5pbXBvcnQge0Zvcm1hdHRlZE1lc3NhZ2V9IGZyb20gJ3JlYWN0LWludGwnO1xuaW1wb3J0IFN3aXRjaCBmcm9tICdjb21wb25lbnRzL2NvbW1vbi9zd2l0Y2gnO1xuaW1wb3J0IEluZm9IZWxwZXJGYWN0b3J5IGZyb20gJ2NvbXBvbmVudHMvY29tbW9uL2luZm8taGVscGVyJztcbmltcG9ydCB7VmVydFRocmVlRG90c30gZnJvbSAnY29tcG9uZW50cy9jb21tb24vaWNvbnMnO1xuXG5leHBvcnQgY29uc3QgU3R5bGVkTGF5ZXJDb25maWdHcm91cEFjdGlvbiA9IHN0eWxlZC5kaXZgXG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGNvbG9yOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLnRleHRDb2xvcn07XG5gO1xuXG5leHBvcnQgY29uc3QgQ29uZmlnR3JvdXBDb2xsYXBzaWJsZUNvbnRlbnQgPSBzdHlsZWQuZGl2LmF0dHJzKHtcbiAgY2xhc3NOYW1lOiAnbGF5ZXItY29uZmlnLWdyb3VwX19jb250ZW50X19jb2xsYXBzaWJsZSdcbn0pYFxuICBvdmVyZmxvdzogdmlzaWJsZTtcbiAgdHJhbnNpdGlvbjogbWF4LWhlaWdodCAwLjNzIGVhc2Utb3V0O1xuICBoZWlnaHQ6IG1heC1jb250ZW50O1xuICBtYXgtaGVpZ2h0OiA2MDBweDtcbmA7XG5cbmV4cG9ydCBjb25zdCBDb25maWdHcm91cENvbGxhcHNpYmxlSGVhZGVyID0gc3R5bGVkLmRpdi5hdHRycyh7XG4gIGNsYXNzTmFtZTogJ2xheWVyLWNvbmZpZy1ncm91cF9faGVhZGVyX19jb2xsYXBzaWJsZSdcbn0pYFxuICBvdmVyZmxvdzogdmlzaWJsZTtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgbWF4LWhlaWdodDogMDtcbmA7XG5cbmV4cG9ydCBjb25zdCBTdHlsZWRMYXllckNvbmZpZ0dyb3VwID0gc3R5bGVkLmRpdmBcbiAgcGFkZGluZy1sZWZ0OiAke3Byb3BzID0+IHByb3BzLnRoZW1lLmxheWVyQ29uZmlnR3JvdXBQYWRkaW5nTGVmdH1weDtcbiAgbWFyZ2luLWJvdHRvbTogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5sYXllckNvbmZpZ0dyb3VwTWFyZ2luQm90dG9tfXB4O1xuXG4gICYuZGlzYWJsZWQge1xuICAgIG9wYWNpdHk6IDAuMztcbiAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgfVxuICAmLmNvbGxhcHNlZCB7XG4gICAgLmxheWVyLWNvbmZpZy1ncm91cF9faGVhZGVyX19jb2xsYXBzaWJsZSB7XG4gICAgICBvdmVyZmxvdzogdmlzaWJsZTtcbiAgICAgIG1heC1oZWlnaHQ6IDYwMHB4O1xuICAgIH1cbiAgICAubGF5ZXItY29uZmlnLWdyb3VwX19jb250ZW50IHtcbiAgICAgIC5sYXllci1jb25maWctZ3JvdXBfX2NvbnRlbnRfX2NvbGxhcHNpYmxlIHtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgbWF4LWhlaWdodDogMDtcbiAgICAgIH1cbiAgICB9XG4gIH1cbmA7XG5cbmNvbnN0IFN0eWxlZENvbmZpZ0dyb3VwSGVhZGVyID0gc3R5bGVkLmRpdmBcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICBtYXJnaW4tYm90dG9tOiAxMnB4O1xuXG4gIDpob3ZlciB7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIC5sYXllci1jb25maWctZ3JvdXBfX2xhYmVsIHtcbiAgICAgIGNvbG9yOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLnRleHRDb2xvckhsfTtcbiAgICB9XG5cbiAgICAubGF5ZXItY29uZmlnLWdyb3VwX19hY3Rpb24ge1xuICAgICAgY29sb3I6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUudGV4dENvbG9ySGx9O1xuICAgIH1cbiAgfVxuYDtcblxuY29uc3QgQ29uZmlnR3JvdXBDb250ZW50ID0gc3R5bGVkLmRpdmBcbiAgJi5kaXNhYmxlZCB7XG4gICAgb3BhY2l0eTogMC4zO1xuICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICAgICoge1xuICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gICAgfVxuICB9XG5gO1xuXG5MYXllckNvbmZpZ0dyb3VwTGFiZWxGYWN0b3J5LmRlcHMgPSBbSW5mb0hlbHBlckZhY3RvcnldO1xuXG5leHBvcnQgZnVuY3Rpb24gTGF5ZXJDb25maWdHcm91cExhYmVsRmFjdG9yeShJbmZvSGVscGVyKSB7XG4gIGNvbnN0IFN0eWxlZExheWVyQ29uZmlnR3JvdXBMYWJlbCA9IHN0eWxlZC5kaXZgXG4gICAgYm9yZGVyLWxlZnQ6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUubGF5ZXJDb25maWdHcm91cExhYmVsQm9yZGVyTGVmdH0gc29saWRcbiAgICAgICR7cHJvcHMgPT4gcHJvcHMudGhlbWUubGFiZWxDb2xvcn07XG4gICAgbGluZS1oZWlnaHQ6IDEycHg7XG4gICAgbWFyZ2luLWxlZnQ6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUubGF5ZXJDb25maWdHcm91cExhYmVsTWFyZ2lufTtcbiAgICBwYWRkaW5nLWxlZnQ6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUubGF5ZXJDb25maWdHcm91cExhYmVsUGFkZGluZ307XG5cbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cbiAgICBzcGFuIHtcbiAgICAgIGNvbG9yOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLnRleHRDb2xvcn07XG4gICAgICBmb250LXdlaWdodDogNTAwO1xuICAgICAgbGV0dGVyLXNwYWNpbmc6IDAuMnB4O1xuICAgICAgdGV4dC10cmFuc2Zvcm06IGNhcGl0YWxpemU7XG4gICAgICBtYXJnaW4tbGVmdDogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5sYXllckNvbmZpZ0dyb3VwTGFiZWxMYWJlbE1hcmdpbn07XG4gICAgICBmb250LXNpemU6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUubGF5ZXJDb25maWdHcm91cExhYmVsTGFiZWxGb250U2l6ZX07XG4gICAgfVxuICBgO1xuXG4gIGNvbnN0IExheWVyQ29uZmlnR3JvdXBMYWJlbCA9ICh7bGFiZWwsIGRlc2NyaXB0aW9ufSkgPT4gKFxuICAgIDxTdHlsZWRMYXllckNvbmZpZ0dyb3VwTGFiZWwgY2xhc3NOYW1lPVwibGF5ZXItY29uZmlnLWdyb3VwX19sYWJlbFwiPlxuICAgICAgPHNwYW4+XG4gICAgICAgIDxGb3JtYXR0ZWRNZXNzYWdlIGlkPXtsYWJlbCB8fCAnbWlzYy5lbXB0eSd9IGRlZmF1bHRNZXNzYWdlPXtsYWJlbH0gLz5cbiAgICAgIDwvc3Bhbj5cbiAgICAgIHtkZXNjcmlwdGlvbiAmJiA8SW5mb0hlbHBlciBkZXNjcmlwdGlvbj17ZGVzY3JpcHRpb259IGlkPXtsYWJlbH0gLz59XG4gICAgPC9TdHlsZWRMYXllckNvbmZpZ0dyb3VwTGFiZWw+XG4gICk7XG5cbiAgcmV0dXJuIExheWVyQ29uZmlnR3JvdXBMYWJlbDtcbn1cblxuTGF5ZXJDb25maWdHcm91cEZhY3RvcnkuZGVwcyA9IFtMYXllckNvbmZpZ0dyb3VwTGFiZWxGYWN0b3J5XTtcblxuZnVuY3Rpb24gTGF5ZXJDb25maWdHcm91cEZhY3RvcnkoTGF5ZXJDb25maWdHcm91cExhYmVsKSB7XG4gIGNsYXNzIExheWVyQ29uZmlnR3JvdXAgZXh0ZW5kcyBDb21wb25lbnQge1xuICAgIHN0YXRpYyBkZWZhdWx0UHJvcHMgPSB7XG4gICAgICBjb2xsYXBzaWJsZTogZmFsc2UsXG4gICAgICBleHBhbmRlZDogZmFsc2UsXG4gICAgICBvbkNoYW5nZTogKCkgPT4ge30sXG4gICAgICBkZXNjcmlwdGlvbjogbnVsbCxcbiAgICAgIGRpc2FibGVkOiBmYWxzZSxcbiAgICAgIENvbGxhcHNlQnV0dG9uOiBWZXJ0VGhyZWVEb3RzXG4gICAgfTtcblxuICAgIHN0YXRpYyBnZXREZXJpdmVkU3RhdGVGcm9tUHJvcHMocHJvcHMsIHN0YXRlKSB7XG4gICAgICAvLyAgaW52b2tlZCBhZnRlciBhIGNvbXBvbmVudCBpcyBpbnN0YW50aWF0ZWQgYXMgd2VsbCBhcyBiZWZvcmUgaXQgaXMgcmUtcmVuZGVyZWRcbiAgICAgIGlmIChwcm9wcy5leHBhbmRlZCAmJiBzdGF0ZS5jb2xsYXBzZWQpIHtcbiAgICAgICAgcmV0dXJuIHtjb2xsYXBzZWQ6IGZhbHNlfTtcbiAgICAgIH1cblxuICAgICAgaWYgKHByb3BzLmxheWVyICYmICFwcm9wcy5sYXllci5jb25maWcudmlzQ29uZmlnW3Byb3BzLnByb3BlcnR5XSAmJiAhc3RhdGUuY29sbGFwc2VkKSB7XG4gICAgICAgIHJldHVybiB7Y29sbGFwc2VkOiB0cnVlfTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgc3RhdGUgPSB7XG4gICAgICBjb2xsYXBzZWQ6IHRydWVcbiAgICB9O1xuXG4gICAgcmVuZGVyKCkge1xuICAgICAgY29uc3Qge1xuICAgICAgICBsYWJlbCxcbiAgICAgICAgY2hpbGRyZW4sXG4gICAgICAgIHByb3BlcnR5LFxuICAgICAgICBsYXllcixcbiAgICAgICAgb25DaGFuZ2UsXG4gICAgICAgIGNvbGxhcHNpYmxlLFxuICAgICAgICBkZXNjcmlwdGlvbixcbiAgICAgICAgZGlzYWJsZWQsXG4gICAgICAgIENvbGxhcHNlQnV0dG9uXG4gICAgICB9ID0gdGhpcy5wcm9wcztcblxuICAgICAgY29uc3Qge2NvbGxhcHNlZH0gPSB0aGlzLnN0YXRlO1xuXG4gICAgICByZXR1cm4gKFxuICAgICAgICA8U3R5bGVkTGF5ZXJDb25maWdHcm91cCBjbGFzc05hbWU9e2NsYXNzbmFtZXMoJ2xheWVyLWNvbmZpZy1ncm91cCcsIHtjb2xsYXBzZWQsIGRpc2FibGVkfSl9PlxuICAgICAgICAgIDxTdHlsZWRDb25maWdHcm91cEhlYWRlciBjbGFzc05hbWU9XCJsYXllci1jb25maWctZ3JvdXBfX2hlYWRlclwiPlxuICAgICAgICAgICAgPExheWVyQ29uZmlnR3JvdXBMYWJlbCBsYWJlbD17bGFiZWx9IGRlc2NyaXB0aW9uPXtkZXNjcmlwdGlvbn0gLz5cbiAgICAgICAgICAgIDxTdHlsZWRMYXllckNvbmZpZ0dyb3VwQWN0aW9uIGNsYXNzTmFtZT1cImxheWVyLWNvbmZpZy1ncm91cF9fYWN0aW9uXCI+XG4gICAgICAgICAgICAgIHtwcm9wZXJ0eSA/IChcbiAgICAgICAgICAgICAgICA8U3dpdGNoXG4gICAgICAgICAgICAgICAgICBjaGVja2VkPXtsYXllci5jb25maWcudmlzQ29uZmlnW3Byb3BlcnR5XX1cbiAgICAgICAgICAgICAgICAgIGlkPXtgJHtsYXllci5pZH0tJHtwcm9wZXJ0eX1gfVxuICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eygpID0+IG9uQ2hhbmdlKHtbcHJvcGVydHldOiAhbGF5ZXIuY29uZmlnLnZpc0NvbmZpZ1twcm9wZXJ0eV19KX1cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICAgICAge2NvbGxhcHNpYmxlID8gKFxuICAgICAgICAgICAgICAgIDxDb2xsYXBzZUJ1dHRvblxuICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gdGhpcy5zZXRTdGF0ZSh7Y29sbGFwc2VkOiAhdGhpcy5zdGF0ZS5jb2xsYXBzZWR9KX1cbiAgICAgICAgICAgICAgICAgIGFjdGl2ZT17IXRoaXMuc3RhdGUuY29sbGFwc2VkfVxuICAgICAgICAgICAgICAgICAgaGVpZ2h0PVwiMThweFwiXG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgICAgICA8L1N0eWxlZExheWVyQ29uZmlnR3JvdXBBY3Rpb24+XG4gICAgICAgICAgPC9TdHlsZWRDb25maWdHcm91cEhlYWRlcj5cbiAgICAgICAgICA8Q29uZmlnR3JvdXBDb250ZW50XG4gICAgICAgICAgICBjbGFzc05hbWU9e2NsYXNzbmFtZXMoJ2xheWVyLWNvbmZpZy1ncm91cF9fY29udGVudCcsIHtcbiAgICAgICAgICAgICAgZGlzYWJsZWQ6IHByb3BlcnR5ICYmICFsYXllci5jb25maWcudmlzQ29uZmlnW3Byb3BlcnR5XVxuICAgICAgICAgICAgfSl9XG4gICAgICAgICAgPlxuICAgICAgICAgICAge2NoaWxkcmVufVxuICAgICAgICAgIDwvQ29uZmlnR3JvdXBDb250ZW50PlxuICAgICAgICA8L1N0eWxlZExheWVyQ29uZmlnR3JvdXA+XG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIHBvbHlmaWxsKExheWVyQ29uZmlnR3JvdXApO1xuXG4gIHJldHVybiBMYXllckNvbmZpZ0dyb3VwO1xufVxuXG5leHBvcnQgZGVmYXVsdCBMYXllckNvbmZpZ0dyb3VwRmFjdG9yeTtcbiJdfQ==
245
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL3NpZGUtcGFuZWwvbGF5ZXItcGFuZWwvbGF5ZXItY29uZmlnLWdyb3VwLmpzIl0sIm5hbWVzIjpbIlN0eWxlZExheWVyQ29uZmlnR3JvdXBBY3Rpb24iLCJzdHlsZWQiLCJkaXYiLCJwcm9wcyIsInRoZW1lIiwidGV4dENvbG9yIiwiQ29uZmlnR3JvdXBDb2xsYXBzaWJsZUNvbnRlbnQiLCJhdHRycyIsImNsYXNzTmFtZSIsIkNvbmZpZ0dyb3VwQ29sbGFwc2libGVIZWFkZXIiLCJTdHlsZWRMYXllckNvbmZpZ0dyb3VwIiwibGF5ZXJDb25maWdHcm91cFBhZGRpbmdMZWZ0IiwibGF5ZXJDb25maWdHcm91cE1hcmdpbkJvdHRvbSIsIlN0eWxlZENvbmZpZ0dyb3VwSGVhZGVyIiwidGV4dENvbG9ySGwiLCJDb25maWdHcm91cENvbnRlbnQiLCJTdHlsZWRMYXllckNvbmZpZ0dyb3VwU3dpdGNoIiwic3dpdGNoV2lkdGgiLCJzd2l0Y2hMYWJlbE1hcmdpbiIsIkxheWVyQ29uZmlnR3JvdXBMYWJlbEZhY3RvcnkiLCJkZXBzIiwiSW5mb0hlbHBlckZhY3RvcnkiLCJJbmZvSGVscGVyIiwiU3R5bGVkTGF5ZXJDb25maWdHcm91cExhYmVsIiwibGF5ZXJDb25maWdHcm91cExhYmVsQm9yZGVyTGVmdCIsImxhYmVsQ29sb3IiLCJsYXllckNvbmZpZ0dyb3VwTGFiZWxNYXJnaW4iLCJsYXllckNvbmZpZ0dyb3VwTGFiZWxQYWRkaW5nIiwibGF5ZXJDb25maWdHcm91cExhYmVsTGFiZWxNYXJnaW4iLCJsYXllckNvbmZpZ0dyb3VwTGFiZWxMYWJlbEZvbnRTaXplIiwiTGF5ZXJDb25maWdHcm91cExhYmVsIiwibGFiZWwiLCJkZXNjcmlwdGlvbiIsIkxheWVyQ29uZmlnR3JvdXBGYWN0b3J5IiwiTGF5ZXJDb25maWdHcm91cCIsImNvbGxhcHNlZCIsImNoaWxkcmVuIiwicHJvcGVydHkiLCJzd2l0Y2hUb29sdGlwIiwibGF5ZXIiLCJvbkNoYW5nZSIsImNvbGxhcHNpYmxlIiwiZGlzYWJsZWQiLCJDb2xsYXBzZUJ1dHRvbiIsInN0YXRlIiwiaWQiLCJjb25maWciLCJ2aXNDb25maWciLCJzZXRTdGF0ZSIsImV4cGFuZGVkIiwiQ29tcG9uZW50IiwiVmVydFRocmVlRG90cyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQW9CQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7Ozs7Ozs7QUFFTyxJQUFNQSw0QkFBNEIsR0FBR0MsNkJBQU9DLEdBQVYsbUpBRzlCLFVBQUFDLEtBQUs7QUFBQSxTQUFJQSxLQUFLLENBQUNDLEtBQU4sQ0FBWUMsU0FBaEI7QUFBQSxDQUh5QixDQUFsQzs7OztBQU1BLElBQU1DLDZCQUE2QixHQUFHTCw2QkFBT0MsR0FBUCxDQUFXSyxLQUFYLENBQWlCO0FBQzVEQyxFQUFBQSxTQUFTLEVBQUU7QUFEaUQsQ0FBakIsQ0FBSCx1TUFBbkM7Ozs7QUFTQSxJQUFNQyw0QkFBNEIsR0FBR1IsNkJBQU9DLEdBQVAsQ0FBV0ssS0FBWCxDQUFpQjtBQUMzREMsRUFBQUEsU0FBUyxFQUFFO0FBRGdELENBQWpCLENBQUgsdUpBQWxDOzs7O0FBUUEsSUFBTUUsc0JBQXNCLEdBQUdULDZCQUFPQyxHQUFWLDhlQUNqQixVQUFBQyxLQUFLO0FBQUEsU0FBSUEsS0FBSyxDQUFDQyxLQUFOLENBQVlPLDJCQUFoQjtBQUFBLENBRFksRUFFaEIsVUFBQVIsS0FBSztBQUFBLFNBQUlBLEtBQUssQ0FBQ0MsS0FBTixDQUFZUSw0QkFBaEI7QUFBQSxDQUZXLENBQTVCOzs7O0FBc0JQLElBQU1DLHVCQUF1QixHQUFHWiw2QkFBT0MsR0FBVixzV0FTZCxVQUFBQyxLQUFLO0FBQUEsU0FBSUEsS0FBSyxDQUFDQyxLQUFOLENBQVlVLFdBQWhCO0FBQUEsQ0FUUyxFQWFkLFVBQUFYLEtBQUs7QUFBQSxTQUFJQSxLQUFLLENBQUNDLEtBQU4sQ0FBWVUsV0FB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QSxRQUFRLEVBQUUsb0JBQU0sQ0FBRSxDQUhFO0FBSXBCUixJQUFBQSxXQUFXLEVBQUUsSUFKTztBQUtwQlUsSUFBQUEsUUFBUSxFQUFFLEtBTFU7QUFNcEJDLElBQUFBLGNBQWMsRUFBRVE7QUFOSSxHQUY4QjtBQW9GdEQsdUNBQVNqQixnQkFBVDtBQUVBLFNBQU9BLGdCQUFQO0FBQ0Q7O2VBRWNELHVCIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IChjKSAyMDIyIFViZXIgVGVjaG5vbG9naWVzLCBJbmMuXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuLy8gb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbFxuLy8gaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0c1xuLy8gdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuLy8gY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG4vLyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy9cbi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluXG4vLyBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vXG4vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4vLyBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbi8vIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuLy8gQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuLy8gTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbi8vIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU5cbi8vIFRIRSBTT0ZUV0FSRS5cblxuaW1wb3J0IFJlYWN0LCB7Q29tcG9uZW50fSBmcm9tICdyZWFjdCc7XG5pbXBvcnQge3BvbHlmaWxsfSBmcm9tICdyZWFjdC1saWZlY3ljbGVzLWNvbXBhdCc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJ3N0eWxlZC1jb21wb25lbnRzJztcbmltcG9ydCB7VG9vbHRpcH0gZnJvbSAnY29tcG9uZW50cy9jb21tb24vc3R5bGVkLWNvbXBvbmVudHMnO1xuaW1wb3J0IGNsYXNzbmFtZXMgZnJvbSAnY2xhc3NuYW1lcyc7XG5pbXBvcnQge0Zvcm1hdHRlZE1lc3NhZ2V9IGZyb20gJ3JlYWN0LWludGwnO1xuaW1wb3J0IFN3aXRjaCBmcm9tICdjb21wb25lbnRzL2NvbW1vbi9zd2l0Y2gnO1xuaW1wb3J0IEluZm9IZWxwZXJGYWN0b3J5IGZyb20gJ2NvbXBvbmVudHMvY29tbW9uL2luZm8taGVscGVyJztcbmltcG9ydCB7VmVydFRocmVlRG90c30gZnJvbSAnY29tcG9uZW50cy9jb21tb24vaWNvbnMnO1xuXG5leHBvcnQgY29uc3QgU3R5bGVkTGF5ZXJDb25maWdHcm91cEFjdGlvbiA9IHN0eWxlZC5kaXZgXG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGNvbG9yOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLnRleHRDb2xvcn07XG5gO1xuXG5leHBvcnQgY29uc3QgQ29uZmlnR3JvdXBDb2xsYXBzaWJsZUNvbnRlbnQgPSBzdHlsZWQuZGl2LmF0dHJzKHtcbiAgY2xhc3NOYW1lOiAnbGF5ZXItY29uZmlnLWdyb3VwX19jb250ZW50X19jb2xsYXBzaWJsZSdcbn0pYFxuICBvdmVyZmxvdzogdmlzaWJsZTtcbiAgdHJhbnNpdGlvbjogbWF4LWhlaWdodCAwLjNzIGVhc2Utb3V0O1xuICBoZWlnaHQ6IG1heC1jb250ZW50O1xuICBtYXgtaGVpZ2h0OiA2MDBweDtcbmA7XG5cbmV4cG9ydCBjb25zdCBDb25maWdHcm91cENvbGxhcHNpYmxlSGVhZGVyID0gc3R5bGVkLmRpdi5hdHRycyh7XG4gIGNsYXNzTmFtZTogJ2xheWVyLWNvbmZpZy1ncm91cF9faGVhZGVyX19jb2xsYXBzaWJsZSdcbn0pYFxuICBvdmVyZmxvdzogdmlzaWJsZTtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgbWF4LWhlaWdodDogMDtcbmA7XG5cbmV4cG9ydCBjb25zdCBTdHlsZWRMYXllckNvbmZpZ0dyb3VwID0gc3R5bGVkLmRpdmBcbiAgcGFkZGluZy1sZWZ0OiAke3Byb3BzID0+IHByb3BzLnRoZW1lLmxheWVyQ29uZmlnR3JvdXBQYWRkaW5nTGVmdH1weDtcbiAgbWFyZ2luLWJvdHRvbTogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5sYXllckNvbmZpZ0dyb3VwTWFyZ2luQm90dG9tfXB4O1xuXG4gICYuZGlzYWJsZWQge1xuICAgIG9wYWNpdHk6IDAuMztcbiAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgfVxuICAmLmNvbGxhcHNlZCB7XG4gICAgLmxheWVyLWNvbmZpZy1ncm91cF9faGVhZGVyX19jb2xsYXBzaWJsZSB7XG4gICAgICBvdmVyZmxvdzogdmlzaWJsZTtcbiAgICAgIG1heC1oZWlnaHQ6IDYwMHB4O1xuICAgIH1cbiAgICAubGF5ZXItY29uZmlnLWdyb3VwX19jb250ZW50IHtcbiAgICAgIC5sYXllci1jb25maWctZ3JvdXBfX2NvbnRlbnRfX2NvbGxhcHNpYmxlIHtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgbWF4LWhlaWdodDogMDtcbiAgICAgIH1cbiAgICB9XG4gIH1cbmA7XG5cbmNvbnN0IFN0eWxlZENvbmZpZ0dyb3VwSGVhZGVyID0gc3R5bGVkLmRpdmBcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICBtYXJnaW4tYm90dG9tOiAxMnB4O1xuXG4gIDpob3ZlciB7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIC5sYXllci1jb25maWctZ3JvdXBfX2xhYmVsIHtcbiAgICAgIGNvbG9yOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLnRleHRDb2xvckhsfTtcbiAgICB9XG5cbiAgICAubGF5ZXItY29uZmlnLWdyb3VwX19hY3Rpb24ge1xuICAgICAgY29sb3I6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUudGV4dENvbG9ySGx9O1xuICAgIH1cbiAgfVxuYDtcblxuY29uc3QgQ29uZmlnR3JvdXBDb250ZW50ID0gc3R5bGVkLmRpdmBcbiAgJi5kaXNhYmxlZCB7XG4gICAgb3BhY2l0eTogMC4zO1xuICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICAgICoge1xuICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gICAgfVxuICB9XG5gO1xuXG5jb25zdCBTdHlsZWRMYXllckNvbmZpZ0dyb3VwU3dpdGNoID0gc3R5bGVkLmRpdmBcbiAgd2lkdGg6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuc3dpdGNoV2lkdGh9cHg7XG4gIG1hcmdpbi1yaWdodDogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5zd2l0Y2hMYWJlbE1hcmdpbn1weDtcbmA7XG5cbkxheWVyQ29uZmlnR3JvdXBMYWJlbEZhY3RvcnkuZGVwcyA9IFtJbmZvSGVscGVyRmFjdG9yeV07XG5cbmV4cG9ydCBmdW5jdGlvbiBMYXllckNvbmZpZ0dyb3VwTGFiZWxGYWN0b3J5KEluZm9IZWxwZXIpIHtcbiAgY29uc3QgU3R5bGVkTGF5ZXJDb25maWdHcm91cExhYmVsID0gc3R5bGVkLmRpdmBcbiAgICBib3JkZXItbGVmdDogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5sYXllckNvbmZpZ0dyb3VwTGFiZWxCb3JkZXJMZWZ0fSBzb2xpZFxuICAgICAgJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5sYWJlbENvbG9yfTtcbiAgICBsaW5lLWhlaWdodDogMTJweDtcbiAgICBtYXJnaW4tbGVmdDogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5sYXllckNvbmZpZ0dyb3VwTGFiZWxNYXJnaW59O1xuICAgIHBhZGRpbmctbGVmdDogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5sYXllckNvbmZpZ0dyb3VwTGFiZWxQYWRkaW5nfTtcblxuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcblxuICAgIHNwYW4ge1xuICAgICAgY29sb3I6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUudGV4dENvbG9yfTtcbiAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7XG4gICAgICBsZXR0ZXItc3BhY2luZzogMC4ycHg7XG4gICAgICB0ZXh0LXRyYW5zZm9ybTogY2FwaXRhbGl6ZTtcbiAgICAgIG1hcmdpbi1sZWZ0OiAke3Byb3BzID0+IHByb3BzLnRoZW1lLmxheWVyQ29uZmlnR3JvdXBMYWJlbExhYmVsTWFyZ2lufTtcbiAgICAgIGZvbnQtc2l6ZTogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5sYXllckNvbmZpZ0dyb3VwTGFiZWxMYWJlbEZvbnRTaXplfTtcbiAgICB9XG4gIGA7XG5cbiAgY29uc3QgTGF5ZXJDb25maWdHcm91cExhYmVsID0gKHtsYWJlbCwgZGVzY3JpcHRpb259KSA9PiAoXG4gICAgPFN0eWxlZExheWVyQ29uZmlnR3JvdXBMYWJlbCBjbGFzc05hbWU9XCJsYXllci1jb25maWctZ3JvdXBfX2xhYmVsXCI+XG4gICAgICA8c3Bhbj5cbiAgICAgICAgPEZvcm1hdHRlZE1lc3NhZ2UgaWQ9e2xhYmVsIHx8ICdtaXNjLmVtcHR5J30gZGVmYXVsdE1lc3NhZ2U9e2xhYmVsfSAvPlxuICAgICAgPC9zcGFuPlxuICAgICAge2Rlc2NyaXB0aW9uICYmIDxJbmZvSGVscGVyIGRlc2NyaXB0aW9uPXtkZXNjcmlwdGlvbn0gaWQ9e2xhYmVsfSAvPn1cbiAgICA8L1N0eWxlZExheWVyQ29uZmlnR3JvdXBMYWJlbD5cbiAgKTtcblxuICByZXR1cm4gTGF5ZXJDb25maWdHcm91cExhYmVsO1xufVxuXG5MYXllckNvbmZpZ0dyb3VwRmFjdG9yeS5kZXBzID0gW0xheWVyQ29uZmlnR3JvdXBMYWJlbEZhY3RvcnldO1xuXG5mdW5jdGlvbiBMYXllckNvbmZpZ0dyb3VwRmFjdG9yeShMYXllckNvbmZpZ0dyb3VwTGFiZWwpIHtcbiAgY2xhc3MgTGF5ZXJDb25maWdHcm91cCBleHRlbmRzIENvbXBvbmVudCB7XG4gICAgc3RhdGljIGRlZmF1bHRQcm9wcyA9IHtcbiAgICAgIGNvbGxhcHNpYmxlOiBmYWxzZSxcbiAgICAgIGV4cGFuZGVkOiBmYWxzZSxcbiAgICAgIG9uQ2hhbmdlOiAoKSA9PiB7fSxcbiAgICAgIGRlc2NyaXB0aW9uOiBudWxsLFxuICAgICAgZGlzYWJsZWQ6IGZhbHNlLFxuICAgICAgQ29sbGFwc2VCdXR0b246IFZlcnRUaHJlZURvdHNcbiAgICB9O1xuXG4gICAgc3RhdGljIGdldERlcml2ZWRTdGF0ZUZyb21Qcm9wcyhwcm9wcywgc3RhdGUpIHtcbiAgICAgIC8vICBpbnZva2VkIGFmdGVyIGEgY29tcG9uZW50IGlzIGluc3RhbnRpYXRlZCBhcyB3ZWxsIGFzIGJlZm9yZSBpdCBpcyByZS1yZW5kZXJlZFxuICAgICAgaWYgKHByb3BzLmV4cGFuZGVkICYmIHN0YXRlLmNvbGxhcHNlZCkge1xuICAgICAgICByZXR1cm4ge2NvbGxhcHNlZDogZmFsc2V9O1xuICAgICAgfVxuXG4gICAgICBpZiAocHJvcHMubGF5ZXIgJiYgIXByb3BzLmxheWVyLmNvbmZpZy52aXNDb25maWdbcHJvcHMucHJvcGVydHldICYmICFzdGF0ZS5jb2xsYXBzZWQpIHtcbiAgICAgICAgcmV0dXJuIHtjb2xsYXBzZWQ6IHRydWV9O1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBzdGF0ZSA9IHtcbiAgICAgIGNvbGxhcHNlZDogdHJ1ZVxuICAgIH07XG5cbiAgICByZW5kZXIoKSB7XG4gICAgICBjb25zdCB7XG4gICAgICAgIGxhYmVsLFxuICAgICAgICBjaGlsZHJlbixcbiAgICAgICAgcHJvcGVydHksXG4gICAgICAgIHN3aXRjaFRvb2x0aXAsXG4gICAgICAgIGxheWVyLFxuICAgICAgICBvbkNoYW5nZSxcbiAgICAgICAgY29sbGFwc2libGUsXG4gICAgICAgIGRlc2NyaXB0aW9uLFxuICAgICAgICBkaXNhYmxlZCxcbiAgICAgICAgQ29sbGFwc2VCdXR0b25cbiAgICAgIH0gPSB0aGlzLnByb3BzO1xuXG4gICAgICBjb25zdCB7Y29sbGFwc2VkfSA9IHRoaXMuc3RhdGU7XG5cbiAgICAgIHJldHVybiAoXG4gICAgICAgIDxTdHlsZWRMYXllckNvbmZpZ0dyb3VwIGNsYXNzTmFtZT17Y2xhc3NuYW1lcygnbGF5ZXItY29uZmlnLWdyb3VwJywge2NvbGxhcHNlZCwgZGlzYWJsZWR9KX0+XG4gICAgICAgICAgPFN0eWxlZENvbmZpZ0dyb3VwSGVhZGVyIGNsYXNzTmFtZT1cImxheWVyLWNvbmZpZy1ncm91cF9faGVhZGVyXCI+XG4gICAgICAgICAgICA8TGF5ZXJDb25maWdHcm91cExhYmVsIGxhYmVsPXtsYWJlbH0gZGVzY3JpcHRpb249e2Rlc2NyaXB0aW9ufSAvPlxuICAgICAgICAgICAgPFN0eWxlZExheWVyQ29uZmlnR3JvdXBBY3Rpb24gY2xhc3NOYW1lPVwibGF5ZXItY29uZmlnLWdyb3VwX19hY3Rpb25cIj5cbiAgICAgICAgICAgICAge3Byb3BlcnR5ID8gKFxuICAgICAgICAgICAgICAgIDxTdHlsZWRMYXllckNvbmZpZ0dyb3VwU3dpdGNoIGRhdGEtdGlwIGRhdGEtZm9yPXtgJHtsYXllci5pZH0tJHtsYWJlbH0tdG9vbHRpcGB9PlxuICAgICAgICAgICAgICAgICAgPFN3aXRjaFxuICAgICAgICAgICAgICAgICAgICBjaGVja2VkPXtsYXllci5jb25maWcudmlzQ29uZmlnW3Byb3BlcnR5XX1cbiAgICAgICAgICAgICAgICAgICAgaWQ9e2Ake2xheWVyLmlkfS0ke3Byb3BlcnR5fWB9XG4gICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsoKSA9PiBvbkNoYW5nZSh7W3Byb3BlcnR5XTogIWxheWVyLmNvbmZpZy52aXNDb25maWdbcHJvcGVydHldfSl9XG4gICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAge3N3aXRjaFRvb2x0aXAgPyAoXG4gICAgICAgICAgICAgICAgICAgIDxUb29sdGlwIGlkPXtgJHtsYXllci5pZH0tJHtsYWJlbH0tdG9vbHRpcGB9IGVmZmVjdD1cInNvbGlkXCIgcGxhY2U9XCJ0b3BcIj5cbiAgICAgICAgICAgICAgICAgICAgICB7c3dpdGNoVG9vbHRpcH1cbiAgICAgICAgICAgICAgICAgICAgPC9Ub29sdGlwPlxuICAgICAgICAgICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgICAgICAgICAgPC9TdHlsZWRMYXllckNvbmZpZ0dyb3VwU3dpdGNoPlxuICAgICAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICAgICAge2NvbGxhcHNpYmxlID8gKFxuICAgICAgICAgICAgICAgIDxDb2xsYXBzZUJ1dHRvblxuICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gdGhpcy5zZXRTdGF0ZSh7Y29sbGFwc2VkOiAhdGhpcy5zdGF0ZS5jb2xsYXBzZWR9KX1cbiAgICAgICAgICAgICAgICAgIGFjdGl2ZT17IXRoaXMuc3RhdGUuY29sbGFwc2VkfVxuICAgICAgICAgICAgICAgICAgaGVpZ2h0PVwiMThweFwiXG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgICAgICA8L1N0eWxlZExheWVyQ29uZmlnR3JvdXBBY3Rpb24+XG4gICAgICAgICAgPC9TdHlsZWRDb25maWdHcm91cEhlYWRlcj5cbiAgICAgICAgICA8Q29uZmlnR3JvdXBDb250ZW50XG4gICAgICAgICAgICBjbGFzc05hbWU9e2NsYXNzbmFtZXMoJ2xheWVyLWNvbmZpZy1ncm91cF9fY29udGVudCcsIHtcbiAgICAgICAgICAgICAgZGlzYWJsZWQ6IHByb3BlcnR5ICYmICFsYXllci5jb25maWcudmlzQ29uZmlnW3Byb3BlcnR5XVxuICAgICAgICAgICAgfSl9XG4gICAgICAgICAgPlxuICAgICAgICAgICAge2NoaWxkcmVufVxuICAgICAgICAgIDwvQ29uZmlnR3JvdXBDb250ZW50PlxuICAgICAgICA8L1N0eWxlZExheWVyQ29uZmlnR3JvdXA+XG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIHBvbHlmaWxsKExheWVyQ29uZmlnR3JvdXApO1xuXG4gIHJldHVybiBMYXllckNvbmZpZ0dyb3VwO1xufVxuXG5leHBvcnQgZGVmYXVsdCBMYXllckNvbmZpZ0dyb3VwRmFjdG9yeTtcbiJdfQ==