@kepler.gl/reducers 3.3.0-alpha.16 → 3.3.0-alpha.18

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 (42) hide show
  1. package/dist/cjs/column-edit-reconcile.js +100 -0
  2. package/dist/cjs/column-edit-updaters.spec.js +840 -0
  3. package/dist/cjs/combined-updaters.js +28 -9
  4. package/dist/cjs/dataset-ops-updaters.js +101 -15
  5. package/dist/cjs/dataset-ops-updaters.spec.js +129 -4
  6. package/dist/cjs/export-utils.js +118 -46
  7. package/dist/cjs/interaction-utils.js +11 -3
  8. package/dist/cjs/layer-utils.js +3 -2
  9. package/dist/cjs/ui-state-updaters.js +70 -26
  10. package/dist/cjs/ui-state.js +2 -2
  11. package/dist/cjs/vis-state-merger-text-label.spec.js +75 -0
  12. package/dist/cjs/vis-state-merger.js +65 -22
  13. package/dist/cjs/vis-state-updaters.js +811 -298
  14. package/dist/cjs/vis-state.js +2 -2
  15. package/dist/column-edit-reconcile.d.ts +4 -0
  16. package/dist/column-edit-updaters.spec.d.ts +1 -0
  17. package/dist/combined-updaters.d.ts +14 -4
  18. package/dist/composers.d.ts +13 -2
  19. package/dist/dataset-ops-updaters.d.ts +3 -0
  20. package/dist/esm/column-edit-reconcile.js +95 -0
  21. package/dist/esm/column-edit-updaters.spec.js +839 -0
  22. package/dist/esm/combined-updaters.js +29 -10
  23. package/dist/esm/dataset-ops-updaters.js +99 -16
  24. package/dist/esm/dataset-ops-updaters.spec.js +129 -4
  25. package/dist/esm/export-utils.js +117 -45
  26. package/dist/esm/interaction-utils.js +10 -3
  27. package/dist/esm/layer-utils.js +3 -2
  28. package/dist/esm/ui-state-updaters.js +69 -25
  29. package/dist/esm/ui-state.js +2 -2
  30. package/dist/esm/vis-state-merger-text-label.spec.js +74 -0
  31. package/dist/esm/vis-state-merger.js +66 -24
  32. package/dist/esm/vis-state-updaters.js +801 -306
  33. package/dist/esm/vis-state.js +2 -2
  34. package/dist/export-utils.d.ts +2 -2
  35. package/dist/interaction-utils.d.ts +4 -1
  36. package/dist/layer-utils.d.ts +1 -0
  37. package/dist/ui-state-updaters.d.ts +10 -0
  38. package/dist/vis-state-merger-text-label.spec.d.ts +1 -0
  39. package/dist/vis-state-merger.d.ts +10 -2
  40. package/dist/vis-state-updaters.d.ts +31 -9
  41. package/dist/vis-state.d.ts +4 -0
  42. package/package.json +17 -17
@@ -75,11 +75,17 @@ var DEFAULT_MAP_LEGEND_CONTROL = _objectSpread(_objectSpread({}, DEFAULT_MAP_CON
75
75
  * @property mapLocale Default: `{show: true, active: false}`
76
76
  * @property mapTheme Default: `{show: true, active: false}`
77
77
  * @property viewportJson Default: `{show: true, active: false}`
78
+ * @property mapInfo Default: `{show: true, active: true}`. `show` hides the on-map name and description.
78
79
  * @public
79
80
  */
80
- export var DEFAULT_MAP_CONTROLS = Object.keys(MAP_CONTROLS).reduce(function (_final, current) {
81
+ export var DEFAULT_MAP_CONTROLS = _objectSpread(_objectSpread({}, Object.keys(MAP_CONTROLS).reduce(function (_final, current) {
81
82
  return _objectSpread(_objectSpread({}, _final), {}, _defineProperty({}, current, current === MAP_CONTROLS.mapLegend ? DEFAULT_MAP_LEGEND_CONTROL : DEFAULT_MAP_CONTROLS_FEATURES));
82
- }, {});
83
+ }, {})), {}, {
84
+ // Open by default so a saved title shows on load. An empty map still hides the card.
85
+ mapInfo: _objectSpread(_objectSpread({}, DEFAULT_MAP_CONTROLS_FEATURES), {}, {
86
+ active: true
87
+ })
88
+ });
83
89
 
84
90
  /**
85
91
  * Default image export config
@@ -89,6 +95,7 @@ export var DEFAULT_MAP_CONTROLS = Object.keys(MAP_CONTROLS).reduce(function (_fi
89
95
  * @property resolution Default: `'ONE_X'`,
90
96
  * @property legend Default: `false`,
91
97
  * @property charts Default: `false`,
98
+ * @property transparentBackground Default: `false`,
92
99
  * @property mapH Default: 0,
93
100
  * @property mapW Default: 0,
94
101
  * @property imageSize Default: {zoomOffset: 0, scale: 1, imageW: 0, imageH: 0},
@@ -105,6 +112,7 @@ export var DEFAULT_EXPORT_IMAGE = {
105
112
  resolution: RESOLUTIONS.ONE_X,
106
113
  legend: false,
107
114
  charts: false,
115
+ transparentBackground: false,
108
116
  mapH: 0,
109
117
  mapW: 0,
110
118
  imageSize: {
@@ -726,6 +734,20 @@ export var setExportMapHTMLModeUpdater = function setExportMapHTMLModeUpdater(st
726
734
  });
727
735
  };
728
736
 
737
+ /**
738
+ * Set application branding overrides for exported maps.
739
+ * @param state - `uiState`
740
+ * @param action
741
+ * @param action.payload application name and/or website overrides
742
+ * @return nextState
743
+ */
744
+ export var setExportMapBrandingUpdater = function setExportMapBrandingUpdater(state, _ref20) {
745
+ var payload = _ref20.payload;
746
+ return _objectSpread(_objectSpread({}, state), {}, {
747
+ exportMap: _objectSpread(_objectSpread({}, state.exportMap), payload)
748
+ });
749
+ };
750
+
729
751
  /**
730
752
  * Whether to keep layer access tokens in exported HTML and JSON maps.
731
753
  * @param state - `uiState`
@@ -733,8 +755,8 @@ export var setExportMapHTMLModeUpdater = function setExportMapHTMLModeUpdater(st
733
755
  * @param action.payload - include layer API keys
734
756
  * @return nextState
735
757
  */
736
- export var setExportIncludeLayerApiKeysUpdater = function setExportIncludeLayerApiKeysUpdater(state, _ref20) {
737
- var includeLayerApiKeys = _ref20.payload;
758
+ export var setExportIncludeLayerApiKeysUpdater = function setExportIncludeLayerApiKeysUpdater(state, _ref21) {
759
+ var includeLayerApiKeys = _ref21.payload;
738
760
  return _objectSpread(_objectSpread({}, state), {}, {
739
761
  exportMap: _objectSpread(_objectSpread({}, state.exportMap), {}, {
740
762
  includeLayerApiKeys: includeLayerApiKeys
@@ -752,8 +774,8 @@ export var setExportIncludeLayerApiKeysUpdater = function setExportIncludeLayerA
752
774
  * @returns nextState
753
775
  * @public
754
776
  */
755
- export var addNotificationUpdater = function addNotificationUpdater(state, _ref21) {
756
- var payload = _ref21.payload;
777
+ export var addNotificationUpdater = function addNotificationUpdater(state, _ref22) {
778
+ var payload = _ref22.payload;
757
779
  var oldNotifications = state.notifications || [];
758
780
  // @ts-expect-error
759
781
  var payloadId = payload === null || payload === void 0 ? void 0 : payload.id;
@@ -784,8 +806,8 @@ export var addNotificationUpdater = function addNotificationUpdater(state, _ref2
784
806
  * @returns nextState
785
807
  * @public
786
808
  */
787
- export var removeNotificationUpdater = function removeNotificationUpdater(state, _ref22) {
788
- var id = _ref22.payload;
809
+ export var removeNotificationUpdater = function removeNotificationUpdater(state, _ref23) {
810
+ var id = _ref23.payload;
789
811
  return _objectSpread(_objectSpread({}, state), {}, {
790
812
  notifications: state.notifications.filter(function (n) {
791
813
  return n.id !== id;
@@ -831,8 +853,8 @@ export var loadFilesSuccessUpdater = function loadFilesSuccessUpdater(state) {
831
853
  * @returns nextState
832
854
  * @public
833
855
  */
834
- export var loadFilesErrUpdater = function loadFilesErrUpdater(state, _ref23) {
835
- var error = _ref23.error;
856
+ export var loadFilesErrUpdater = function loadFilesErrUpdater(state, _ref24) {
857
+ var error = _ref24.error;
836
858
  return addNotificationUpdater(_objectSpread(_objectSpread({}, state), {}, {
837
859
  loadFiles: _objectSpread(_objectSpread({}, state.loadFiles), {}, {
838
860
  fileLoading: false
@@ -885,8 +907,8 @@ export var showDatasetTableUpdater = function showDatasetTableUpdater(state) {
885
907
  * @returns nextState
886
908
  * @public
887
909
  */
888
- export var setLocaleUpdater = function setLocaleUpdater(state, _ref24) {
889
- var locale = _ref24.payload.locale;
910
+ export var setLocaleUpdater = function setLocaleUpdater(state, _ref25) {
911
+ var locale = _ref25.payload.locale;
890
912
  return _objectSpread(_objectSpread({}, state), {}, {
891
913
  locale: locale
892
914
  });
@@ -902,8 +924,8 @@ export var setLocaleUpdater = function setLocaleUpdater(state, _ref24) {
902
924
  * @returns nextState
903
925
  * @public
904
926
  */
905
- export var setThemeUpdater = function setThemeUpdater(state, _ref25) {
906
- var theme = _ref25.payload.theme;
927
+ export var setThemeUpdater = function setThemeUpdater(state, _ref26) {
928
+ var theme = _ref26.payload.theme;
907
929
  return _objectSpread(_objectSpread({}, state), {}, {
908
930
  theme: theme
909
931
  });
@@ -918,10 +940,10 @@ export var setThemeUpdater = function setThemeUpdater(state, _ref25) {
918
940
  * @returns nextState
919
941
  * @public
920
942
  */
921
- export var togglePanelListViewUpdater = function togglePanelListViewUpdater(state, _ref26) {
922
- var _ref26$payload = _ref26.payload,
923
- panelId = _ref26$payload.panelId,
924
- listView = _ref26$payload.listView;
943
+ export var togglePanelListViewUpdater = function togglePanelListViewUpdater(state, _ref27) {
944
+ var _ref27$payload = _ref27.payload,
945
+ panelId = _ref27$payload.panelId,
946
+ listView = _ref27$payload.listView;
925
947
  var stateProp = panelId === 'layer' ? 'layerPanelListView' : panelId === 'filter' ? 'filterPanelListView' : null;
926
948
  if (!stateProp || state[stateProp] === listView) {
927
949
  return state;
@@ -938,11 +960,11 @@ export var togglePanelListViewUpdater = function togglePanelListViewUpdater(stat
938
960
  * @returns nextState
939
961
  * @public
940
962
  */
941
- export var receiveMapConfigUpdater = function receiveMapConfigUpdater(state, _ref27) {
942
- var _uiState$mapControls, _uiState$mapControls2, _uiState$mapControls3;
943
- var config = _ref27.payload.config;
944
- var _ref28 = config || {},
945
- uiState = _ref28.uiState;
963
+ export var receiveMapConfigUpdater = function receiveMapConfigUpdater(state, _ref28) {
964
+ var _uiState$mapControls, _uiState$mapControls2, _uiState$mapControls3, _uiState$mapControls4;
965
+ var config = _ref28.payload.config;
966
+ var _ref29 = config || {},
967
+ uiState = _ref29.uiState;
946
968
  if (!uiState) {
947
969
  return state;
948
970
  }
@@ -973,7 +995,29 @@ export var receiveMapConfigUpdater = function receiveMapConfigUpdater(state, _re
973
995
  })
974
996
  });
975
997
  }
976
- if ((_uiState$mapControls3 = uiState.mapControls) !== null && _uiState$mapControls3 !== void 0 && (_uiState$mapControls3 = _uiState$mapControls3.mapLegend) !== null && _uiState$mapControls3 !== void 0 && _uiState$mapControls3.settings) {
998
+
999
+ // Honor an explicit collapsed or hidden state. A missing key keeps the default (shown, open).
1000
+ var savedMapInfo = (_uiState$mapControls3 = uiState.mapControls) === null || _uiState$mapControls3 === void 0 ? void 0 : _uiState$mapControls3.mapInfo;
1001
+ var savedMapInfoActive = savedMapInfo === null || savedMapInfo === void 0 ? void 0 : savedMapInfo.active;
1002
+ var savedMapInfoShow = savedMapInfo === null || savedMapInfo === void 0 ? void 0 : savedMapInfo.show;
1003
+ if (typeof savedMapInfoActive === 'boolean' || typeof savedMapInfoShow === 'boolean') {
1004
+ var currentMapInfo = newState.mapControls.mapInfo;
1005
+ newState = _objectSpread(_objectSpread({}, newState), {}, {
1006
+ mapControls: _objectSpread(_objectSpread({}, newState.mapControls), {}, {
1007
+ mapInfo: _objectSpread(_objectSpread(_objectSpread(_objectSpread({
1008
+ show: true,
1009
+ active: true
1010
+ }, currentMapInfo), typeof savedMapInfoShow === 'boolean' ? {
1011
+ show: savedMapInfoShow
1012
+ } : {}), typeof savedMapInfoActive === 'boolean' ? {
1013
+ active: savedMapInfoActive
1014
+ } : {}), {}, {
1015
+ activeMapIndex: 0
1016
+ })
1017
+ })
1018
+ });
1019
+ }
1020
+ if ((_uiState$mapControls4 = uiState.mapControls) !== null && _uiState$mapControls4 !== void 0 && (_uiState$mapControls4 = _uiState$mapControls4.mapLegend) !== null && _uiState$mapControls4 !== void 0 && _uiState$mapControls4.settings) {
977
1021
  newState = setMapControlSettingsUpdater(newState, {
978
1022
  payload: {
979
1023
  panelId: 'mapLegend',
@@ -997,4 +1041,4 @@ export var receiveMapConfigUpdater = function receiveMapConfigUpdater(state, _re
997
1041
  }
998
1042
  return newState;
999
1043
  };
1000
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJBRERfREFUQV9JRCIsIkRBVEFfVEFCTEVfSUQiLCJERUZBVUxUX05PVElGSUNBVElPTl9UT1BJQ1MiLCJERUxFVEVfREFUQV9JRCIsIkVYUE9SVF9EQVRBX1RZUEUiLCJFWFBPUlRfSFRNTF9NQVBfTU9ERVMiLCJFWFBPUlRfSU1HX1JBVElPUyIsIkVYUE9SVF9NQVBfRk9STUFUUyIsIlJFU09MVVRJT05TIiwiTUFQX0NPTlRST0xTIiwiVEhFTUUiLCJMT0NBTEVfQ09ERVMiLCJjcmVhdGVOb3RpZmljYXRpb24iLCJlcnJvck5vdGlmaWNhdGlvbiIsImNhbGN1bGF0ZUV4cG9ydEltYWdlU2l6ZSIsImdldEFwcGxpY2F0aW9uQ29uZmlnIiwiZ2V0Q29uZmlndXJlZFRoZW1lcyIsImdldERlZmF1bHRVaVRoZW1lIiwicGF5bG9hZF8iLCJhcHBseV8iLCJjb21wb3NlXyIsIkRFRkFVTFRfQUNUSVZFX1NJREVfUEFORUwiLCJERUZBVUxUX01PREFMIiwidWlTdGF0ZVVwZGF0ZXJzIiwiREVGQVVMVF9NQVBfQ09OVFJPTFNfRkVBVFVSRVMiLCJzaG93IiwiYWN0aXZlIiwiZGlzYWJsZUNsb3NlIiwiYWN0aXZlTWFwSW5kZXgiLCJERUZBVUxUX01BUF9MRUdFTkRfQ09OVFJPTCIsIl9vYmplY3RTcHJlYWQiLCJkaXNhYmxlRWRpdCIsIkRFRkFVTFRfTUFQX0NPTlRST0xTIiwiT2JqZWN0Iiwia2V5cyIsInJlZHVjZSIsImZpbmFsIiwiY3VycmVudCIsIl9kZWZpbmVQcm9wZXJ0eSIsIm1hcExlZ2VuZCIsIkRFRkFVTFRfRVhQT1JUX0lNQUdFIiwicmF0aW8iLCJTQ1JFRU4iLCJyZXNvbHV0aW9uIiwiT05FX1giLCJsZWdlbmQiLCJjaGFydHMiLCJtYXBIIiwibWFwVyIsImltYWdlU2l6ZSIsInpvb21PZmZzZXQiLCJzY2FsZSIsImltYWdlVyIsImltYWdlSCIsImNlbnRlciIsImltYWdlRGF0YVVyaSIsImV4cG9ydGluZyIsInByb2Nlc3NpbmciLCJlcnJvciIsImVzY2FwZVhodG1sRm9yV2VicGFjayIsImZpbGVOYW1lIiwiREVGQVVMVF9MT0FEX0ZJTEVTIiwiZmlsZUxvYWRpbmciLCJERUZBVUxUX0VYUE9SVF9EQVRBIiwic2VsZWN0ZWREYXRhc2V0IiwiZGF0YVR5cGUiLCJDU1YiLCJmaWx0ZXJlZCIsIkRFRkFVTFRfTk9USUZJQ0FUSU9OUyIsIkRFRkFVTFRfRVhQT1JUX0hUTUwiLCJleHBvcnRNYXBib3hBY2Nlc3NUb2tlbiIsInVzZXJNYXBib3hUb2tlbiIsIm1vZGUiLCJSRUFEIiwiREVGQVVMVF9FWFBPUlRfSlNPTiIsImhhc0RhdGEiLCJERUZBVUxUX0VYUE9SVF9NQVAiLCJIVE1MIiwiSlNPTiIsIkRFRkFVTFRfRVhQT1JUX1ZJREVPIiwibWVkaWFUeXBlIiwiY2FtZXJhUHJlc2V0IiwiZHVyYXRpb25NcyIsInN3aXBlU3RhcnRQY3QiLCJzd2lwZUVuZFBjdCIsInN3aXBlRWFzaW5nIiwiSU5JVElBTF9VSV9TVEFURSIsInJlYWRPbmx5IiwiYWN0aXZlU2lkZVBhbmVsIiwiY3VycmVudE1vZGFsIiwiZGF0YXNldEtleVRvUmVtb3ZlIiwiZGF0YXNldFRvUmVwbGFjZUlkIiwidmlzaWJsZURyb3Bkb3duIiwiZXhwb3J0SW1hZ2UiLCJleHBvcnREYXRhIiwiZXhwb3J0TWFwIiwiZXhwb3J0VmlkZW8iLCJtYXBDb250cm9scyIsIm5vdGlmaWNhdGlvbnMiLCJsb2FkRmlsZXMiLCJsb2NhbGUiLCJlbiIsInRoZW1lIiwiZGFyayIsImxheWVyUGFuZWxMaXN0VmlldyIsImZpbHRlclBhbmVsTGlzdFZpZXciLCJpc1NpZGVQYW5lbENsb3NlQnV0dG9uVmlzaWJsZSIsImluaXRVaVN0YXRlVXBkYXRlciIsInN0YXRlIiwiYWN0aW9uIiwiX2luaXRpYWxVaVN0YXRlJHRoZW1lIiwiaW5pdGlhbFVpU3RhdGUiLCJwYXlsb2FkIiwidGhlbWVzIiwicmVxdWVzdGVkIiwibGVuZ3RoIiwiaW5jbHVkZXMiLCJ0b2dnbGVTaWRlUGFuZWxVcGRhdGVyIiwiX3JlZiIsImlkIiwidG9nZ2xlTW9kYWxVcGRhdGVyIiwiX3JlZjIiLCJzaG93RXhwb3J0RHJvcGRvd25VcGRhdGVyIiwiX3JlZjMiLCJoaWRlRXhwb3J0RHJvcGRvd25VcGRhdGVyIiwidG9nZ2xlU2lkZVBhbmVsQ2xvc2VCdXR0b25VcGRhdGVyIiwiX3JlZjQiLCJNVVRVQUxMWV9FWENMVVNJVkVfTUFQX0NPTlRST0xTIiwic3BsaXRNYXAiLCJ0b2dnbGUzZCIsIm1hcERyYXciLCJtYXBMb2NhbGUiLCJ0b2dnbGVNYXBDb250cm9sVXBkYXRlciIsIl9yZWY1IiwiX3VwZGF0ZWRTdGF0ZSRtYXBDb250IiwiX3VwZGF0ZWRTdGF0ZSRtYXBDb250MiIsIl9yZWY1JHBheWxvYWQiLCJwYW5lbElkIiwiX3JlZjUkcGF5bG9hZCRpbmRleCIsImluZGV4IiwidXBkYXRlZFN0YXRlIiwiaXNPcGVuaW5nIiwibmV4dE1hcENvbnRyb2xzIiwiZGlkRGVhY3RpdmF0ZSIsImZvckVhY2giLCJjb250cm9sSWQiLCJfbmV4dE1hcENvbnRyb2xzJGNvbnQiLCJzZXRNYXBDb250cm9sVmlzaWJpbGl0eVVwZGF0ZXIiLCJfcmVmNiIsIl9zdGF0ZSRtYXBDb250cm9scyIsIl9yZWY2JHBheWxvYWQiLCJCb29sZWFuIiwic2V0TWFwQ29udHJvbFNldHRpbmdzVXBkYXRlciIsIl9yZWY3IiwiX3N0YXRlJG1hcENvbnRyb2xzMiIsIl9yZWY3JHBheWxvYWQiLCJzZXR0aW5ncyIsIm1hcENvbnRyb2wiLCJvcGVuRGVsZXRlTW9kYWxVcGRhdGVyIiwiX3JlZjgiLCJvcGVuUmVwbGFjZURhdGFzZXRNb2RhbFVwZGF0ZXIiLCJfcmVmOSIsInNldEV4cG9ydEltYWdlU2V0dGluZ1VwZGF0ZXIiLCJfcmVmMCIsIm5ld1NldHRpbmciLCJ1cGRhdGVkIiwic2V0RXhwb3J0SW1hZ2VEYXRhVXJpVXBkYXRlciIsIl9yZWYxIiwiZGF0YVVyaSIsInNldEV4cG9ydEltYWdlRXJyb3JVcGRhdGVyIiwiX3JlZjEwIiwiY2xlYW51cEV4cG9ydEltYWdlVXBkYXRlciIsInNldEV4cG9ydFZpZGVvU2V0dGluZ1VwZGF0ZXIiLCJfcmVmMTEiLCJzdGFydEV4cG9ydGluZ0ltYWdlVXBkYXRlciIsIl9yZWYxMiIsIl9yZWYxMiRwYXlsb2FkIiwib3B0aW9ucyIsImltYWdlU2V0dGluZ3MiLCJzZXRFeHBvcnRTZWxlY3RlZERhdGFzZXRVcGRhdGVyIiwiX3JlZjEzIiwiZGF0YXNldCIsInNldEV4cG9ydERhdGFUeXBlVXBkYXRlciIsIl9yZWYxNCIsInNldEV4cG9ydEZpbHRlcmVkVXBkYXRlciIsIl9yZWYxNSIsInNldEV4cG9ydERhdGFVcGRhdGVyIiwic2V0VXNlck1hcGJveEFjY2Vzc1Rva2VuVXBkYXRlciIsIl9yZWYxNiIsInNldEV4cG9ydE1hcEZvcm1hdFVwZGF0ZXIiLCJfcmVmMTciLCJmb3JtYXQiLCJzZXRFeHBvcnRNYXBGaWxlTmFtZVVwZGF0ZXIiLCJfcmVmMTgiLCJzZXRFeHBvcnRNYXBIVE1MTW9kZVVwZGF0ZXIiLCJfcmVmMTkiLCJzZXRFeHBvcnRJbmNsdWRlTGF5ZXJBcGlLZXlzVXBkYXRlciIsIl9yZWYyMCIsImluY2x1ZGVMYXllckFwaUtleXMiLCJhZGROb3RpZmljYXRpb25VcGRhdGVyIiwiX3JlZjIxIiwib2xkTm90aWZpY2F0aW9ucyIsInBheWxvYWRJZCIsIm5vdGlmaWNhdGlvblRvVXBkYXRlIiwiZmluZCIsIm4iLCJtYXAiLCJjb3VudCIsImNvbmNhdCIsIl90b0NvbnN1bWFibGVBcnJheSIsInJlbW92ZU5vdGlmaWNhdGlvblVwZGF0ZXIiLCJfcmVmMjIiLCJmaWx0ZXIiLCJsb2FkRmlsZXNVcGRhdGVyIiwibG9hZEZpbGVzU3VjY2Vzc1VwZGF0ZXIiLCJsb2FkRmlsZXNFcnJVcGRhdGVyIiwiX3JlZjIzIiwibWVzc2FnZSIsInRvcGljIiwiZ2xvYmFsIiwidG9nZ2xlU3BsaXRNYXBVcGRhdGVyIiwiZW50cmllcyIsImFjYyIsImVudHJ5Iiwic2hvd0RhdGFzZXRUYWJsZVVwZGF0ZXIiLCJzZXRMb2NhbGVVcGRhdGVyIiwiX3JlZjI0Iiwic2V0VGhlbWVVcGRhdGVyIiwiX3JlZjI1IiwidG9nZ2xlUGFuZWxMaXN0Vmlld1VwZGF0ZXIiLCJfcmVmMjYiLCJfcmVmMjYkcGF5bG9hZCIsImxpc3RWaWV3Iiwic3RhdGVQcm9wIiwicmVjZWl2ZU1hcENvbmZpZ1VwZGF0ZXIiLCJfcmVmMjciLCJfdWlTdGF0ZSRtYXBDb250cm9scyIsIl91aVN0YXRlJG1hcENvbnRyb2xzMiIsIl91aVN0YXRlJG1hcENvbnRyb2xzMyIsImNvbmZpZyIsIl9yZWYyOCIsInVpU3RhdGUiLCJuZXdTdGF0ZSIsImN1cnJlbnRMZWdlbmQiLCJjaGFydCIsImN1cnJlbnRDaGFydCJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91aS1zdGF0ZS11cGRhdGVycy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUXG4vLyBDb3B5cmlnaHQgY29udHJpYnV0b3JzIHRvIHRoZSBrZXBsZXIuZ2wgcHJvamVjdFxuXG5pbXBvcnQge1xuICBBRERfREFUQV9JRCxcbiAgREFUQV9UQUJMRV9JRCxcbiAgREVGQVVMVF9OT1RJRklDQVRJT05fVE9QSUNTLFxuICBERUxFVEVfREFUQV9JRCxcbiAgRVhQT1JUX0RBVEFfVFlQRSxcbiAgRVhQT1JUX0hUTUxfTUFQX01PREVTLFxuICBFWFBPUlRfSU1HX1JBVElPUyxcbiAgRVhQT1JUX01BUF9GT1JNQVRTLFxuICBSRVNPTFVUSU9OUyxcbiAgTUFQX0NPTlRST0xTLFxuICBUSEVNRVxufSBmcm9tICdAa2VwbGVyLmdsL2NvbnN0YW50cyc7XG5pbXBvcnQge0xPQ0FMRV9DT0RFU30gZnJvbSAnQGtlcGxlci5nbC9sb2NhbGl6YXRpb24nO1xuaW1wb3J0IHtcbiAgY3JlYXRlTm90aWZpY2F0aW9uLFxuICBlcnJvck5vdGlmaWNhdGlvbixcbiAgY2FsY3VsYXRlRXhwb3J0SW1hZ2VTaXplLFxuICBnZXRBcHBsaWNhdGlvbkNvbmZpZyxcbiAgZ2V0Q29uZmlndXJlZFRoZW1lcyxcbiAgZ2V0RGVmYXVsdFVpVGhlbWVcbn0gZnJvbSAnQGtlcGxlci5nbC91dGlscyc7XG5pbXBvcnQge3BheWxvYWRfLCBhcHBseV8sIGNvbXBvc2VffSBmcm9tICcuL2NvbXBvc2VyLWhlbHBlcnMnO1xuXG5pbXBvcnQge1xuICBBY3Rpb25UeXBlcyxcbiAgS2VwbGVyR2xJbml0UGF5bG9hZCxcbiAgTG9hZEZpbGVzRXJyVXBkYXRlckFjdGlvbixcbiAgUmVjZWl2ZU1hcENvbmZpZ1BheWxvYWQsXG4gIFVJU3RhdGVBY3Rpb25zXG59IGZyb20gJ0BrZXBsZXIuZ2wvYWN0aW9ucyc7XG5pbXBvcnQge1xuICBFeHBvcnREYXRhLFxuICBFeHBvcnRIdG1sLFxuICBFeHBvcnRKc29uLFxuICBFeHBvcnRNYXAsXG4gIEV4cG9ydEltYWdlLFxuICBFeHBvcnRWaWRlbyxcbiAgTWFwQ29udHJvbEl0ZW0sXG4gIE1hcENvbnRyb2xNYXBMZWdlbmQsXG4gIE1hcENvbnRyb2xzLFxuICBVaVN0YXRlXG59IGZyb20gJ0BrZXBsZXIuZ2wvdHlwZXMnO1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9BQ1RJVkVfU0lERV9QQU5FTCA9ICdsYXllcic7XG5leHBvcnQgY29uc3QgREVGQVVMVF9NT0RBTCA9IEFERF9EQVRBX0lEO1xuXG4vKipcbiAqIFVwZGF0ZXJzIGZvciBgdWlTdGF0ZWAgcmVkdWNlci4gQ2FuIGJlIHVzZWQgaW4geW91ciByb290IHJlZHVjZXIgdG8gZGlyZWN0bHkgbW9kaWZ5IGtlcGxlci5nbCdzIHN0YXRlLlxuICogUmVhZCBtb3JlIGFib3V0IFtVc2luZyB1cGRhdGVyc10oLi4vYWR2YW5jZWQtdXNhZ2UvdXNpbmctdXBkYXRlcnMubWQpXG4gKlxuICogQHB1YmxpY1xuICogQGV4YW1wbGVcbiAqXG4gKiBpbXBvcnQga2VwbGVyR2xSZWR1Y2VyLCB7dWlTdGF0ZVVwZGF0ZXJzfSBmcm9tICdAa2VwbGVyLmdsL3JlZHVjZXJzJztcbiAqIC8vIFJvb3QgUmVkdWNlclxuICogY29uc3QgcmVkdWNlcnMgPSBjb21iaW5lUmVkdWNlcnMoe1xuICogIGtlcGxlckdsOiBrZXBsZXJHbFJlZHVjZXIsXG4gKiAgYXBwOiBhcHBSZWR1Y2VyXG4gKiB9KTtcbiAqXG4gKiBjb25zdCBjb21wb3NlZFJlZHVjZXIgPSAoc3RhdGUsIGFjdGlvbikgPT4ge1xuICogIHN3aXRjaCAoYWN0aW9uLnR5cGUpIHtcbiAqICAgIC8vIGNsaWNrIGJ1dHRvbiB0byBjbG9zZSBzaWRlIHBhbmVsXG4gKiAgICBjYXNlICdDTElDS19CVVRUT04nOlxuICogICAgICByZXR1cm4ge1xuICogICAgICAgIC4uLnN0YXRlLFxuICogICAgICAgIGtlcGxlckdsOiB7XG4gKiAgICAgICAgICAuLi5zdGF0ZS5rZXBsZXJHbCxcbiAqICAgICAgICAgIGZvbzoge1xuICogICAgICAgICAgICAgLi4uc3RhdGUua2VwbGVyR2wuZm9vLFxuICogICAgICAgICAgICAgdWlTdGF0ZTogdWlTdGF0ZVVwZGF0ZXJzLnRvZ2dsZVNpZGVQYW5lbFVwZGF0ZXIoXG4gKiAgICAgICAgICAgICAgIHVpU3RhdGUsIHtwYXlsb2FkOiBudWxsfVxuICogICAgICAgICAgICAgKVxuICogICAgICAgICAgfVxuICogICAgICAgIH1cbiAqICAgICAgfTtcbiAqICB9XG4gKiAgcmV0dXJuIHJlZHVjZXJzKHN0YXRlLCBhY3Rpb24pO1xuICogfTtcbiAqXG4gKiBleHBvcnQgZGVmYXVsdCBjb21wb3NlZFJlZHVjZXI7XG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFycyAqL1xuLy8gQHRzLWlnbm9yZVxuY29uc3QgdWlTdGF0ZVVwZGF0ZXJzID0gbnVsbDtcbi8qIGVzbGludC1lbmFibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzICovXG5cbmNvbnN0IERFRkFVTFRfTUFQX0NPTlRST0xTX0ZFQVRVUkVTOiBNYXBDb250cm9sSXRlbSA9IHtcbiAgc2hvdzogdHJ1ZSxcbiAgYWN0aXZlOiBmYWxzZSxcbiAgZGlzYWJsZUNsb3NlOiBmYWxzZSxcbiAgLy8gZGVmaW5lcyB3aGljaCBtYXAgaW5kZXggdXNlcnMgYXJlIGludGVyYWN0aW5nIHdpdGggKHRocm91Z2ggbWFwIGNvbnRyb2xzKVxuICBhY3RpdmVNYXBJbmRleDogMFxufTtcblxuY29uc3QgREVGQVVMVF9NQVBfTEVHRU5EX0NPTlRST0wgPSB7XG4gIC4uLkRFRkFVTFRfTUFQX0NPTlRST0xTX0ZFQVRVUkVTLFxuICBkaXNhYmxlRWRpdDogZmFsc2Vcbn07XG4vKipcbiAqIEEgbGlzdCBvZiBtYXAgY29udHJvbCB2aXNpYmlsaXR5IGFuZCB3aGV0aGVyIGlzIGl0IGFjdGl2ZS5cbiAqIEBtZW1iZXJvZiB1aVN0YXRlVXBkYXRlcnNcbiAqIEBjb25zdGFudFxuICogQHByb3BlcnR5IHZpc2libGVMYXllcnMgRGVmYXVsdDogYHtzaG93OiB0cnVlLCBhY3RpdmU6IGZhbHNlfWBcbiAqIEBwcm9wZXJ0eSBtYXBMZWdlbmQgRGVmYXVsdDogYHtzaG93OiB0cnVlLCBhY3RpdmU6IGZhbHNlfWBcbiAqIEBwcm9wZXJ0eSB0b2dnbGUzZCBEZWZhdWx0OiBge3Nob3c6IHRydWV9YFxuICogQHByb3BlcnR5IHNwbGl0TWFwIERlZmF1bHQ6IGB7c2hvdzogdHJ1ZX1gXG4gKiBAcHJvcGVydHkgbWFwRHJhdyBEZWZhdWx0OiBge3Nob3c6IHRydWUsIGFjdGl2ZTogZmFsc2V9YFxuICogQHByb3BlcnR5IG1hcExvY2FsZSBEZWZhdWx0OiBge3Nob3c6IHRydWUsIGFjdGl2ZTogZmFsc2V9YFxuICogQHByb3BlcnR5IG1hcFRoZW1lIERlZmF1bHQ6IGB7c2hvdzogdHJ1ZSwgYWN0aXZlOiBmYWxzZX1gXG4gKiBAcHJvcGVydHkgdmlld3BvcnRKc29uIERlZmF1bHQ6IGB7c2hvdzogdHJ1ZSwgYWN0aXZlOiBmYWxzZX1gXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBERUZBVUxUX01BUF9DT05UUk9MUzogTWFwQ29udHJvbHMgPSAoXG4gIE9iamVjdC5rZXlzKE1BUF9DT05UUk9MUykgYXMgQXJyYXk8a2V5b2YgdHlwZW9mIE1BUF9DT05UUk9MUz5cbikucmVkdWNlKFxuICAoZmluYWwsIGN1cnJlbnQpID0+ICh7XG4gICAgLi4uZmluYWwsXG4gICAgW2N1cnJlbnRdOlxuICAgICAgY3VycmVudCA9PT0gTUFQX0NPTlRST0xTLm1hcExlZ2VuZFxuICAgICAgICA/IERFRkFVTFRfTUFQX0xFR0VORF9DT05UUk9MXG4gICAgICAgIDogREVGQVVMVF9NQVBfQ09OVFJPTFNfRkVBVFVSRVNcbiAgfSksXG4gIHt9IGFzIE1hcENvbnRyb2xzXG4pO1xuXG4vKipcbiAqIERlZmF1bHQgaW1hZ2UgZXhwb3J0IGNvbmZpZ1xuICogQG1lbWJlcm9mIHVpU3RhdGVVcGRhdGVyc1xuICogQGNvbnN0YW50XG4gKiBAcHJvcGVydHkgcmF0aW8gRGVmYXVsdDogYCdTQ1JFRU4nYCxcbiAqIEBwcm9wZXJ0eSByZXNvbHV0aW9uIERlZmF1bHQ6IGAnT05FX1gnYCxcbiAqIEBwcm9wZXJ0eSBsZWdlbmQgRGVmYXVsdDogYGZhbHNlYCxcbiAqIEBwcm9wZXJ0eSBjaGFydHMgRGVmYXVsdDogYGZhbHNlYCxcbiAqIEBwcm9wZXJ0eSBtYXBIIERlZmF1bHQ6IDAsXG4gKiBAcHJvcGVydHkgbWFwVyBEZWZhdWx0OiAwLFxuICogQHByb3BlcnR5IGltYWdlU2l6ZSBEZWZhdWx0OiB7em9vbU9mZnNldDogMCwgc2NhbGU6IDEsIGltYWdlVzogMCwgaW1hZ2VIOiAwfSxcbiAqIEBwcm9wZXJ0eSBpbWFnZURhdGFVcmkgRGVmYXVsdDogYCcnYCxcbiAqIEBwcm9wZXJ0eSBleHBvcnRpbmcgRGVmYXVsdDogYGZhbHNlYFxuICogQHByb3BlcnR5IGVycm9yIERlZmF1bHQ6IGBmYWxzZWBcbiAqIEBwcm9wZXJ0eSBlc2NhcGVYaHRtbEZvcldlYnBhY2sgRGVmYXVsdDogZnJvbSBhcHBsaWNhdGlvbiBjb25maWcgKGF1dG8tZGV0ZWN0ZWQ6IGB0cnVlYCBmb3Igd2VicGFjaylcbiAqIEBwcm9wZXJ0eSBmaWxlTmFtZSBEZWZhdWx0OiBgJydgXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBERUZBVUxUX0VYUE9SVF9JTUFHRTogRXhwb3J0SW1hZ2UgPSB7XG4gIC8vIHVzZXIgb3B0aW9uc1xuICByYXRpbzogRVhQT1JUX0lNR19SQVRJT1MuU0NSRUVOLFxuICByZXNvbHV0aW9uOiBSRVNPTFVUSU9OUy5PTkVfWCxcbiAgbGVnZW5kOiBmYWxzZSxcbiAgY2hhcnRzOiBmYWxzZSxcbiAgbWFwSDogMCxcbiAgbWFwVzogMCxcbiAgaW1hZ2VTaXplOiB7XG4gICAgem9vbU9mZnNldDogMCxcbiAgICBzY2FsZTogMSxcbiAgICBpbWFnZVc6IDAsXG4gICAgaW1hZ2VIOiAwXG4gIH0sXG4gIC8vIHdoZW4gdGhpcyBpcyBzZXQgdG8gdHJ1ZSwgdGhlIG1vY2sgbWFwIHZpZXdwb3J0IHdpbGwgbW92ZSB0byB0aGUgY2VudGVyIG9mIGRhdGFcbiAgY2VudGVyOiBmYWxzZSxcbiAgLy8gZXhwb3J0aW5nIHN0YXRlXG4gIGltYWdlRGF0YVVyaTogJycsXG4gIC8vIGV4cG9ydGluZzogdXNlZCB0byBhdHRhY2ggcGxvdC1jb250YWluZXIgdG8gZG9tXG4gIGV4cG9ydGluZzogZmFsc2UsXG4gIC8vIHByb2Nlc3Npbmc6IHVzZWQgYXMgbG9hZGluZyBpbmRpY2F0b3Igd2hlbiBleHBvcnQgaW1hZ2UgaXMgYmVpbmcgcHJvZHVjZWRcbiAgcHJvY2Vzc2luZzogZmFsc2UsXG4gIGVycm9yOiBmYWxzZSxcbiAgLy8gd2hldGhlciB0byBhcHBseSBmaXggZm9yIHVnbGlmeSBlcnJvciBpbiBkb20tdG8taW1hZ2UgKGZyb20gYXBwbGljYXRpb24gY29uZmlnLCBhdXRvLWRldGVjdHMgYnVpbGQgdG9vbClcbiAgZXNjYXBlWGh0bWxGb3JXZWJwYWNrOiBnZXRBcHBsaWNhdGlvbkNvbmZpZygpLmVzY2FwZVhodG1sRm9yV2VicGFjayxcbiAgZmlsZU5hbWU6ICcnXG59O1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9MT0FEX0ZJTEVTID0ge1xuICBmaWxlTG9hZGluZzogZmFsc2Vcbn07XG5cbi8qKlxuICogRGVmYXVsdCBpbml0aWFsIGBleHBvcnREYXRhYCBzZXR0aW5nc1xuICogQG1lbWJlcm9mIHVpU3RhdGVVcGRhdGVyc1xuICogQGNvbnN0YW50XG4gKiBAcHJvcGVydHkgc2VsZWN0ZWREYXRhc2V0IERlZmF1bHQ6IGAnJ2AsXG4gKiBAcHJvcGVydHkgZGF0YVR5cGUgRGVmYXVsdDogYCdjc3YnYCxcbiAqIEBwcm9wZXJ0eSBmaWx0ZXJlZCBEZWZhdWx0OiBgdHJ1ZWAsXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBERUZBVUxUX0VYUE9SVF9EQVRBOiBFeHBvcnREYXRhID0ge1xuICBzZWxlY3RlZERhdGFzZXQ6ICcnLFxuICBkYXRhVHlwZTogRVhQT1JUX0RBVEFfVFlQRS5DU1YsXG4gIGZpbHRlcmVkOiB0cnVlXG59O1xuXG4vKipcbiAqIEBjb25zdGFudFxuICovXG5leHBvcnQgY29uc3QgREVGQVVMVF9OT1RJRklDQVRJT05TID0gW107XG5cbi8qKlxuICogQGNvbnN0YW50XG4gKiBAcHJvcGVydHkgZXhwb3J0TWFwYm94QWNjZXNzVG9rZW4gLSBEZWZhdWx0OiBudWxsLCB0aGlzIGlzIHVzZWQgd2hlbiB3ZSBwcm92aWRlIGEgZGVmYXVsdCBtYXBib3ggdG9rZW4gZm9yIHVzZXJzIHRvIHRha2UgYWR2YW50YWdlIG9mXG4gKiBAcHJvcGVydHkgdXNlck1hcGJveFRva2VuIC0gRGVmYXVsdDogJycsIG1hcGJveCB0b2tlbiBwcm92aWRlZCBieSB1c2VyIHRocm91Z2ggaW5wdXQgZmllbGRcbiAqIEBwcm9wZXJ0eSBtb2RlIC0gRGVmYXVsdDogJ1JFQUQnLCByZWFkIG9ubHkgb3IgZWRpdGFibGVcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfRVhQT1JUX0hUTUw6IEV4cG9ydEh0bWwgPSB7XG4gIGV4cG9ydE1hcGJveEFjY2Vzc1Rva2VuOiBudWxsLFxuICB1c2VyTWFwYm94VG9rZW46ICcnLFxuICBtb2RlOiBFWFBPUlRfSFRNTF9NQVBfTU9ERVMuUkVBRFxufTtcblxuLyoqXG4gKiBAY29uc3RhbnRcbiAqIEBwcm9wZXJ0eSBoYXNEYXRhIC0gRGVmYXVsdDogJ3RydWUnLFxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgREVGQVVMVF9FWFBPUlRfSlNPTjogRXhwb3J0SnNvbiA9IHtcbiAgaGFzRGF0YTogdHJ1ZVxufTtcblxuLyoqXG4gKiBFeHBvcnQgTWFwIENvbmZpZ1xuICogQGNvbnN0YW50XG4gKiBAcHJvcGVydHkgSFRNTCAtIERlZmF1bHQ6ICdERUZBVUxUX0VYUE9SVF9IVE1MJyxcbiAqIEBwcm9wZXJ0eSBKU09OIC0gRGVmYXVsdDogJ0RFRkFVTFRfRVhQT1JUX0pTT04nLFxuICogQHByb3BlcnR5IGZvcm1hdCAtIERlZmF1bHQ6ICdIVE1MJyxcbiAqIEBwcm9wZXJ0eSBmaWxlTmFtZSBEZWZhdWx0OiBgJydgLFxuICogQHByb3BlcnR5IGluY2x1ZGVMYXllckFwaUtleXMgRGVmYXVsdDogYGZhbHNlYCxcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfRVhQT1JUX01BUDogRXhwb3J0TWFwID0ge1xuICBbRVhQT1JUX01BUF9GT1JNQVRTLkhUTUxdOiBERUZBVUxUX0VYUE9SVF9IVE1MLFxuICBbRVhQT1JUX01BUF9GT1JNQVRTLkpTT05dOiBERUZBVUxUX0VYUE9SVF9KU09OLFxuICBmb3JtYXQ6IEVYUE9SVF9NQVBfRk9STUFUUy5IVE1MLFxuICBmaWxlTmFtZTogJycsXG4gIC8vIFByaXZhdGUgbGF5ZXIgdG9rZW5zIHN0YXkgb3V0IG9mIHRoZSBmaWxlIHVubGVzcyB0aGUgdXNlciBvcHRzIGluLlxuICBpbmNsdWRlTGF5ZXJBcGlLZXlzOiBmYWxzZVxufTtcblxuLyoqXG4gKiBEZWZhdWx0IGluaXRpYWwgYGV4cG9ydFZpZGVvYCBzZXR0aW5nc1xuICogQG1lbWJlcm9mIHVpU3RhdGVVcGRhdGVyc1xuICogQGNvbnN0YW50XG4gKiBAcHJvcGVydHkgbWVkaWFUeXBlIERlZmF1bHQ6IGAnd2VibSdgXG4gKiBAcHJvcGVydHkgY2FtZXJhUHJlc2V0IERlZmF1bHQ6IGAnTm9uZSdgXG4gKiBAcHJvcGVydHkgZmlsZU5hbWUgRGVmYXVsdDogYCdrZXBsZXIuZ2wnYFxuICogQHByb3BlcnR5IHJlc29sdXRpb24gRGVmYXVsdDogYCcxMjgweDcyMCdgXG4gKiBAcHJvcGVydHkgZHVyYXRpb25NcyBEZWZhdWx0OiBgMTAwMGBcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfRVhQT1JUX1ZJREVPOiBFeHBvcnRWaWRlbyA9IHtcbiAgbWVkaWFUeXBlOiAnd2VibScsIC8vIHVzZSB3ZWJtIGFzIGRlZmF1bHQgYXMgZ2lmIGV4cG9ydCB0ZW5kcyB0byBmcmVlemUgb24gbGFyZ2VyIHJlY29yZGluZ3NcbiAgY2FtZXJhUHJlc2V0OiAnTm9uZScsXG4gIGZpbGVOYW1lOiAna2VwbGVyLmdsJyxcbiAgcmVzb2x1dGlvbjogJzEyODB4NzIwJyxcbiAgZHVyYXRpb25NczogMTAwMCxcbiAgc3dpcGVTdGFydFBjdDogMCxcbiAgc3dpcGVFbmRQY3Q6IDEwMCxcbiAgc3dpcGVFYXNpbmc6ICdlYXNlLWluLW91dCdcbn07XG5cbi8qKlxuICogRGVmYXVsdCBpbml0aWFsIGB1aVN0YXRlYFxuICogQG1lbWJlcm9mIHVpU3RhdGVVcGRhdGVyc1xuICogQGNvbnN0YW50XG4gKiBAcHJvcGVydHkgcmVhZE9ubHkgRGVmYXVsdDogYGZhbHNlYFxuICogQHByb3BlcnR5IGFjdGl2ZVNpZGVQYW5lbCBEZWZhdWx0OiBgJ2xheWVyJ2BcbiAqIEBwcm9wZXJ0eSBjdXJyZW50TW9kYWwgRGVmYXVsdDogYCdhZGREYXRhJ2BcbiAqIEBwcm9wZXJ0eSBkYXRhc2V0S2V5VG9SZW1vdmUgRGVmYXVsdDogYG51bGxgXG4gKiBAcHJvcGVydHkgZGF0YXNldFRvUmVwbGFjZUlkIERlZmF1bHQ6IGBudWxsYFxuICogQHByb3BlcnR5IHZpc2libGVEcm9wZG93biBEZWZhdWx0OiBgbnVsbGBcbiAqIEBwcm9wZXJ0eSBleHBvcnRJbWFnZSBEZWZhdWx0OiBbYERFRkFVTFRfRVhQT1JUX0lNQUdFYF0oI2RlZmF1bHRfZXhwb3J0X2ltYWdlKVxuICogQHByb3BlcnR5IGV4cG9ydERhdGEgRGVmYXVsdDogW2BERUZBVUxUX0VYUE9SVF9EQVRBYF0oI2RlZmF1bHRfZXhwb3J0X2RhdGEpXG4gKiBAcHJvcGVydHkgZXhwb3J0TWFwIERlZmF1bHQ6IFtgREVGQVVMVF9FWFBPUlRfTUFQYF0oI2RlZmF1bHRfZXhwb3J0X21hcClcbiAqIEBwcm9wZXJ0eSBtYXBDb250cm9scyBEZWZhdWx0OiBbYERFRkFVTFRfTUFQX0NPTlRST0xTYF0oI2RlZmF1bHRfbWFwX2NvbnRyb2xzKVxuICogQHByb3BlcnR5IG5vdGlmaWNhdGlvbnMgRGVmYXVsdDogYFtdYFxuICogQHByb3BlcnR5IG5vdGlmaWNhdGlvbnMgRGVmYXVsdDogYFtdYFxuICogQHByb3BlcnR5IGxvYWRGaWxlc1xuICogQHByb3BlcnR5IGxvY2FsZSBEZWZhdWx0OiBgJ2VuJ2BcbiAqIEBwcm9wZXJ0eSB0aGVtZSBEZWZhdWx0OiBgJ2RhcmsnYFxuICogQHByb3BlcnR5IGlzU2lkZVBhbmVsQ2xvc2VCdXR0b25WaXNpYmxlIERlZmF1bHQ6IGB0cnVlYFxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgSU5JVElBTF9VSV9TVEFURTogVWlTdGF0ZSA9IHtcbiAgcmVhZE9ubHk6IGZhbHNlLFxuICBhY3RpdmVTaWRlUGFuZWw6IERFRkFVTFRfQUNUSVZFX1NJREVfUEFORUwsXG4gIGN1cnJlbnRNb2RhbDogREVGQVVMVF9NT0RBTCxcbiAgZGF0YXNldEtleVRvUmVtb3ZlOiBudWxsLFxuICBkYXRhc2V0VG9SZXBsYWNlSWQ6IG51bGwsXG4gIHZpc2libGVEcm9wZG93bjogbnVsbCxcbiAgLy8gZXhwb3J0IGltYWdlIG1vZGFsIHVpXG4gIGV4cG9ydEltYWdlOiBERUZBVUxUX0VYUE9SVF9JTUFHRSxcbiAgLy8gZXhwb3J0IGRhdGEgbW9kYWwgdWlcbiAgZXhwb3J0RGF0YTogREVGQVVMVF9FWFBPUlRfREFUQSxcbiAgLy8gaHRtbCBleHBvcnRcbiAgZXhwb3J0TWFwOiBERUZBVUxUX0VYUE9SVF9NQVAsXG4gIC8vIGV4cG9ydCB2aWRlbyBtb2RhbCB1aVxuICBleHBvcnRWaWRlbzogREVGQVVMVF9FWFBPUlRfVklERU8sXG4gIC8vIG1hcCBjb250cm9sIHBhbmVsc1xuICBtYXBDb250cm9sczogREVGQVVMVF9NQVBfQ09OVFJPTFMsXG4gIC8vIHVpIG5vdGlmaWNhdGlvbnNcbiAgbm90aWZpY2F0aW9uczogREVGQVVMVF9OT1RJRklDQVRJT05TLFxuICAvLyBsb2FkIGZpbGVzXG4gIGxvYWRGaWxlczogREVGQVVMVF9MT0FEX0ZJTEVTLFxuICAvLyBMb2NhbGUgb2YgdGhlIFVJXG4gIGxvY2FsZTogTE9DQUxFX0NPREVTLmVuLFxuICAvLyBUaGVtZSBvZiB0aGUgVUkgKGBsaWdodGAgfCBgZGFya2AgfCBgc3BhY2VgKS4gRmlyc3Qgb2YgYHRoZW1lc2AgaXMgdGhlIGRlZmF1bHQgd2hlbiBzZXQuXG4gIHRoZW1lOiBUSEVNRS5kYXJrLFxuICBsYXllclBhbmVsTGlzdFZpZXc6ICdsaXN0JyxcbiAgZmlsdGVyUGFuZWxMaXN0VmlldzogJ2xpc3QnLFxuICBpc1NpZGVQYW5lbENsb3NlQnV0dG9uVmlzaWJsZTogdHJ1ZVxufTtcblxuLyogVXBkYXRlcnMgKi9cbi8qKlxuICogQG1lbWJlcm9mIHVpU3RhdGVVcGRhdGVyc1xuICovXG5leHBvcnQgY29uc3QgaW5pdFVpU3RhdGVVcGRhdGVyID0gKFxuICBzdGF0ZTogVWlTdGF0ZSxcbiAgYWN0aW9uOiB7XG4gICAgdHlwZT86ICh0eXBlb2YgQWN0aW9uVHlwZXMpWydJTklUJ107XG4gICAgcGF5bG9hZDogS2VwbGVyR2xJbml0UGF5bG9hZDtcbiAgfVxuKTogVWlTdGF0ZSA9PiB7XG4gIGNvbnN0IGluaXRpYWxVaVN0YXRlID0gKGFjdGlvbi5wYXlsb2FkIHx8IHt9KS5pbml0aWFsVWlTdGF0ZSB8fCB7fTtcbiAgY29uc3QgdGhlbWVzID0gZ2V0Q29uZmlndXJlZFRoZW1lcygpO1xuICBjb25zdCByZXF1ZXN0ZWQgPSBpbml0aWFsVWlTdGF0ZS50aGVtZSA/PyBzdGF0ZS50aGVtZTtcbiAgY29uc3QgdGhlbWUgPVxuICAgIHRoZW1lcy5sZW5ndGggPT09IDAgPyByZXF1ZXN0ZWQgOiB0aGVtZXMuaW5jbHVkZXMocmVxdWVzdGVkKSA/IHJlcXVlc3RlZCA6IGdldERlZmF1bHRVaVRoZW1lKCk7XG5cbiAgcmV0dXJuIHtcbiAgICAuLi5zdGF0ZSxcbiAgICAuLi5pbml0aWFsVWlTdGF0ZSxcbiAgICB0aGVtZVxuICB9O1xufTtcblxuLyoqXG4gKiBUb2dnbGUgYWN0aXZlIHNpZGUgcGFuZWxcbiAqIEBtZW1iZXJvZiB1aVN0YXRlVXBkYXRlcnNcbiAqIEBwYXJhbSBzdGF0ZSBgdWlTdGF0ZWBcbiAqIEBwYXJhbSBhY3Rpb25cbiAqIEBwYXJhbSBhY3Rpb24ucGF5bG9hZCBpZCBvZiBzaWRlIHBhbmVsIHRvIGJlIHNob3duLCBvbmUgb2YgYGxheWVyYCwgYGZpbHRlcmAsIGBpbnRlcmFjdGlvbmAsIGBtYXBgLiBjbG9zZSBzaWRlIHBhbmVsIGlmIGBudWxsYFxuICogQHJldHVybnMgbmV4dFN0YXRlXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCB0b2dnbGVTaWRlUGFuZWxVcGRhdGVyID0gKFxuICBzdGF0ZTogVWlTdGF0ZSxcbiAge3BheWxvYWQ6IGlkfTogVUlTdGF0ZUFjdGlvbnMuVG9nZ2xlU2lkZVBhbmVsVXBkYXRlckFjdGlvblxuKTogVWlTdGF0ZSA9PiB7XG4gIHJldHVybiBpZCA9PT0gc3RhdGUuYWN0aXZlU2lkZVBhbmVsXG4gICAgPyBzdGF0ZVxuICAgIDoge1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgYWN0aXZlU2lkZVBhbmVsOiBpZFxuICAgICAgfTtcbn07XG5cbi8qKlxuICogU2hvdyBhbmQgaGlkZSBtb2RhbCBkaWFsb2dcbiAqIEBtZW1iZXJvZiB1aVN0YXRlVXBkYXRlcnNcbiAqIEBwYXJhbSBzdGF0ZSBgdWlTdGF0ZWBcbiAqIEBwYXJhbSBhY3Rpb25cbiAqIEBwYXJhbWFjdGlvbi5wYXlsb2FkIGlkIG9mIG1vZGFsIHRvIGJlIHNob3duLCBudWxsIHRvIGhpZGUgbW9kYWxzLiBPbmUgb2Y6XG4gKiAgLSBbYERBVEFfVEFCTEVfSURgXSguLi9jb25zdGFudHMvZGVmYXVsdC1zZXR0aW5ncy5tZCNkYXRhX3RhYmxlX2lkKVxuICogIC0gW2BERUxFVEVfREFUQV9JRGBdKC4uL2NvbnN0YW50cy9kZWZhdWx0LXNldHRpbmdzLm1kI2RlbGV0ZV9kYXRhX2lkKVxuICogIC0gW2BBRERfREFUQV9JRGBdKC4uL2NvbnN0YW50cy9kZWZhdWx0LXNldHRpbmdzLm1kI2FkZF9kYXRhX2lkKVxuICogIC0gW2BFWFBPUlRfSU1BR0VfSURgXSguLi9jb25zdGFudHMvZGVmYXVsdC1zZXR0aW5ncy5tZCNleHBvcnRfaW1hZ2VfaWQpXG4gKiAgLSBbYEVYUE9SVF9EQVRBX0lEYF0oLi4vY29uc3RhbnRzL2RlZmF1bHQtc2V0dGluZ3MubWQjZXhwb3J0X2RhdGFfaWQpXG4gKiAgLSBbYEFERF9NQVBfU1RZTEVfSURgXSguLi9jb25zdGFudHMvZGVmYXVsdC1zZXR0aW5ncy5tZCNhZGRfbWFwX3N0eWxlX2lkKVxuICogQHJldHVybnMgbmV4dFN0YXRlXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCB0b2dnbGVNb2RhbFVwZGF0ZXIgPSAoXG4gIHN0YXRlOiBVaVN0YXRlLFxuICB7cGF5bG9hZDogaWR9OiBVSVN0YXRlQWN0aW9ucy5Ub2dnbGVNb2RhbFVwZGF0ZXJBY3Rpb25cbik6IFVpU3RhdGUgPT4gKHtcbiAgLi4uc3RhdGUsXG4gIGN1cnJlbnRNb2RhbDogaWQsXG4gIC8vIEFkZCBEYXRhIGFuZCBldmVyeSBvdGhlciBtb2RhbCBvcGVuIGxlYXZlIHJlcGxhY2UgbW9kZS5cbiAgLy8gUmVwbGFjZSBtb2RlIGlzIGVudGVyZWQgb25seSB0aHJvdWdoIG9wZW5SZXBsYWNlRGF0YXNldE1vZGFsLlxuICBkYXRhc2V0VG9SZXBsYWNlSWQ6IG51bGxcbn0pO1xuXG4vKipcbiAqIEhpZGUgYW5kIHNob3cgc2lkZSBwYW5lbCBoZWFkZXIgZHJvcGRvd24sIGFjdGl2YXRlZCBieSBjbGlja2luZyB0aGUgc2hhcmUgbGluayBvbiB0b3Agb2YgdGhlIHNpZGUgcGFuZWxcbiAqIEBtZW1iZXJvZiB1aVN0YXRlVXBkYXRlcnNcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IHNob3dFeHBvcnREcm9wZG93blVwZGF0ZXIgPSAoXG4gIHN0YXRlOiBVaVN0YXRlLFxuICB7cGF5bG9hZDogaWR9OiBVSVN0YXRlQWN0aW9ucy5TaG93RXhwb3J0RHJvcGRvd25VcGRhdGVyQWN0aW9uXG4pOiBVaVN0YXRlID0+ICh7XG4gIC4uLnN0YXRlLFxuICB2aXNpYmxlRHJvcGRvd246IGlkXG59KTtcblxuLyoqXG4gKiBIaWRlIHNpZGUgcGFuZWwgaGVhZGVyIGRyb3Bkb3duLCBhY3RpdmF0ZWQgYnkgY2xpY2tpbmcgdGhlIHNoYXJlIGxpbmsgb24gdG9wIG9mIHRoZSBzaWRlIHBhbmVsXG4gKiBAbWVtYmVyb2YgdWlTdGF0ZVVwZGF0ZXJzXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBoaWRlRXhwb3J0RHJvcGRvd25VcGRhdGVyID0gKHN0YXRlOiBVaVN0YXRlKTogVWlTdGF0ZSA9PiAoe1xuICAuLi5zdGF0ZSxcbiAgdmlzaWJsZURyb3Bkb3duOiBudWxsXG59KTtcblxuLyoqXG4gKiBUb2dnbGUgc2lkZSBwYW5lbCBjbG9zZSBidXR0b24gb24gdG9wIGxlZnQgb2YgdGhlIHNpZGUgcGFuZWxcbiAqIEBtZW1iZXJvZiB1aVN0YXRlVXBkYXRlcnNcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IHRvZ2dsZVNpZGVQYW5lbENsb3NlQnV0dG9uVXBkYXRlciA9IChcbiAgc3RhdGU6IFVpU3RhdGUsXG4gIHtwYXlsb2FkOiB7c2hvd319OiBVSVN0YXRlQWN0aW9ucy5Ub2dnbGVTaWRlUGFuZWxDbG9zZUJ1dHRvblVwZGF0ZXJBY3Rpb25cbik6IFVpU3RhdGUgPT4gKHtcbiAgLi4uc3RhdGUsXG4gIGlzU2lkZVBhbmVsQ2xvc2VCdXR0b25WaXNpYmxlOiBzaG93XG59KTtcblxuLy8gTWFwIGNvbnRyb2wgZHJvcGRvd25zL21lbnVzIHRoYXQgb3ZlcmxhcCBlYWNoIG90aGVyIHZpc3VhbGx5IGFuZCB0aGVyZWZvcmVcbi8vIHNob3VsZCBiZSBtdXR1YWxseSBleGNsdXNpdmU6IG9wZW5pbmcgb25lIGNsb3NlcyBhbGwgdGhlIG90aGVycy5cbi8vIChzcGxpdC92aWV3LW1vZGUgbWVudSwgdG9wLzNkL2dsb2JlIG1lbnUsIHBvbHlnb24gZHJhdyB0b29sLCBsYW5ndWFnZSBtZW51KVxuZXhwb3J0IGNvbnN0IE1VVFVBTExZX0VYQ0xVU0lWRV9NQVBfQ09OVFJPTFM6IHN0cmluZ1tdID0gW1xuICBNQVBfQ09OVFJPTFMuc3BsaXRNYXAsXG4gIE1BUF9DT05UUk9MUy50b2dnbGUzZCxcbiAgTUFQX0NPTlRST0xTLm1hcERyYXcsXG4gIE1BUF9DT05UUk9MUy5tYXBMb2NhbGVcbl07XG5cbi8qKlxuICogVG9nZ2xlIGFjdGl2ZSBtYXAgY29udHJvbCBwYW5lbFxuICogQG1lbWJlcm9mIHVpU3RhdGVVcGRhdGVyc1xuICogQHBhcmFtIHN0YXRlIGB1aVN0YXRlYFxuICogQHBhcmFtIGFjdGlvbiBhY3Rpb25cbiAqIEBwYXJhbSBhY3Rpb24ucGF5bG9hZCBtYXAgY29udHJvbCBwYW5lbCBpZCwgb25lIG9mIHRoZSBrZXlzIG9mOiBbYERFRkFVTFRfTUFQX0NPTlRST0xTYF0oI2RlZmF1bHRfbWFwX2NvbnRyb2xzKVxuICogQHJldHVybnMgbmV4dFN0YXRlXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCB0b2dnbGVNYXBDb250cm9sVXBkYXRlciA9IChcbiAgc3RhdGU6IFVpU3RhdGUsXG4gIHtwYXlsb2FkOiB7cGFuZWxJZCwgaW5kZXggPSAwfX06IFVJU3RhdGVBY3Rpb25zLlRvZ2dsZU1hcENvbnRyb2xVcGRhdGVyQWN0aW9uXG4pOiBVaVN0YXRlID0+IHtcbiAgbGV0IHVwZGF0ZWRTdGF0ZSA9IHN0YXRlO1xuXG4gIC8vIFRoZSBvdmVybGFwcGluZyBtYXAgY29udHJvbCBtZW51cyBzaG91bGQgYmUgbXV0dWFsbHkgZXhjbHVzaXZlOiB3aGVuIG9uZSBvZlxuICAvLyB0aGVtIGlzIGJlaW5nIG9wZW5lZCwgZGVhY3RpdmF0ZSBldmVyeSBvdGhlciBvbmUgdGhhdCBpcyBjdXJyZW50bHkgYWN0aXZlXG4gIC8vIHNvIHRoZWlyIGRyb3Bkb3ducyBuZXZlciBvdmVybGFwIG9uIHNjcmVlbi5cbiAgY29uc3QgaXNPcGVuaW5nID0gIXVwZGF0ZWRTdGF0ZS5tYXBDb250cm9sc1twYW5lbElkXT8uYWN0aXZlO1xuICBpZiAoaXNPcGVuaW5nICYmIE1VVFVBTExZX0VYQ0xVU0lWRV9NQVBfQ09OVFJPTFMuaW5jbHVkZXMocGFuZWxJZCkpIHtcbiAgICBjb25zdCBuZXh0TWFwQ29udHJvbHMgPSB7Li4udXBkYXRlZFN0YXRlLm1hcENvbnRyb2xzfTtcbiAgICBsZXQgZGlkRGVhY3RpdmF0ZSA9IGZhbHNlO1xuICAgIE1VVFVBTExZX0VYQ0xVU0lWRV9NQVBfQ09OVFJPTFMuZm9yRWFjaChjb250cm9sSWQgPT4ge1xuICAgICAgaWYgKGNvbnRyb2xJZCAhPT0gcGFuZWxJZCAmJiBuZXh0TWFwQ29udHJvbHNbY29udHJvbElkXT8uYWN0aXZlKSB7XG4gICAgICAgIG5leHRNYXBDb250cm9sc1tjb250cm9sSWRdID0gey4uLm5leHRNYXBDb250cm9sc1tjb250cm9sSWRdLCBhY3RpdmU6IGZhbHNlfTtcbiAgICAgICAgZGlkRGVhY3RpdmF0ZSA9IHRydWU7XG4gICAgICB9XG4gICAgfSk7XG4gICAgaWYgKGRpZERlYWN0aXZhdGUpIHtcbiAgICAgIHVwZGF0ZWRTdGF0ZSA9IHsuLi51cGRhdGVkU3RhdGUsIG1hcENvbnRyb2xzOiBuZXh0TWFwQ29udHJvbHN9O1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB7XG4gICAgLi4udXBkYXRlZFN0YXRlLFxuICAgIG1hcENvbnRyb2xzOiB7XG4gICAgICAuLi51cGRhdGVkU3RhdGUubWFwQ29udHJvbHMsXG4gICAgICBbcGFuZWxJZF06IHtcbiAgICAgICAgLi4uKHVwZGF0ZWRTdGF0ZS5tYXBDb250cm9sc1twYW5lbElkXSBhcyBNYXBDb250cm9sSXRlbSksXG4gICAgICAgIGFjdGl2ZTogIXVwZGF0ZWRTdGF0ZS5tYXBDb250cm9sc1twYW5lbElkXT8uYWN0aXZlLFxuICAgICAgICBhY3RpdmVNYXBJbmRleDogaW5kZXhcbiAgICAgIH1cbiAgICB9XG4gIH07XG59O1xuXG4vKipcbiAqIFRvZ2dsZSBtYXAgY29udHJvbCB2aXNpYmlsaXR5XG4gKiBAbWVtYmVyb2YgdWlTdGF0ZVVwZGF0ZXJzXG4gKiBAcGFyYW0gc3RhdGUgYHVpU3RhdGVgXG4gKiBAcGFyYW0gYWN0aW9uIGFjdGlvblxuICogQHBhcmFtIGFjdGlvbi5wYXlsb2FkIG1hcCBjb250cm9sIHBhbmVsIGlkLCBvbmUgb2YgdGhlIGtleXMgb2Y6IFtgREVGQVVMVF9NQVBfQ09OVFJPTFNgXSgjZGVmYXVsdF9tYXBfY29udHJvbHMpXG4gKiBAcmV0dXJucyBuZXh0U3RhdGVcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IHNldE1hcENvbnRyb2xWaXNpYmlsaXR5VXBkYXRlciA9IChcbiAgc3RhdGU6IFVpU3RhdGUsXG4gIHtwYXlsb2FkOiB7cGFuZWxJZCwgc2hvd319OiBVSVN0YXRlQWN0aW9ucy5zZXRNYXBDb250cm9sVmlzaWJpbGl0eVVwZGF0ZXJBY3Rpb25cbik6IFVpU3RhdGUgPT4ge1xuICBpZiAoIXN0YXRlLm1hcENvbnRyb2xzPy5bcGFuZWxJZF0pIHtcbiAgICByZXR1cm4gc3RhdGU7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIC4uLnN0YXRlLFxuICAgIG1hcENvbnRyb2xzOiB7XG4gICAgICAuLi5zdGF0ZS5tYXBDb250cm9scyxcbiAgICAgIFtwYW5lbElkXToge1xuICAgICAgICAuLi5zdGF0ZS5tYXBDb250cm9sc1twYW5lbElkXSxcbiAgICAgICAgc2hvdzogQm9vbGVhbihzaG93KVxuICAgICAgfVxuICAgIH1cbiAgfTtcbn07XG5cbi8qKlxuICogVG9nZ2xlIG1hcCBjb250cm9sIHNldHRpbmdzXG4gKiBAbWVtYmVyb2YgdWlTdGF0ZVVwZGF0ZXJzXG4gKiBAcGFyYW0gc3RhdGUgYHVpU3RhdGVgXG4gKiBAcGFyYW0gYWN0aW9uIGFjdGlvblxuICogQHBhcmFtIGFjdGlvbi5wYXlsb2FkIG1hcCBjb250cm9sIHBhbmVsIGlkLCBvbmUgb2YgdGhlIGtleXMgb2Y6IFtgREVGQVVMVF9NQVBfQ09OVFJPTFNgXSgjZGVmYXVsdF9tYXBfY29udHJvbHMpXG4gKiBAcmV0dXJucyBuZXh0U3RhdGVcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IHNldE1hcENvbnRyb2xTZXR0aW5nc1VwZGF0ZXIgPSAoXG4gIHN0YXRlOiBVaVN0YXRlLFxuICB7cGF5bG9hZDoge3BhbmVsSWQsIHNldHRpbmdzfX06IFVJU3RhdGVBY3Rpb25zLnNldE1hcENvbnRyb2xTZXR0aW5nc1VwZGF0ZXJBY3Rpb25cbik6IFVpU3RhdGUgPT4ge1xuICBjb25zdCBtYXBDb250cm9sID0gc3RhdGUubWFwQ29udHJvbHM/LltwYW5lbElkXSBhcyBNYXBDb250cm9sTWFwTGVnZW5kIHwgdW5kZWZpbmVkO1xuICBpZiAoIW1hcENvbnRyb2wpIHtcbiAgICByZXR1cm4gc3RhdGU7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIC4uLnN0YXRlLFxuICAgIG1hcENvbnRyb2xzOiB7XG4gICAgICAuLi5zdGF0ZS5tYXBDb250cm9scyxcbiAgICAgIFtwYW5lbElkXToge1xuICAgICAgICAuLi5tYXBDb250cm9sLFxuICAgICAgICBzZXR0aW5nczogey4uLm1hcENvbnRyb2wuc2V0dGluZ3MsIC4uLnNldHRpbmdzfVxuICAgICAgfSBhcyBNYXBDb250cm9sTWFwTGVnZW5kXG4gICAgfVxuICB9O1xufTtcblxuLyoqXG4gKiBUb2dnbGUgYWN0aXZlIG1hcCBjb250cm9sIHBhbmVsXG4gKiBAbWVtYmVyb2YgdWlTdGF0ZVVwZGF0ZXJzXG4gKiBAcGFyYW0gc3RhdGUgYHVpU3RhdGVgXG4gKiBAcGFyYW0gYWN0aW9uXG4gKiBAcGFyYW0gYWN0aW9uLnBheWxvYWQgZGF0YXNldCBpZFxuICogQHJldHVybnMgbmV4dFN0YXRlXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBvcGVuRGVsZXRlTW9kYWxVcGRhdGVyID0gKFxuICBzdGF0ZTogVWlTdGF0ZSxcbiAge3BheWxvYWQ6IGRhdGFzZXRLZXlUb1JlbW92ZX06IFVJU3RhdGVBY3Rpb25zLk9wZW5EZWxldGVNb2RhbFVwZGF0ZXJBY3Rpb25cbik6IFVpU3RhdGUgPT4gKHtcbiAgLi4uc3RhdGUsXG4gIGN1cnJlbnRNb2RhbDogREVMRVRFX0RBVEFfSUQsXG4gIGRhdGFzZXRLZXlUb1JlbW92ZVxufSk7XG5cbi8qKlxuICogT3BlbiB0aGUgYWRkLWRhdGEgbW9kYWwgc28gdGhlIG5leHQgY29uZmlybWVkIHVwbG9hZCByZXBsYWNlcyBvbmUgZGF0YXNldC5cbiAqIEBtZW1iZXJvZiB1aVN0YXRlVXBkYXRlcnNcbiAqIEBwYXJhbSBzdGF0ZSBgdWlTdGF0ZWBcbiAqIEBwYXJhbSBhY3Rpb25cbiAqIEBwYXJhbSBhY3Rpb24ucGF5bG9hZCBkYXRhc2V0IGlkXG4gKiBAcmV0dXJucyBuZXh0U3RhdGVcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IG9wZW5SZXBsYWNlRGF0YXNldE1vZGFsVXBkYXRlciA9IChcbiAgc3RhdGU6IFVpU3RhdGUsXG4gIHtwYXlsb2FkOiBkYXRhc2V0VG9SZXBsYWNlSWR9OiBVSVN0YXRlQWN0aW9ucy5PcGVuUmVwbGFjZURhdGFzZXRNb2RhbFVwZGF0ZXJBY3Rpb25cbik6IFVpU3RhdGUgPT4gKHtcbiAgLi4uc3RhdGUsXG4gIGN1cnJlbnRNb2RhbDogQUREX0RBVEFfSUQsXG4gIGRhdGFzZXRUb1JlcGxhY2VJZFxufSk7XG5cbi8qKlxuICogU2V0IGBleHBvcnRJbWFnZWAgb3B0aW9ucyBzdWNoIGFzIGBsZWdlbmRgIGFuZCBgY2hhcnRzYCB0byBgdHJ1ZWAgb3IgYGZhbHNlYFxuICogQG1lbWJlcm9mIHVpU3RhdGVVcGRhdGVyc1xuICogQHBhcmFtIHN0YXRlIGB1aVN0YXRlYFxuICogQHJldHVybnMgbmV4dFN0YXRlXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBzZXRFeHBvcnRJbWFnZVNldHRpbmdVcGRhdGVyID0gKFxuICBzdGF0ZTogVWlTdGF0ZSxcbiAge3BheWxvYWQ6IG5ld1NldHRpbmd9OiBVSVN0YXRlQWN0aW9ucy5TZXRFeHBvcnRJbWFnZVNldHRpbmdVcGRhdGVyQWN0aW9uXG4pOiBVaVN0YXRlID0+IHtcbiAgY29uc3QgdXBkYXRlZCA9IHsuLi5zdGF0ZS5leHBvcnRJbWFnZSwgLi4ubmV3U2V0dGluZ307XG4gIGNvbnN0IGltYWdlU2l6ZSA9IGNhbGN1bGF0ZUV4cG9ydEltYWdlU2l6ZSh1cGRhdGVkKSB8fCBzdGF0ZS5leHBvcnRJbWFnZS5pbWFnZVNpemU7XG5cbiAgcmV0dXJuIHtcbiAgICAuLi5zdGF0ZSxcbiAgICBleHBvcnRJbWFnZToge1xuICAgICAgLi4udXBkYXRlZCxcbiAgICAgIGltYWdlU2l6ZVxuICAgIH1cbiAgfTtcbn07XG5cbi8qKlxuICogU2V0IGBleHBvcnRJbWFnZS5zZXRFeHBvcnRJbWFnZURhdGFVcmlgIHRvIGEgaW1hZ2UgZGF0YVVyaVxuICogQG1lbWJlcm9mIHVpU3RhdGVVcGRhdGVyc1xuICogQHBhcmFtIHN0YXRlIGB1aVN0YXRlYFxuICogQHBhcmFtIGFjdGlvblxuICogQHBhcmFtIGFjdGlvbi5wYXlsb2FkIGV4cG9ydCBpbWFnZSBkYXRhIHVyaVxuICogQHJldHVybnMgbmV4dFN0YXRlXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBzZXRFeHBvcnRJbWFnZURhdGFVcmlVcGRhdGVyID0gKFxuICBzdGF0ZTogVWlTdGF0ZSxcbiAge3BheWxvYWQ6IGRhdGFVcml9OiBVSVN0YXRlQWN0aW9ucy5TZXRFeHBvcnRJbWFnZURhdGFVcmlVcGRhdGVyQWN0aW9uXG4pOiBVaVN0YXRlID0+IHtcbiAgaWYgKGRhdGFVcmkgPT09IHN0YXRlLmV4cG9ydEltYWdlLmltYWdlRGF0YVVyaSkge1xuICAgIHJldHVybiBzdGF0ZTtcbiAgfVxuICByZXR1cm4ge1xuICAgIC4uLnN0YXRlLFxuICAgIGV4cG9ydEltYWdlOiB7XG4gICAgICAuLi5zdGF0ZS5leHBvcnRJbWFnZSxcbiAgICAgIHByb2Nlc3Npbmc6IGZhbHNlLFxuICAgICAgaW1hZ2VEYXRhVXJpOiBkYXRhVXJpXG4gICAgfVxuICB9O1xufTtcblxuLyoqXG4gKiBAbWVtYmVyb2YgdWlTdGF0ZVVwZGF0ZXJzXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBzZXRFeHBvcnRJbWFnZUVycm9yVXBkYXRlciA9IChcbiAgc3RhdGU6IFVpU3RhdGUsXG4gIHtwYXlsb2FkOiBlcnJvcn06IFVJU3RhdGVBY3Rpb25zLlNldEV4cG9ydEltYWdlRXJyb3JVcGRhdGVyQWN0aW9uXG4pOiBVaVN0YXRlID0+ICh7XG4gIC4uLnN0YXRlLFxuICBleHBvcnRJbWFnZToge1xuICAgIC4uLnN0YXRlLmV4cG9ydEltYWdlLFxuICAgIHByb2Nlc3Npbmc6IGZhbHNlLFxuICAgIGVycm9yXG4gIH1cbn0pO1xuXG4vKipcbiAqIERlbGV0ZSBjYWNoZWQgZXhwb3J0IGltYWdlXG4gKiBAbWVtYmVyb2YgdWlTdGF0ZVVwZGF0ZXJzXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBjbGVhbnVwRXhwb3J0SW1hZ2VVcGRhdGVyID0gKHN0YXRlOiBVaVN0YXRlKTogVWlTdGF0ZSA9PiAoe1xuICAuLi5zdGF0ZSxcbiAgZXhwb3J0SW1hZ2U6IHtcbiAgICAuLi5zdGF0ZS5leHBvcnRJbWFnZSxcbiAgICBleHBvcnRpbmc6IGZhbHNlLFxuICAgIGltYWdlRGF0YVVyaTogJycsXG4gICAgZXJyb3I6IGZhbHNlLFxuICAgIHByb2Nlc3Npbmc6IGZhbHNlLFxuICAgIGNlbnRlcjogZmFsc2VcbiAgfVxufSk7XG5cbi8qKlxuICogU2V0IGBleHBvcnRWaWRlb2Agc2V0dGluZ3M6IG1lZGlhVHlwZSwgY2FtZXJhUHJlc2V0LCBmaWxlTmFtZSwgcmVzb2x1dGlvbiwgZHVyYXRpb25Nc1xuICogQG1lbWJlcm9mIHVpU3RhdGVVcGRhdGVyc1xuICogQHBhcmFtIHN0YXRlIGB1aVN0YXRlYFxuICogQHBhcmFtIGFjdGlvblxuICogQHBhcmFtIGFjdGlvbi5wYXlsb2FkIG5ldyB2aWRlbyBleHBvcnQgc2V0dGluZ3NcbiAqIEByZXR1cm5zIG5leHRTdGF0ZVxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3Qgc2V0RXhwb3J0VmlkZW9TZXR0aW5nVXBkYXRlciA9IChcbiAgc3RhdGU6IFVpU3RhdGUsXG4gIHtwYXlsb2FkOiBuZXdTZXR0aW5nfTogVUlTdGF0ZUFjdGlvbnMuU2V0RXhwb3J0VmlkZW9TZXR0aW5nVXBkYXRlckFjdGlvblxuKTogVWlTdGF0ZSA9PiAoe1xuICAuLi5zdGF0ZSxcbiAgZXhwb3J0VmlkZW86IHtcbiAgICAuLi5zdGF0ZS5leHBvcnRWaWRlbyxcbiAgICAuLi5uZXdTZXR0aW5nXG4gIH1cbn0pO1xuXG4vKipcbiAqIFN0YXJ0IGltYWdlIGV4cG9ydGluZyBmbG93XG4gKiBAbWVtYmVyb2YgdWlTdGF0ZVVwZGF0ZXJzXG4gKiBAcGFyYW0gc3RhdGVcbiAqIEBwYXJhbSBvcHRpb25zXG4gKiBAcmV0dXJucyB7VWlTdGF0ZX1cbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IHN0YXJ0RXhwb3J0aW5nSW1hZ2VVcGRhdGVyID0gKFxuICBzdGF0ZTogVWlTdGF0ZSxcbiAge3BheWxvYWQ6IG9wdGlvbnMgPSB7fX06IHtwYXlsb2FkOiBQYXJ0aWFsPEV4cG9ydEltYWdlPn1cbik6IFVpU3RhdGUgPT4ge1xuICBjb25zdCBpbWFnZVNldHRpbmdzID0ge1xuICAgIC4uLm9wdGlvbnMsXG4gICAgZXhwb3J0aW5nOiB0cnVlXG4gIH07XG5cbiAgcmV0dXJuIGNvbXBvc2VfKFtcbiAgICBjbGVhbnVwRXhwb3J0SW1hZ2VVcGRhdGVyLFxuICAgIGFwcGx5XyhzZXRFeHBvcnRJbWFnZVNldHRpbmdVcGRhdGVyLCBwYXlsb2FkXyhpbWFnZVNldHRpbmdzKSlcbiAgXSkoc3RhdGUpO1xufTtcblxuLyoqXG4gKiBTZXQgc2VsZWN0ZWQgZGF0YXNldCBmb3IgZXhwb3J0XG4gKiBAbWVtYmVyb2YgdWlTdGF0ZVVwZGF0ZXJzXG4gKiBAcGFyYW0gc3RhdGUgYHVpU3RhdGVgXG4gKiBAcGFyYW0gYWN0aW9uXG4gKiBAcGFyYW0gYWN0aW9uLnBheWxvYWQgZGF0YXNldCBpZFxuICogQHJldHVybnMgbmV4dFN0YXRlXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBzZXRFeHBvcnRTZWxlY3RlZERhdGFzZXRVcGRhdGVyID0gKFxuICBzdGF0ZTogVWlTdGF0ZSxcbiAge3BheWxvYWQ6IGRhdGFzZXR9OiBVSVN0YXRlQWN0aW9ucy5TZXRFeHBvcnRTZWxlY3RlZERhdGFzZXRVcGRhdGVyQWN0aW9uXG4pOiBVaVN0YXRlID0+ICh7XG4gIC4uLnN0YXRlLFxuICBleHBvcnREYXRhOiB7XG4gICAgLi4uc3RhdGUuZXhwb3J0RGF0YSxcbiAgICBzZWxlY3RlZERhdGFzZXQ6IGRhdGFzZXRcbiAgfVxufSk7XG5cbi8qKlxuICogU2V0IGRhdGEgZm9ybWF0IGZvciBleHBvcnRpbmcgZGF0YVxuICogQG1lbWJlcm9mIHVpU3RhdGVVcGRhdGVyc1xuICogQHBhcmFtIHN0YXRlIGB1aVN0YXRlYFxuICogQHBhcmFtIGFjdGlvblxuICogQHBhcmFtIGFjdGlvbi5wYXlsb2FkIG9uZSBvZiBgJ3RleHQvY3N2J2BcbiAqIEByZXR1cm5zIG5leHRTdGF0ZVxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3Qgc2V0RXhwb3J0RGF0YVR5cGVVcGRhdGVyID0gKFxuICBzdGF0ZTogVWlTdGF0ZSxcbiAge3BheWxvYWQ6IGRhdGFUeXBlfTogVUlTdGF0ZUFjdGlvbnMuU2V0RXhwb3J0RGF0YVR5cGVVcGRhdGVyQWN0aW9uXG4pOiBVaVN0YXRlID0+ICh7XG4gIC4uLnN0YXRlLFxuICBleHBvcnREYXRhOiB7XG4gICAgLi4uc3RhdGUuZXhwb3J0RGF0YSxcbiAgICBkYXRhVHlwZVxuICB9XG59KTtcblxuLyoqXG4gKiBXaGV0aGVyIHRvIGV4cG9ydCBmaWx0ZXJlZCBkYXRhLCBgdHJ1ZWAgb3IgYGZhbHNlYFxuICogQG1lbWJlcm9mIHVpU3RhdGVVcGRhdGVyc1xuICogQHBhcmFtIHN0YXRlIGB1aVN0YXRlYFxuICogQHBhcmFtIGFjdGlvblxuICogQHBhcmFtIGFjdGlvbi5wYXlsb2FkXG4gKiBAcmV0dXJucyBuZXh0U3RhdGVcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IHNldEV4cG9ydEZpbHRlcmVkVXBkYXRlciA9IChcbiAgc3RhdGU6IFVpU3RhdGUsXG4gIHtwYXlsb2FkOiBmaWx0ZXJlZH06IFVJU3RhdGVBY3Rpb25zLlNldEV4cG9ydEZpbHRlcmVkVXBkYXRlckFjdGlvblxuKTogVWlTdGF0ZSA9PiAoe1xuICAuLi5zdGF0ZSxcbiAgZXhwb3J0RGF0YToge1xuICAgIC4uLnN0YXRlLmV4cG9ydERhdGEsXG4gICAgZmlsdGVyZWRcbiAgfVxufSk7XG5cbi8qKlxuICogV2hldGhlciB0byBpbmNsdWRpbmcgZGF0YSBpbiBtYXAgY29uZmlnLCB0b2dnbGUgYmV0d2VlbiBgdHJ1ZWAgb3IgYGZhbHNlYFxuICogQG1lbWJlcm9mIHVpU3RhdGVVcGRhdGVyc1xuICogQHBhcmFtIHN0YXRlIGB1aVN0YXRlYFxuICogQHJldHVybnMgbmV4dFN0YXRlXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBzZXRFeHBvcnREYXRhVXBkYXRlciA9IChzdGF0ZTogVWlTdGF0ZSk6IFVpU3RhdGUgPT4gKHtcbiAgLi4uc3RhdGUsXG4gIGV4cG9ydE1hcDoge1xuICAgIC4uLnN0YXRlLmV4cG9ydE1hcCxcbiAgICBbRVhQT1JUX01BUF9GT1JNQVRTLkpTT05dOiB7XG4gICAgICAuLi5zdGF0ZS5leHBvcnRNYXBbRVhQT1JUX01BUF9GT1JNQVRTLkpTT05dLFxuICAgICAgaGFzRGF0YTogIXN0YXRlLmV4cG9ydE1hcFtFWFBPUlRfTUFQX0ZPUk1BVFMuSlNPTl0uaGFzRGF0YVxuICAgIH1cbiAgfVxufSk7XG5cbi8qKlxuICogd2hldGhlciB0byBleHBvcnQgYSBtYXBib3ggYWNjZXNzIHRvIEhUTUwgc2luZ2xlIHBhZ2VcbiAqIEBwYXJhbSBzdGF0ZSAtIGB1aVN0YXRlYFxuICogQHBhcmFtIGFjdGlvblxuICogQHBhcmFtIGFjdGlvbi5wYXlsb2FkXG4gKiBAcmV0dXJucyBuZXh0U3RhdGVcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IHNldFVzZXJNYXBib3hBY2Nlc3NUb2tlblVwZGF0ZXIgPSAoXG4gIHN0YXRlOiBVaVN0YXRlLFxuICB7cGF5bG9hZDogdXNlck1hcGJveFRva2VufTogVUlTdGF0ZUFjdGlvbnMuU2V0VXNlck1hcGJveEFjY2Vzc1Rva2VuVXBkYXRlckFjdGlvblxuKTogVWlTdGF0ZSA9PiAoe1xuICAuLi5zdGF0ZSxcbiAgZXhwb3J0TWFwOiB7XG4gICAgLi4uc3RhdGUuZXhwb3J0TWFwLFxuICAgIFtFWFBPUlRfTUFQX0ZPUk1BVFMuSFRNTF06IHtcbiAgICAgIC4uLnN0YXRlLmV4cG9ydE1hcFtFWFBPUlRfTUFQX0ZPUk1BVFMuSFRNTF0sXG4gICAgICB1c2VyTWFwYm94VG9rZW5cbiAgICB9XG4gIH1cbn0pO1xuXG4vKipcbiAqIFNldHMgdGhlIGV4cG9ydCBtYXAgZm9ybWF0XG4gKiBAcGFyYW0gc3RhdGUgLSBgdWlTdGF0ZWBcbiAqIEBwYXJhbSBhY3Rpb25cbiAqIEBwYXJhbSBhY3Rpb24ucGF5bG9hZCBmb3JtYXQgdG8gdXNlIHRvIGV4cG9ydCB0aGUgbWFwIGludG9cbiAqIEByZXR1cm4gbmV4dFN0YXRlXG4gKi9cbmV4cG9ydCBjb25zdCBzZXRFeHBvcnRNYXBGb3JtYXRVcGRhdGVyID0gKFxuICBzdGF0ZTogVWlTdGF0ZSxcbiAge3BheWxvYWQ6IGZvcm1hdH06IFVJU3RhdGVBY3Rpb25zLlNldEV4cG9ydE1hcEZvcm1hdFVwZGF0ZXJBY3Rpb25cbik6IFVpU3RhdGUgPT4gKHtcbiAgLi4uc3RhdGUsXG4gIGV4cG9ydE1hcDoge1xuICAgIC4uLnN0YXRlLmV4cG9ydE1hcCxcbiAgICAvLyBAdHMtZXhwZWN0LWVycm9yXG4gICAgZm9ybWF0XG4gIH1cbn0pO1xuXG4vKipcbiAqIFNldCB0aGUgZmlsZW5hbWUgdXNlZCB3aGVuIGV4cG9ydGluZyBhbiBIVE1MIG9yIEpTT04gbWFwXG4gKiBAbWVtYmVyb2YgdWlTdGF0ZVVwZGF0ZXJzXG4gKiBAcGFyYW0gc3RhdGUgYHVpU3RhdGVgXG4gKiBAcGFyYW0gYWN0aW9uXG4gKiBAcGFyYW0gYWN0aW9uLnBheWxvYWQgZmlsZSBuYW1lIHdpdGhvdXQgZXh0ZW5zaW9uXG4gKiBAcmV0dXJucyBuZXh0U3RhdGVcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IHNldEV4cG9ydE1hcEZpbGVOYW1lVXBkYXRlciA9IChcbiAgc3RhdGU6IFVpU3RhdGUsXG4gIHtwYXlsb2FkOiBmaWxlTmFtZX06IFVJU3RhdGVBY3Rpb25zLlNldEV4cG9ydE1hcEZpbGVOYW1lVXBkYXRlckFjdGlvblxuKTogVWlTdGF0ZSA9PiAoe1xuICAuLi5zdGF0ZSxcbiAgZXhwb3J0TWFwOiB7XG4gICAgLi4uc3RhdGUuZXhwb3J0TWFwLFxuICAgIGZpbGVOYW1lXG4gIH1cbn0pO1xuXG4vKipcbiAqIFNldCB0aGUgZXhwb3J0IGh0bWwgbWFwIG1vZGVcbiAqIEBwYXJhbSBzdGF0ZSAtIGB1aVN0YXRlYFxuICogQHBhcmFtIGFjdGlvblxuICogQHBhcmFtIGFjdGlvbi5wYXlsb2FkIHRvIGJlIHNldCAoYXZhaWxhYmxlIG1vZGVzOiBFWFBPUlRfSFRNTF9NQVBfTU9ERVMpXG4gKiBAcmV0dXJuIG5leHRTdGF0ZVxuICovXG5leHBvcnQgY29uc3Qgc2V0RXhwb3J0TWFwSFRNTE1vZGVVcGRhdGVyID0gKFxuICBzdGF0ZTogVWlTdGF0ZSxcbiAge3BheWxvYWQ6IG1vZGV9OiBVSVN0YXRlQWN0aW9ucy5TZXRFeHBvcnRIVE1MTWFwTW9kZVVwZGF0ZXJBY3Rpb25cbik6IFVpU3RhdGUgPT4gKHtcbiAgLi4uc3RhdGUsXG4gIGV4cG9ydE1hcDoge1xuICAgIC4uLnN0YXRlLmV4cG9ydE1hcCxcbiAgICBbRVhQT1JUX01BUF9GT1JNQVRTLkhUTUxdOiB7XG4gICAgICAuLi5zdGF0ZS5leHBvcnRNYXBbRVhQT1JUX01BUF9GT1JNQVRTLkhUTUxdLFxuICAgICAgbW9kZVxuICAgIH1cbiAgfVxufSk7XG5cbi8qKlxuICogV2hldGhlciB0byBrZWVwIGxheWVyIGFjY2VzcyB0b2tlbnMgaW4gZXhwb3J0ZWQgSFRNTCBhbmQgSlNPTiBtYXBzLlxuICogQHBhcmFtIHN0YXRlIC0gYHVpU3RhdGVgXG4gKiBAcGFyYW0gYWN0aW9uXG4gKiBAcGFyYW0gYWN0aW9uLnBheWxvYWQgLSBpbmNsdWRlIGxheWVyIEFQSSBrZXlzXG4gKiBAcmV0dXJuIG5leHRTdGF0ZVxuICovXG5leHBvcnQgY29uc3Qgc2V0RXhwb3J0SW5jbHVkZUxheWVyQXBpS2V5c1VwZGF0ZXIgPSAoXG4gIHN0YXRlOiBVaVN0YXRlLFxuICB7cGF5bG9hZDogaW5jbHVkZUxheWVyQXBpS2V5c306IFVJU3RhdGVBY3Rpb25zLlNldEV4cG9ydEluY2x1ZGVMYXllckFwaUtleXNVcGRhdGVyQWN0aW9uXG4pOiBVaVN0YXRlID0+ICh7XG4gIC4uLnN0YXRlLFxuICBleHBvcnRNYXA6IHtcbiAgICAuLi5zdGF0ZS5leHBvcnRNYXAsXG4gICAgaW5jbHVkZUxheWVyQXBpS2V5c1xuICB9XG59KTtcblxuLyoqXG4gKiBBZGRzIGEgbmV3IG5vdGlmaWNhdGlvbi5cbiAqIFVwZGF0ZXMgYSBub3RpZmljYXRpb24gaW4gY2FzZSBvZiBtYXRjaGluZyBpZHMuXG4gKiBAbWVtYmVyb2YgdWlTdGF0ZVVwZGF0ZXJzXG4gKiBAcGFyYW0gc3RhdGUgYHVpU3RhdGVgXG4gKiBAcGFyYW0gYWN0aW9uXG4gKiBAcGFyYW0gYWN0aW9uLnBheWxvYWQgUGFyYW1zIG9mIGEgbm90aWZpY2F0aW9uXG4gKiBAcmV0dXJucyBuZXh0U3RhdGVcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IGFkZE5vdGlmaWNhdGlvblVwZGF0ZXIgPSAoXG4gIHN0YXRlOiBVaVN0YXRlLFxuICB7cGF5bG9hZH06IFVJU3RhdGVBY3Rpb25zLkFkZE5vdGlmaWNhdGlvblVwZGF0ZXJBY3Rpb25cbik6IFVpU3RhdGUgPT4ge1xuICBjb25zdCBvbGROb3RpZmljYXRpb25zID0gc3RhdGUubm90aWZpY2F0aW9ucyB8fCBbXTtcbiAgLy8gQHRzLWV4cGVjdC1lcnJvclxuICBjb25zdCBwYXlsb2FkSWQgPSBwYXlsb2FkPy5pZDtcbiAgY29uc3Qgbm90aWZpY2F0aW9uVG9VcGRhdGUgPSBwYXlsb2FkSWQgPyBvbGROb3RpZmljYXRpb25zLmZpbmQobiA9PiBuLmlkID09PSBwYXlsb2FkSWQpIDogbnVsbDtcblxuICBsZXQgbm90aWZpY2F0aW9ucztcbiAgaWYgKG5vdGlmaWNhdGlvblRvVXBkYXRlKSB7XG4gICAgbm90aWZpY2F0aW9ucyA9IG9sZE5vdGlmaWNhdGlvbnMubWFwKG4gPT5cbiAgICAgIG4uaWQgPT09IHBheWxvYWRJZCA/IGNyZWF0ZU5vdGlmaWNhdGlvbih7Li4ucGF5bG9hZCwgY291bnQ6IG4uY291bnQgKyAxfSkgOiBuXG4gICAgKTtcbiAgfSBlbHNlIHtcbiAgICBub3RpZmljYXRpb25zID0gWy4uLm9sZE5vdGlmaWNhdGlvbnMsIGNyZWF0ZU5vdGlmaWNhdGlvbihwYXlsb2FkKV07XG4gIH1cblxuICByZXR1cm4gey4uLnN0YXRlLCBub3RpZmljYXRpb25zfTtcbn07XG5cbi8qKlxuICogUmVtb3ZlIGEgbm90aWZpY2F0aW9uXG4gKiBAbWVtYmVyb2YgdWlTdGF0ZVVwZGF0ZXJzXG4gKiBAcGFyYW0gc3RhdGUgYHVpU3RhdGVgXG4gKiBAcGFyYW0gYWN0aW9uXG4gKiBAcGFyYW0gYWN0aW9uLnBheWxvYWQgaWQgb2YgdGhlIG5vdGlmaWNhdGlvbiB0byBiZSByZW1vdmVkXG4gKiBAcmV0dXJucyBuZXh0U3RhdGVcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IHJlbW92ZU5vdGlmaWNhdGlvblVwZGF0ZXIgPSAoXG4gIHN0YXRlOiBVaVN0YXRlLFxuICB7cGF5bG9hZDogaWR9OiBVSVN0YXRlQWN0aW9ucy5SZW1vdmVOb3RpZmljYXRpb25VcGRhdGVyQWN0aW9uXG4pOiBVaVN0YXRlID0+ICh7XG4gIC4uLnN0YXRlLFxuICBub3RpZmljYXRpb25zOiBzdGF0ZS5ub3RpZmljYXRpb25zLmZpbHRlcihuID0+IG4uaWQgIT09IGlkKVxufSk7XG5cbi8qKlxuICogRmlyZWQgd2hlbiBmaWxlIGxvYWRpbmcgYmVnaW5cbiAqIEBtZW1iZXJvZiB1aVN0YXRlVXBkYXRlcnNcbiAqIEBwYXJhbSBzdGF0ZSBgdWlTdGF0ZWBcbiAqIEByZXR1cm5zIG5leHRTdGF0ZVxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgbG9hZEZpbGVzVXBkYXRlciA9IChzdGF0ZTogVWlTdGF0ZSk6IFVpU3RhdGUgPT4gKHtcbiAgLi4uc3RhdGUsXG4gIGxvYWRGaWxlczoge1xuICAgIC4uLnN0YXRlLmxvYWRGaWxlcyxcbiAgICBmaWxlTG9hZGluZzogdHJ1ZVxuICB9XG59KTtcblxuLyoqXG4gKiBIYW5kbGVzIGxvYWRpbmcgZmlsZSBzdWNjZXNzIGFuZCBzZXQgZmlsZUxvYWRpbmcgcHJvcGVydHkgdG8gZmFsc2VcbiAqIEBtZW1iZXJvZiB1aVN0YXRlVXBkYXRlcnNcbiAqIEBwYXJhbSBzdGF0ZSBgdWlTdGF0ZWBcbiAqIEByZXR1cm5zIG5leHRTdGF0ZVxuICovXG5leHBvcnQgY29uc3QgbG9hZEZpbGVzU3VjY2Vzc1VwZGF0ZXIgPSAoc3RhdGU6IFVpU3RhdGUpOiBVaVN0YXRlID0+ICh7XG4gIC4uLnN0YXRlLFxuICBsb2FkRmlsZXM6IHtcbiAgICAuLi5zdGF0ZS5sb2FkRmlsZXMsXG4gICAgZmlsZUxvYWRpbmc6IGZhbHNlXG4gIH1cbn0pO1xuXG4vKipcbiAqIEhhbmRsZXMgbG9hZCBmaWxlIGVycm9yIGFuZCBzZXQgZmlsZUxvYWRpbmcgcHJvcGVydHkgdG8gZmFsc2VcbiAqIEBtZW1iZXJvZiB1aVN0YXRlVXBkYXRlcnNcbiAqIEBwYXJhbSBzdGF0ZVxuICogQHBhcmFtIGFjdGlvblxuICogQHBhcmFtIGFjdGlvbi5lcnJvclxuICogQHJldHVybnMgbmV4dFN0YXRlXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBsb2FkRmlsZXNFcnJVcGRhdGVyID0gKHN0YXRlOiBVaVN0YXRlLCB7ZXJyb3J9OiBMb2FkRmlsZXNFcnJVcGRhdGVyQWN0aW9uKTogVWlTdGF0ZSA9PlxuICBhZGROb3RpZmljYXRpb25VcGRhdGVyKFxuICAgIHtcbiAgICAgIC4uLnN0YXRlLFxuICAgICAgbG9hZEZpbGVzOiB7XG4gICAgICAgIC4uLnN0YXRlLmxvYWRGaWxlcyxcbiAgICAgICAgZmlsZUxvYWRpbmc6IGZhbHNlXG4gICAgICB9XG4gICAgfSxcbiAgICB7XG4gICAgICBwYXlsb2FkOiBlcnJvck5vdGlmaWNhdGlvbih7XG4gICAgICAgIG1lc3NhZ2U6IChlcnJvciB8fCB7fSkubWVzc2FnZSB8fCAnRmFpbGVkIHRvIHVwbG9hZCBmaWxlcycsXG4gICAgICAgIHRvcGljOiBERUZBVUxUX05PVElGSUNBVElPTl9UT1BJQ1MuZ2xvYmFsXG4gICAgICB9KVxuICAgIH1cbiAgKTtcblxuLyoqXG4gKiBIYW5kbGVzIHRvZ2dsZSBtYXAgc3BsaXQgYW5kIHJlc2V0IGFsbCBtYXAgY29udHJvbCBpbmRleCB0byAwXG4gKiBAbWVtYmVyb2YgdWlTdGF0ZVVwZGF0ZXJzXG4gKiBAcGFyYW0gc3RhdGVcbiAqIEByZXR1cm5zIG5leHRTdGF0ZVxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgdG9nZ2xlU3BsaXRNYXBVcGRhdGVyID0gKHN0YXRlOiBVaVN0YXRlKTogVWlTdGF0ZSA9PiAoe1xuICAuLi5zdGF0ZSxcbiAgbWFwQ29udHJvbHM6IE9iamVjdC5lbnRyaWVzKHN0YXRlLm1hcENvbnRyb2xzKS5yZWR1Y2UoXG4gICAgKGFjYywgZW50cnkpID0+ICh7XG4gICAgICAuLi5hY2MsXG4gICAgICBbZW50cnlbMF1dOiB7XG4gICAgICAgIC4uLihlbnRyeVsxXSBhcyBNYXBDb250cm9sSXRlbSksXG4gICAgICAgIGFjdGl2ZU1hcEluZGV4OiAwXG4gICAgICB9XG4gICAgfSksXG4gICAge30gYXMgTWFwQ29udHJvbHNcbiAgKVxufSk7XG5cbi8qKlxuICogVG9nZ2xlIG1vZGFsIGRhdGFcbiAqIEBtZW1iZXJvZiB1aVN0YXRlVXBkYXRlcnNcbiAqIEBwYXJhbSBzdGF0ZVxuICogQHJldHVybnMgbmV4dFN0YXRlXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBzaG93RGF0YXNldFRhYmxlVXBkYXRlciA9IChzdGF0ZTogVWlTdGF0ZSk6IFVpU3RhdGUgPT5cbiAgdG9nZ2xlTW9kYWxVcGRhdGVyKHN0YXRlLCB7cGF5bG9hZDogREFUQV9UQUJMRV9JRH0pO1xuXG4vKipcbiAqIFNldCB0aGUgbG9jYWxlIG9mIHRoZSBVSVxuICogQG1lbWJlcm9mIHVpU3RhdGVVcGRhdGVyc1xuICogQHBhcmFtIHN0YXRlIGB1aVN0YXRlYFxuICogQHBhcmFtIGFjdGlvblxuICogQHBhcmFtIGFjdGlvbi5wYXlsb2FkXG4gKiBAcGFyYW0gYWN0aW9uLnBheWxvYWQubG9jYWxlIGxvY2FsZVxuICogQHJldHVybnMgbmV4dFN0YXRlXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBzZXRMb2NhbGVVcGRhdGVyID0gKFxuICBzdGF0ZTogVWlTdGF0ZSxcbiAge3BheWxvYWQ6IHtsb2NhbGV9fTogVUlTdGF0ZUFjdGlvbnMuU2V0TG9jYWxlVXBkYXRlckFjdGlvblxuKTogVWlTdGF0ZSA9PiAoe1xuICAuLi5zdGF0ZSxcbiAgbG9jYWxlXG59KTtcblxuLyoqXG4gKiBTZXQgdGhlIHRoZW1lIG9mIHRoZSBVSVxuICogQG1lbWJlcm9mIHVpU3RhdGVVcGRhdGVyc1xuICogQHBhcmFtIHN0YXRlIGB1aVN0YXRlYFxuICogQHBhcmFtIGFjdGlvblxuICogQHBhcmFtIGFjdGlvbi5wYXlsb2FkXG4gKiBAcGFyYW0gYWN0aW9uLnBheWxvYWQudGhlbWUgdGhlbWVcbiAqIEByZXR1cm5zIG5leHRTdGF0ZVxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3Qgc2V0VGhlbWVVcGRhdGVyID0gKFxuICBzdGF0ZTogVWlTdGF0ZSxcbiAge3BheWxvYWQ6IHt0aGVtZX19OiBVSVN0YXRlQWN0aW9ucy5TZXRUaGVtZVVwZGF0ZXJBY3Rpb25cbik6IFVpU3RhdGUgPT4gKHtcbiAgLi4uc3RhdGUsXG4gIHRoZW1lXG59KTtcblxuLyoqXG4gKiBUb2dnbGUgbGF5ZXIgcGFuZWwgbGlzdCB2aWV3XG4gKiBAbWVtYmVyb2YgdWlTdGF0ZVVwZGF0ZXJzXG4gKiBAcGFyYW0gc3RhdGUgYHVpU3RhdGVgXG4gKiBAcGFyYW0gYWN0aW9uXG4gKiBAcGFyYW0gYWN0aW9uLnBheWxvYWQgbGF5ZXIgcGFuZWwgbGlzdFZpZXcgdmFsdWUuIENhbiBiZSAnbGlzdCcgb3IgJ3NvcnRCeURhdGFzZXQnXG4gKiBAcmV0dXJucyBuZXh0U3RhdGVcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IHRvZ2dsZVBhbmVsTGlzdFZpZXdVcGRhdGVyID0gKFxuICBzdGF0ZTogVWlTdGF0ZSxcbiAge3BheWxvYWQ6IHtwYW5lbElkLCBsaXN0Vmlld319OiBVSVN0YXRlQWN0aW9ucy5Ub2dnbGVQYW5lbExpc3RWaWV3QWN0aW9uXG4pOiBVaVN0YXRlID0+IHtcbiAgY29uc3Qgc3RhdGVQcm9wID1cbiAgICBwYW5lbElkID09PSAnbGF5ZXInXG4gICAgICA/ICdsYXllclBhbmVsTGlzdFZpZXcnXG4gICAgICA6IHBhbmVsSWQgPT09ICdmaWx0ZXInXG4gICAgICA/ICdmaWx0ZXJQYW5lbExpc3RWaWV3J1xuICAgICAgOiBudWxsO1xuICBpZiAoIXN0YXRlUHJvcCB8fCBzdGF0ZVtzdGF0ZVByb3BdID09PSBsaXN0Vmlldykge1xuICAgIHJldHVybiBzdGF0ZTtcbiAgfVxuICByZXR1cm4ge1xuICAgIC4uLnN0YXRlLFxuICAgIFtzdGF0ZVByb3BdOiBsaXN0Vmlld1xuICB9O1xufTtcblxuLyoqXG4gKiBNZXJnZSByZWNlaXZlZCB1aSBzdGF0ZSBjb25maWcgd2hlbiBsb2FkaW5nIGEgc2F2ZWQgbWFwXG4gKiBAbWVtYmVyb2YgdWlTdGF0ZVVwZGF0ZXJzXG4gKiBAcGFyYW0gc3RhdGUgYHVpU3RhdGVgXG4gKiBAcGFyYW0gYWN0aW9uXG4gKiBAcGFyYW0gYWN0aW9uLnBheWxvYWQgc2F2ZWQgbWFwIGNvbmZpZyBge21hcFN0eWxlLCB2aXNTdGF0ZSwgbWFwU3RhdGUsIHVpU3RhdGV9YFxuICogQHJldHVybnMgbmV4dFN0YXRlXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCByZWNlaXZlTWFwQ29uZmlnVXBkYXRlciA9IChcbiAgc3RhdGU6IFVpU3RhdGUsXG4gIHtcbiAgICBwYXlsb2FkOiB7Y29uZmlnfVxuICB9OiB7XG4gICAgdHlwZT86ICh0eXBlb2YgQWN0aW9uVHlwZXMpWydSRUNFSVZFX01BUF9DT05GSUcnXTtcbiAgICBwYXlsb2FkOiBSZWNlaXZlTWFwQ29uZmlnUGF5bG9hZDtcbiAgfVxuKTogVWlTdGF0ZSA9PiB7XG4gIGNvbnN0IHt1aVN0YXRlfSA9IGNvbmZpZyB8fCB7fTtcbiAgaWYgKCF1aVN0YXRlKSB7XG4gICAgcmV0dXJuIHN0YXRlO1xuICB9XG5cbiAgbGV0IG5ld1N0YXRlID0gc3RhdGU7XG5cbiAgaWYgKHVpU3RhdGUubWFwQ29udHJvbHM/Lm1hcExlZ2VuZD8uYWN0aXZlKSB7XG4gICAgY29uc3QgY3VycmVudExlZ2VuZCA9IG5ld1N0YXRlLm1hcENvbnRyb2xzLm1hcExlZ2VuZDtcbiAgICBuZXdTdGF0ZSA9IHtcbiAgICAgIC4uLm5ld1N0YXRlLFxuICAgICAgbWFwQ29udHJvbHM6IHtcbiAgICAgICAgLi4ubmV3U3RhdGUubWFwQ29udHJvbHMsXG4gICAgICAgIG1hcExlZ2VuZDoge1xuICAgICAgICAgIHNob3c6IHRydWUsXG4gICAgICAgICAgLi4uY3VycmVudExlZ2VuZCxcbiAgICAgICAgICBhY3RpdmU6IHRydWUsXG4gICAgICAgICAgYWN0aXZlTWFwSW5kZXg6IDBcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH07XG4gIH1cblxuICBpZiAodWlTdGF0ZS5tYXBDb250cm9scz8uY2hhcnQ/LmFjdGl2ZSkge1xuICAgIGNvbnN0IGN1cnJlbnRDaGFydCA9IG5ld1N0YXRlLm1hcENvbnRyb2xzLmNoYXJ0O1xuICAgIG5ld1N0YXRlID0ge1xuICAgICAgLi4ubmV3U3RhdGUsXG4gICAgICBtYXBDb250cm9sczoge1xuICAgICAgICAuLi5uZXdTdGF0ZS5tYXBDb250cm9scyxcbiAgICAgICAgY2hhcnQ6IHtcbiAgICAgICAgICBzaG93OiB0cnVlLFxuICAgICAgICAgIC4uLmN1cnJlbnRDaGFydCxcbiAgICAgICAgICBhY3RpdmU6IHRydWUsXG4gICAgICAgICAgYWN0aXZlTWFwSW5kZXg6IDBcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH07XG4gIH1cblxuICBpZiAodWlTdGF0ZS5tYXBDb250cm9scz8ubWFwTGVnZW5kPy5zZXR0aW5ncykge1xuICAgIG5ld1N0YXRlID0gc2V0TWFwQ29udHJvbFNldHRpbmdzVXBkYXRlcihuZXdTdGF0ZSwge1xuICAgICAgcGF5bG9hZDoge3BhbmVsSWQ6ICdtYXBMZWdlbmQnLCBzZXR0aW5nczogdWlTdGF0ZS5tYXBDb250cm9scy5tYXBMZWdlbmQuc2V0dGluZ3N9XG4gICAgfSBhcyBVSVN0YXRlQWN0aW9ucy5zZXRNYXBDb250cm9sU2V0dGluZ3NVcGRhdGVyQWN0aW9uKTtcbiAgfVxuXG4gIGlmICh1aVN0YXRlLmxvY2FsZSkge1xuICAgIG5ld1N0YXRlID0gc2V0TG9jYWxlVXBkYXRlcihuZXdTdGF0ZSwge1xuICAgICAgcGF5bG9hZDoge2xvY2FsZTogdWlTdGF0ZS5sb2NhbGV9XG4gICAgfSBhcyBVSVN0YXRlQWN0aW9ucy5TZXRMb2NhbGVVcGRhdGVyQWN0aW9uKTtcbiAgfVxuXG4gIGlmICh1aVN0YXRlLnRoZW1lKSB7XG4gICAgbmV3U3RhdGUgPSBzZXRUaGVtZVVwZGF0ZXIobmV3U3RhdGUsIHtcbiAgICAgIHBheWxvYWQ6IHt0aGVtZTogdWlTdGF0ZS50aGVtZX1cbiAgICB9IGFzIFVJU3RhdGVBY3Rpb25zLlNldFRoZW1lVXBkYXRlckFjdGlvbik7XG4gIH1cblxuICByZXR1cm4gbmV3U3RhdGU7XG59O1xuIl0sIm1hcHBpbmdzIjoiOzs7O0FBQUE7QUFDQTs7QUFFQSxTQUNFQSxXQUFXLEVBQ1hDLGFBQWEsRUFDYkMsMkJBQTJCLEVBQzNCQyxjQUFjLEVBQ2RDLGdCQUFnQixFQUNoQkMscUJBQXFCLEVBQ3JCQyxpQkFBaUIsRUFDakJDLGtCQUFrQixFQUNsQkMsV0FBVyxFQUNYQyxZQUFZLEVBQ1pDLEtBQUssUUFDQSxzQkFBc0I7QUFDN0IsU0FBUUMsWUFBWSxRQUFPLHlCQUF5QjtBQUNwRCxTQUNFQyxrQkFBa0IsRUFDbEJDLGlCQUFpQixFQUNqQkMsd0JBQXdCLEVBQ3hCQyxvQkFBb0IsRUFDcEJDLG1CQUFtQixFQUNuQkMsaUJBQWlCLFFBQ1osa0JBQWtCO0FBQ3pCLFNBQVFDLFFBQVEsRUFBRUMsTUFBTSxFQUFFQyxRQUFRLFFBQU8sb0JBQW9CO0FBc0I3RCxPQUFPLElBQU1DLHlCQUF5QixHQUFHLE9BQU87QUFDaEQsT0FBTyxJQUFNQyxhQUFhLEdBQUd0QixXQUFXOztBQUV4QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7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
1044
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJBRERfREFUQV9JRCIsIkRBVEFfVEFCTEVfSUQiLCJERUZBVUxUX05PVElGSUNBVElPTl9UT1BJQ1MiLCJERUxFVEVfREFUQV9JRCIsIkVYUE9SVF9EQVRBX1RZUEUiLCJFWFBPUlRfSFRNTF9NQVBfTU9ERVMiLCJFWFBPUlRfSU1HX1JBVElPUyIsIkVYUE9SVF9NQVBfRk9STUFUUyIsIlJFU09MVVRJT05TIiwiTUFQX0NPTlRST0xTIiwiVEhFTUUiLCJMT0NBTEVfQ09ERVMiLCJjcmVhdGVOb3RpZmljYXRpb24iLCJlcnJvck5vdGlmaWNhdGlvbiIsImNhbGN1bGF0ZUV4cG9ydEltYWdlU2l6ZSIsImdldEFwcGxpY2F0aW9uQ29uZmlnIiwiZ2V0Q29uZmlndXJlZFRoZW1lcyIsImdldERlZmF1bHRVaVRoZW1lIiwicGF5bG9hZF8iLCJhcHBseV8iLCJjb21wb3NlXyIsIkRFRkFVTFRfQUNUSVZFX1NJREVfUEFORUwiLCJERUZBVUxUX01PREFMIiwidWlTdGF0ZVVwZGF0ZXJzIiwiREVGQVVMVF9NQVBfQ09OVFJPTFNfRkVBVFVSRVMiLCJzaG93IiwiYWN0aXZlIiwiZGlzYWJsZUNsb3NlIiwiYWN0aXZlTWFwSW5kZXgiLCJERUZBVUxUX01BUF9MRUdFTkRfQ09OVFJPTCIsIl9vYmplY3RTcHJlYWQiLCJkaXNhYmxlRWRpdCIsIkRFRkFVTFRfTUFQX0NPTlRST0xTIiwiT2JqZWN0Iiwia2V5cyIsInJlZHVjZSIsImZpbmFsIiwiY3VycmVudCIsIl9kZWZpbmVQcm9wZXJ0eSIsIm1hcExlZ2VuZCIsIm1hcEluZm8iLCJERUZBVUxUX0VYUE9SVF9JTUFHRSIsInJhdGlvIiwiU0NSRUVOIiwicmVzb2x1dGlvbiIsIk9ORV9YIiwibGVnZW5kIiwiY2hhcnRzIiwidHJhbnNwYXJlbnRCYWNrZ3JvdW5kIiwibWFwSCIsIm1hcFciLCJpbWFnZVNpemUiLCJ6b29tT2Zmc2V0Iiwic2NhbGUiLCJpbWFnZVciLCJpbWFnZUgiLCJjZW50ZXIiLCJpbWFnZURhdGFVcmkiLCJleHBvcnRpbmciLCJwcm9jZXNzaW5nIiwiZXJyb3IiLCJlc2NhcGVYaHRtbEZvcldlYnBhY2siLCJmaWxlTmFtZSIsIkRFRkFVTFRfTE9BRF9GSUxFUyIsImZpbGVMb2FkaW5nIiwiREVGQVVMVF9FWFBPUlRfREFUQSIsInNlbGVjdGVkRGF0YXNldCIsImRhdGFUeXBlIiwiQ1NWIiwiZmlsdGVyZWQiLCJERUZBVUxUX05PVElGSUNBVElPTlMiLCJERUZBVUxUX0VYUE9SVF9IVE1MIiwiZXhwb3J0TWFwYm94QWNjZXNzVG9rZW4iLCJ1c2VyTWFwYm94VG9rZW4iLCJtb2RlIiwiUkVBRCIsIkRFRkFVTFRfRVhQT1JUX0pTT04iLCJoYXNEYXRhIiwiREVGQVVMVF9FWFBPUlRfTUFQIiwiSFRNTCIsIkpTT04iLCJERUZBVUxUX0VYUE9SVF9WSURFTyIsIm1lZGlhVHlwZSIsImNhbWVyYVByZXNldCIsImR1cmF0aW9uTXMiLCJzd2lwZVN0YXJ0UGN0Iiwic3dpcGVFbmRQY3QiLCJzd2lwZUVhc2luZyIsIklOSVRJQUxfVUlfU1RBVEUiLCJyZWFkT25seSIsImFjdGl2ZVNpZGVQYW5lbCIsImN1cnJlbnRNb2RhbCIsImRhdGFzZXRLZXlUb1JlbW92ZSIsImRhdGFzZXRUb1JlcGxhY2VJZCIsInZpc2libGVEcm9wZG93biIsImV4cG9ydEltYWdlIiwiZXhwb3J0RGF0YSIsImV4cG9ydE1hcCIsImV4cG9ydFZpZGVvIiwibWFwQ29udHJvbHMiLCJub3RpZmljYXRpb25zIiwibG9hZEZpbGVzIiwibG9jYWxlIiwiZW4iLCJ0aGVtZSIsImRhcmsiLCJsYXllclBhbmVsTGlzdFZpZXciLCJmaWx0ZXJQYW5lbExpc3RWaWV3IiwiaXNTaWRlUGFuZWxDbG9zZUJ1dHRvblZpc2libGUiLCJpbml0VWlTdGF0ZVVwZGF0ZXIiLCJzdGF0ZSIsImFjdGlvbiIsIl9pbml0aWFsVWlTdGF0ZSR0aGVtZSIsImluaXRpYWxVaVN0YXRlIiwicGF5bG9hZCIsInRoZW1lcyIsInJlcXVlc3RlZCIsImxlbmd0aCIsImluY2x1ZGVzIiwidG9nZ2xlU2lkZVBhbmVsVXBkYXRlciIsIl9yZWYiLCJpZCIsInRvZ2dsZU1vZGFsVXBkYXRlciIsIl9yZWYyIiwic2hvd0V4cG9ydERyb3Bkb3duVXBkYXRlciIsIl9yZWYzIiwiaGlkZUV4cG9ydERyb3Bkb3duVXBkYXRlciIsInRvZ2dsZVNpZGVQYW5lbENsb3NlQnV0dG9uVXBkYXRlciIsIl9yZWY0IiwiTVVUVUFMTFlfRVhDTFVTSVZFX01BUF9DT05UUk9MUyIsInNwbGl0TWFwIiwidG9nZ2xlM2QiLCJtYXBEcmF3IiwibWFwTG9jYWxlIiwidG9nZ2xlTWFwQ29udHJvbFVwZGF0ZXIiLCJfcmVmNSIsIl91cGRhdGVkU3RhdGUkbWFwQ29udCIsIl91cGRhdGVkU3RhdGUkbWFwQ29udDIiLCJfcmVmNSRwYXlsb2FkIiwicGFuZWxJZCIsIl9yZWY1JHBheWxvYWQkaW5kZXgiLCJpbmRleCIsInVwZGF0ZWRTdGF0ZSIsImlzT3BlbmluZyIsIm5leHRNYXBDb250cm9scyIsImRpZERlYWN0aXZhdGUiLCJmb3JFYWNoIiwiY29udHJvbElkIiwiX25leHRNYXBDb250cm9scyRjb250Iiwic2V0TWFwQ29udHJvbFZpc2liaWxpdHlVcGRhdGVyIiwiX3JlZjYiLCJfc3RhdGUkbWFwQ29udHJvbHMiLCJfcmVmNiRwYXlsb2FkIiwiQm9vbGVhbiIsInNldE1hcENvbnRyb2xTZXR0aW5nc1VwZGF0ZXIiLCJfcmVmNyIsIl9zdGF0ZSRtYXBDb250cm9sczIiLCJfcmVmNyRwYXlsb2FkIiwic2V0dGluZ3MiLCJtYXBDb250cm9sIiwib3BlbkRlbGV0ZU1vZGFsVXBkYXRlciIsIl9yZWY4Iiwib3BlblJlcGxhY2VEYXRhc2V0TW9kYWxVcGRhdGVyIiwiX3JlZjkiLCJzZXRFeHBvcnRJbWFnZVNldHRpbmdVcGRhdGVyIiwiX3JlZjAiLCJuZXdTZXR0aW5nIiwidXBkYXRlZCIsInNldEV4cG9ydEltYWdlRGF0YVVyaVVwZGF0ZXIiLCJfcmVmMSIsImRhdGFVcmkiLCJzZXRFeHBvcnRJbWFnZUVycm9yVXBkYXRlciIsIl9yZWYxMCIsImNsZWFudXBFeHBvcnRJbWFnZVVwZGF0ZXIiLCJzZXRFeHBvcnRWaWRlb1NldHRpbmdVcGRhdGVyIiwiX3JlZjExIiwic3RhcnRFeHBvcnRpbmdJbWFnZVVwZGF0ZXIiLCJfcmVmMTIiLCJfcmVmMTIkcGF5bG9hZCIsIm9wdGlvbnMiLCJpbWFnZVNldHRpbmdzIiwic2V0RXhwb3J0U2VsZWN0ZWREYXRhc2V0VXBkYXRlciIsIl9yZWYxMyIsImRhdGFzZXQiLCJzZXRFeHBvcnREYXRhVHlwZVVwZGF0ZXIiLCJfcmVmMTQiLCJzZXRFeHBvcnRGaWx0ZXJlZFVwZGF0ZXIiLCJfcmVmMTUiLCJzZXRFeHBvcnREYXRhVXBkYXRlciIsInNldFVzZXJNYXBib3hBY2Nlc3NUb2tlblVwZGF0ZXIiLCJfcmVmMTYiLCJzZXRFeHBvcnRNYXBGb3JtYXRVcGRhdGVyIiwiX3JlZjE3IiwiZm9ybWF0Iiwic2V0RXhwb3J0TWFwRmlsZU5hbWVVcGRhdGVyIiwiX3JlZjE4Iiwic2V0RXhwb3J0TWFwSFRNTE1vZGVVcGRhdGVyIiwiX3JlZjE5Iiwic2V0RXhwb3J0TWFwQnJhbmRpbmdVcGRhdGVyIiwiX3JlZjIwIiwic2V0RXhwb3J0SW5jbHVkZUxheWVyQXBpS2V5c1VwZGF0ZXIiLCJfcmVmMjEiLCJpbmNsdWRlTGF5ZXJBcGlLZXlzIiwiYWRkTm90aWZpY2F0aW9uVXBkYXRlciIsIl9yZWYyMiIsIm9sZE5vdGlmaWNhdGlvbnMiLCJwYXlsb2FkSWQiLCJub3RpZmljYXRpb25Ub1VwZGF0ZSIsImZpbmQiLCJuIiwibWFwIiwiY291bnQiLCJjb25jYXQiLCJfdG9Db25zdW1hYmxlQXJyYXkiLCJyZW1vdmVOb3RpZmljYXRpb25VcGRhdGVyIiwiX3JlZjIzIiwiZmlsdGVyIiwibG9hZEZpbGVzVXBkYXRlciIsImxvYWRGaWxlc1N1Y2Nlc3NVcGRhdGVyIiwibG9hZEZpbGVzRXJyVXBkYXRlciIsIl9yZWYyNCIsIm1lc3NhZ2UiLCJ0b3BpYyIsImdsb2JhbCIsInRvZ2dsZVNwbGl0TWFwVXBkYXRlciIsImVudHJpZXMiLCJhY2MiLCJlbnRyeSIsInNob3dEYXRhc2V0VGFibGVVcGRhdGVyIiwic2V0TG9jYWxlVXBkYXRlciIsIl9yZWYyNSIsInNldFRoZW1lVXBkYXRlciIsIl9yZWYyNiIsInRvZ2dsZVBhbmVsTGlzdFZpZXdVcGRhdGVyIiwiX3JlZjI3IiwiX3JlZjI3JHBheWxvYWQiLCJsaXN0VmlldyIsInN0YXRlUHJvcCIsInJlY2VpdmVNYXBDb25maWdVcGRhdGVyIiwiX3JlZjI4IiwiX3VpU3RhdGUkbWFwQ29udHJvbHMiLCJfdWlTdGF0ZSRtYXBDb250cm9sczIiLCJfdWlTdGF0ZSRtYXBDb250cm9sczMiLCJfdWlTdGF0ZSRtYXBDb250cm9sczQiLCJjb25maWciLCJfcmVmMjkiLCJ1aVN0YXRlIiwibmV3U3RhdGUiLCJjdXJyZW50TGVnZW5kIiwiY2hhcnQiLCJjdXJyZW50Q2hhcnQiLCJzYXZlZE1hcEluZm8iLCJzYXZlZE1hcEluZm9BY3RpdmUiLCJzYXZlZE1hcEluZm9TaG93IiwiY3VycmVudE1hcEluZm8iXSwic291cmNlcyI6WyIuLi8uLi9zcmMvdWktc3RhdGUtdXBkYXRlcnMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVFxuLy8gQ29weXJpZ2h0IGNvbnRyaWJ1dG9ycyB0byB0aGUga2VwbGVyLmdsIHByb2plY3RcblxuaW1wb3J0IHtcbiAgQUREX0RBVEFfSUQsXG4gIERBVEFfVEFCTEVfSUQsXG4gIERFRkFVTFRfTk9USUZJQ0FUSU9OX1RPUElDUyxcbiAgREVMRVRFX0RBVEFfSUQsXG4gIEVYUE9SVF9EQVRBX1RZUEUsXG4gIEVYUE9SVF9IVE1MX01BUF9NT0RFUyxcbiAgRVhQT1JUX0lNR19SQVRJT1MsXG4gIEVYUE9SVF9NQVBfRk9STUFUUyxcbiAgUkVTT0xVVElPTlMsXG4gIE1BUF9DT05UUk9MUyxcbiAgVEhFTUVcbn0gZnJvbSAnQGtlcGxlci5nbC9jb25zdGFudHMnO1xuaW1wb3J0IHtMT0NBTEVfQ09ERVN9IGZyb20gJ0BrZXBsZXIuZ2wvbG9jYWxpemF0aW9uJztcbmltcG9ydCB7XG4gIGNyZWF0ZU5vdGlmaWNhdGlvbixcbiAgZXJyb3JOb3RpZmljYXRpb24sXG4gIGNhbGN1bGF0ZUV4cG9ydEltYWdlU2l6ZSxcbiAgZ2V0QXBwbGljYXRpb25Db25maWcsXG4gIGdldENvbmZpZ3VyZWRUaGVtZXMsXG4gIGdldERlZmF1bHRVaVRoZW1lXG59IGZyb20gJ0BrZXBsZXIuZ2wvdXRpbHMnO1xuaW1wb3J0IHtwYXlsb2FkXywgYXBwbHlfLCBjb21wb3NlX30gZnJvbSAnLi9jb21wb3Nlci1oZWxwZXJzJztcblxuaW1wb3J0IHtcbiAgQWN0aW9uVHlwZXMsXG4gIEtlcGxlckdsSW5pdFBheWxvYWQsXG4gIExvYWRGaWxlc0VyclVwZGF0ZXJBY3Rpb24sXG4gIFJlY2VpdmVNYXBDb25maWdQYXlsb2FkLFxuICBVSVN0YXRlQWN0aW9uc1xufSBmcm9tICdAa2VwbGVyLmdsL2FjdGlvbnMnO1xuaW1wb3J0IHtcbiAgRXhwb3J0RGF0YSxcbiAgRXhwb3J0SHRtbCxcbiAgRXhwb3J0SnNvbixcbiAgRXhwb3J0TWFwLFxuICBFeHBvcnRJbWFnZSxcbiAgRXhwb3J0VmlkZW8sXG4gIE1hcENvbnRyb2xJdGVtLFxuICBNYXBDb250cm9sTWFwTGVnZW5kLFxuICBNYXBDb250cm9scyxcbiAgVWlTdGF0ZVxufSBmcm9tICdAa2VwbGVyLmdsL3R5cGVzJztcblxuZXhwb3J0IGNvbnN0IERFRkFVTFRfQUNUSVZFX1NJREVfUEFORUwgPSAnbGF5ZXInO1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfTU9EQUwgPSBBRERfREFUQV9JRDtcblxuLyoqXG4gKiBVcGRhdGVycyBmb3IgYHVpU3RhdGVgIHJlZHVjZXIuIENhbiBiZSB1c2VkIGluIHlvdXIgcm9vdCByZWR1Y2VyIHRvIGRpcmVjdGx5IG1vZGlmeSBrZXBsZXIuZ2wncyBzdGF0ZS5cbiAqIFJlYWQgbW9yZSBhYm91dCBbVXNpbmcgdXBkYXRlcnNdKC4uL2FkdmFuY2VkLXVzYWdlL3VzaW5nLXVwZGF0ZXJzLm1kKVxuICpcbiAqIEBwdWJsaWNcbiAqIEBleGFtcGxlXG4gKlxuICogaW1wb3J0IGtlcGxlckdsUmVkdWNlciwge3VpU3RhdGVVcGRhdGVyc30gZnJvbSAnQGtlcGxlci5nbC9yZWR1Y2Vycyc7XG4gKiAvLyBSb290IFJlZHVjZXJcbiAqIGNvbnN0IHJlZHVjZXJzID0gY29tYmluZVJlZHVjZXJzKHtcbiAqICBrZXBsZXJHbDoga2VwbGVyR2xSZWR1Y2VyLFxuICogIGFwcDogYXBwUmVkdWNlclxuICogfSk7XG4gKlxuICogY29uc3QgY29tcG9zZWRSZWR1Y2VyID0gKHN0YXRlLCBhY3Rpb24pID0+IHtcbiAqICBzd2l0Y2ggKGFjdGlvbi50eXBlKSB7XG4gKiAgICAvLyBjbGljayBidXR0b24gdG8gY2xvc2Ugc2lkZSBwYW5lbFxuICogICAgY2FzZSAnQ0xJQ0tfQlVUVE9OJzpcbiAqICAgICAgcmV0dXJuIHtcbiAqICAgICAgICAuLi5zdGF0ZSxcbiAqICAgICAgICBrZXBsZXJHbDoge1xuICogICAgICAgICAgLi4uc3RhdGUua2VwbGVyR2wsXG4gKiAgICAgICAgICBmb286IHtcbiAqICAgICAgICAgICAgIC4uLnN0YXRlLmtlcGxlckdsLmZvbyxcbiAqICAgICAgICAgICAgIHVpU3RhdGU6IHVpU3RhdGVVcGRhdGVycy50b2dnbGVTaWRlUGFuZWxVcGRhdGVyKFxuICogICAgICAgICAgICAgICB1aVN0YXRlLCB7cGF5bG9hZDogbnVsbH1cbiAqICAgICAgICAgICAgIClcbiAqICAgICAgICAgIH1cbiAqICAgICAgICB9XG4gKiAgICAgIH07XG4gKiAgfVxuICogIHJldHVybiByZWR1Y2VycyhzdGF0ZSwgYWN0aW9uKTtcbiAqIH07XG4gKlxuICogZXhwb3J0IGRlZmF1bHQgY29tcG9zZWRSZWR1Y2VyO1xuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnMgKi9cbi8vIEB0cy1pZ25vcmVcbmNvbnN0IHVpU3RhdGVVcGRhdGVycyA9IG51bGw7XG4vKiBlc2xpbnQtZW5hYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFycyAqL1xuXG5jb25zdCBERUZBVUxUX01BUF9DT05UUk9MU19GRUFUVVJFUzogTWFwQ29udHJvbEl0ZW0gPSB7XG4gIHNob3c6IHRydWUsXG4gIGFjdGl2ZTogZmFsc2UsXG4gIGRpc2FibGVDbG9zZTogZmFsc2UsXG4gIC8vIGRlZmluZXMgd2hpY2ggbWFwIGluZGV4IHVzZXJzIGFyZSBpbnRlcmFjdGluZyB3aXRoICh0aHJvdWdoIG1hcCBjb250cm9scylcbiAgYWN0aXZlTWFwSW5kZXg6IDBcbn07XG5cbmNvbnN0IERFRkFVTFRfTUFQX0xFR0VORF9DT05UUk9MID0ge1xuICAuLi5ERUZBVUxUX01BUF9DT05UUk9MU19GRUFUVVJFUyxcbiAgZGlzYWJsZUVkaXQ6IGZhbHNlXG59O1xuLyoqXG4gKiBBIGxpc3Qgb2YgbWFwIGNvbnRyb2wgdmlzaWJpbGl0eSBhbmQgd2hldGhlciBpcyBpdCBhY3RpdmUuXG4gKiBAbWVtYmVyb2YgdWlTdGF0ZVVwZGF0ZXJzXG4gKiBAY29uc3RhbnRcbiAqIEBwcm9wZXJ0eSB2aXNpYmxlTGF5ZXJzIERlZmF1bHQ6IGB7c2hvdzogdHJ1ZSwgYWN0aXZlOiBmYWxzZX1gXG4gKiBAcHJvcGVydHkgbWFwTGVnZW5kIERlZmF1bHQ6IGB7c2hvdzogdHJ1ZSwgYWN0aXZlOiBmYWxzZX1gXG4gKiBAcHJvcGVydHkgdG9nZ2xlM2QgRGVmYXVsdDogYHtzaG93OiB0cnVlfWBcbiAqIEBwcm9wZXJ0eSBzcGxpdE1hcCBEZWZhdWx0OiBge3Nob3c6IHRydWV9YFxuICogQHByb3BlcnR5IG1hcERyYXcgRGVmYXVsdDogYHtzaG93OiB0cnVlLCBhY3RpdmU6IGZhbHNlfWBcbiAqIEBwcm9wZXJ0eSBtYXBMb2NhbGUgRGVmYXVsdDogYHtzaG93OiB0cnVlLCBhY3RpdmU6IGZhbHNlfWBcbiAqIEBwcm9wZXJ0eSBtYXBUaGVtZSBEZWZhdWx0OiBge3Nob3c6IHRydWUsIGFjdGl2ZTogZmFsc2V9YFxuICogQHByb3BlcnR5IHZpZXdwb3J0SnNvbiBEZWZhdWx0OiBge3Nob3c6IHRydWUsIGFjdGl2ZTogZmFsc2V9YFxuICogQHByb3BlcnR5IG1hcEluZm8gRGVmYXVsdDogYHtzaG93OiB0cnVlLCBhY3RpdmU6IHRydWV9YC4gYHNob3dgIGhpZGVzIHRoZSBvbi1tYXAgbmFtZSBhbmQgZGVzY3JpcHRpb24uXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBERUZBVUxUX01BUF9DT05UUk9MUzogTWFwQ29udHJvbHMgPSB7XG4gIC4uLihPYmplY3Qua2V5cyhNQVBfQ09OVFJPTFMpIGFzIEFycmF5PGtleW9mIHR5cGVvZiBNQVBfQ09OVFJPTFM+KS5yZWR1Y2UoXG4gICAgKGZpbmFsLCBjdXJyZW50KSA9PiAoe1xuICAgICAgLi4uZmluYWwsXG4gICAgICBbY3VycmVudF06XG4gICAgICAgIGN1cnJlbnQgPT09IE1BUF9DT05UUk9MUy5tYXBMZWdlbmRcbiAgICAgICAgICA/IERFRkFVTFRfTUFQX0xFR0VORF9DT05UUk9MXG4gICAgICAgICAgOiBERUZBVUxUX01BUF9DT05UUk9MU19GRUFUVVJFU1xuICAgIH0pLFxuICAgIHt9IGFzIE1hcENvbnRyb2xzXG4gICksXG4gIC8vIE9wZW4gYnkgZGVmYXVsdCBzbyBhIHNhdmVkIHRpdGxlIHNob3dzIG9uIGxvYWQuIEFuIGVtcHR5IG1hcCBzdGlsbCBoaWRlcyB0aGUgY2FyZC5cbiAgbWFwSW5mbzoge1xuICAgIC4uLkRFRkFVTFRfTUFQX0NPTlRST0xTX0ZFQVRVUkVTLFxuICAgIGFjdGl2ZTogdHJ1ZVxuICB9XG59O1xuXG4vKipcbiAqIERlZmF1bHQgaW1hZ2UgZXhwb3J0IGNvbmZpZ1xuICogQG1lbWJlcm9mIHVpU3RhdGVVcGRhdGVyc1xuICogQGNvbnN0YW50XG4gKiBAcHJvcGVydHkgcmF0aW8gRGVmYXVsdDogYCdTQ1JFRU4nYCxcbiAqIEBwcm9wZXJ0eSByZXNvbHV0aW9uIERlZmF1bHQ6IGAnT05FX1gnYCxcbiAqIEBwcm9wZXJ0eSBsZWdlbmQgRGVmYXVsdDogYGZhbHNlYCxcbiAqIEBwcm9wZXJ0eSBjaGFydHMgRGVmYXVsdDogYGZhbHNlYCxcbiAqIEBwcm9wZXJ0eSB0cmFuc3BhcmVudEJhY2tncm91bmQgRGVmYXVsdDogYGZhbHNlYCxcbiAqIEBwcm9wZXJ0eSBtYXBIIERlZmF1bHQ6IDAsXG4gKiBAcHJvcGVydHkgbWFwVyBEZWZhdWx0OiAwLFxuICogQHByb3BlcnR5IGltYWdlU2l6ZSBEZWZhdWx0OiB7em9vbU9mZnNldDogMCwgc2NhbGU6IDEsIGltYWdlVzogMCwgaW1hZ2VIOiAwfSxcbiAqIEBwcm9wZXJ0eSBpbWFnZURhdGFVcmkgRGVmYXVsdDogYCcnYCxcbiAqIEBwcm9wZXJ0eSBleHBvcnRpbmcgRGVmYXVsdDogYGZhbHNlYFxuICogQHByb3BlcnR5IGVycm9yIERlZmF1bHQ6IGBmYWxzZWBcbiAqIEBwcm9wZXJ0eSBlc2NhcGVYaHRtbEZvcldlYnBhY2sgRGVmYXVsdDogZnJvbSBhcHBsaWNhdGlvbiBjb25maWcgKGF1dG8tZGV0ZWN0ZWQ6IGB0cnVlYCBmb3Igd2VicGFjaylcbiAqIEBwcm9wZXJ0eSBmaWxlTmFtZSBEZWZhdWx0OiBgJydgXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBERUZBVUxUX0VYUE9SVF9JTUFHRTogRXhwb3J0SW1hZ2UgPSB7XG4gIC8vIHVzZXIgb3B0aW9uc1xuICByYXRpbzogRVhQT1JUX0lNR19SQVRJT1MuU0NSRUVOLFxuICByZXNvbHV0aW9uOiBSRVNPTFVUSU9OUy5PTkVfWCxcbiAgbGVnZW5kOiBmYWxzZSxcbiAgY2hhcnRzOiBmYWxzZSxcbiAgdHJhbnNwYXJlbnRCYWNrZ3JvdW5kOiBmYWxzZSxcbiAgbWFwSDogMCxcbiAgbWFwVzogMCxcbiAgaW1hZ2VTaXplOiB7XG4gICAgem9vbU9mZnNldDogMCxcbiAgICBzY2FsZTogMSxcbiAgICBpbWFnZVc6IDAsXG4gICAgaW1hZ2VIOiAwXG4gIH0sXG4gIC8vIHdoZW4gdGhpcyBpcyBzZXQgdG8gdHJ1ZSwgdGhlIG1vY2sgbWFwIHZpZXdwb3J0IHdpbGwgbW92ZSB0byB0aGUgY2VudGVyIG9mIGRhdGFcbiAgY2VudGVyOiBmYWxzZSxcbiAgLy8gZXhwb3J0aW5nIHN0YXRlXG4gIGltYWdlRGF0YVVyaTogJycsXG4gIC8vIGV4cG9ydGluZzogdXNlZCB0byBhdHRhY2ggcGxvdC1jb250YWluZXIgdG8gZG9tXG4gIGV4cG9ydGluZzogZmFsc2UsXG4gIC8vIHByb2Nlc3Npbmc6IHVzZWQgYXMgbG9hZGluZyBpbmRpY2F0b3Igd2hlbiBleHBvcnQgaW1hZ2UgaXMgYmVpbmcgcHJvZHVjZWRcbiAgcHJvY2Vzc2luZzogZmFsc2UsXG4gIGVycm9yOiBmYWxzZSxcbiAgLy8gd2hldGhlciB0byBhcHBseSBmaXggZm9yIHVnbGlmeSBlcnJvciBpbiBkb20tdG8taW1hZ2UgKGZyb20gYXBwbGljYXRpb24gY29uZmlnLCBhdXRvLWRldGVjdHMgYnVpbGQgdG9vbClcbiAgZXNjYXBlWGh0bWxGb3JXZWJwYWNrOiBnZXRBcHBsaWNhdGlvbkNvbmZpZygpLmVzY2FwZVhodG1sRm9yV2VicGFjayxcbiAgZmlsZU5hbWU6ICcnXG59O1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9MT0FEX0ZJTEVTID0ge1xuICBmaWxlTG9hZGluZzogZmFsc2Vcbn07XG5cbi8qKlxuICogRGVmYXVsdCBpbml0aWFsIGBleHBvcnREYXRhYCBzZXR0aW5nc1xuICogQG1lbWJlcm9mIHVpU3RhdGVVcGRhdGVyc1xuICogQGNvbnN0YW50XG4gKiBAcHJvcGVydHkgc2VsZWN0ZWREYXRhc2V0IERlZmF1bHQ6IGAnJ2AsXG4gKiBAcHJvcGVydHkgZGF0YVR5cGUgRGVmYXVsdDogYCdjc3YnYCxcbiAqIEBwcm9wZXJ0eSBmaWx0ZXJlZCBEZWZhdWx0OiBgdHJ1ZWAsXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBERUZBVUxUX0VYUE9SVF9EQVRBOiBFeHBvcnREYXRhID0ge1xuICBzZWxlY3RlZERhdGFzZXQ6ICcnLFxuICBkYXRhVHlwZTogRVhQT1JUX0RBVEFfVFlQRS5DU1YsXG4gIGZpbHRlcmVkOiB0cnVlXG59O1xuXG4vKipcbiAqIEBjb25zdGFudFxuICovXG5leHBvcnQgY29uc3QgREVGQVVMVF9OT1RJRklDQVRJT05TID0gW107XG5cbi8qKlxuICogQGNvbnN0YW50XG4gKiBAcHJvcGVydHkgZXhwb3J0TWFwYm94QWNjZXNzVG9rZW4gLSBEZWZhdWx0OiBudWxsLCB0aGlzIGlzIHVzZWQgd2hlbiB3ZSBwcm92aWRlIGEgZGVmYXVsdCBtYXBib3ggdG9rZW4gZm9yIHVzZXJzIHRvIHRha2UgYWR2YW50YWdlIG9mXG4gKiBAcHJvcGVydHkgdXNlck1hcGJveFRva2VuIC0gRGVmYXVsdDogJycsIG1hcGJveCB0b2tlbiBwcm92aWRlZCBieSB1c2VyIHRocm91Z2ggaW5wdXQgZmllbGRcbiAqIEBwcm9wZXJ0eSBtb2RlIC0gRGVmYXVsdDogJ1JFQUQnLCByZWFkIG9ubHkgb3IgZWRpdGFibGVcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfRVhQT1JUX0hUTUw6IEV4cG9ydEh0bWwgPSB7XG4gIGV4cG9ydE1hcGJveEFjY2Vzc1Rva2VuOiBudWxsLFxuICB1c2VyTWFwYm94VG9rZW46ICcnLFxuICBtb2RlOiBFWFBPUlRfSFRNTF9NQVBfTU9ERVMuUkVBRFxufTtcblxuLyoqXG4gKiBAY29uc3RhbnRcbiAqIEBwcm9wZXJ0eSBoYXNEYXRhIC0gRGVmYXVsdDogJ3RydWUnLFxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgREVGQVVMVF9FWFBPUlRfSlNPTjogRXhwb3J0SnNvbiA9IHtcbiAgaGFzRGF0YTogdHJ1ZVxufTtcblxuLyoqXG4gKiBFeHBvcnQgTWFwIENvbmZpZ1xuICogQGNvbnN0YW50XG4gKiBAcHJvcGVydHkgSFRNTCAtIERlZmF1bHQ6ICdERUZBVUxUX0VYUE9SVF9IVE1MJyxcbiAqIEBwcm9wZXJ0eSBKU09OIC0gRGVmYXVsdDogJ0RFRkFVTFRfRVhQT1JUX0pTT04nLFxuICogQHByb3BlcnR5IGZvcm1hdCAtIERlZmF1bHQ6ICdIVE1MJyxcbiAqIEBwcm9wZXJ0eSBmaWxlTmFtZSBEZWZhdWx0OiBgJydgLFxuICogQHByb3BlcnR5IGluY2x1ZGVMYXllckFwaUtleXMgRGVmYXVsdDogYGZhbHNlYCxcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfRVhQT1JUX01BUDogRXhwb3J0TWFwID0ge1xuICBbRVhQT1JUX01BUF9GT1JNQVRTLkhUTUxdOiBERUZBVUxUX0VYUE9SVF9IVE1MLFxuICBbRVhQT1JUX01BUF9GT1JNQVRTLkpTT05dOiBERUZBVUxUX0VYUE9SVF9KU09OLFxuICBmb3JtYXQ6IEVYUE9SVF9NQVBfRk9STUFUUy5IVE1MLFxuICBmaWxlTmFtZTogJycsXG4gIC8vIFByaXZhdGUgbGF5ZXIgdG9rZW5zIHN0YXkgb3V0IG9mIHRoZSBmaWxlIHVubGVzcyB0aGUgdXNlciBvcHRzIGluLlxuICBpbmNsdWRlTGF5ZXJBcGlLZXlzOiBmYWxzZVxufTtcblxuLyoqXG4gKiBEZWZhdWx0IGluaXRpYWwgYGV4cG9ydFZpZGVvYCBzZXR0aW5nc1xuICogQG1lbWJlcm9mIHVpU3RhdGVVcGRhdGVyc1xuICogQGNvbnN0YW50XG4gKiBAcHJvcGVydHkgbWVkaWFUeXBlIERlZmF1bHQ6IGAnd2VibSdgXG4gKiBAcHJvcGVydHkgY2FtZXJhUHJlc2V0IERlZmF1bHQ6IGAnTm9uZSdgXG4gKiBAcHJvcGVydHkgZmlsZU5hbWUgRGVmYXVsdDogYCdrZXBsZXIuZ2wnYFxuICogQHByb3BlcnR5IHJlc29sdXRpb24gRGVmYXVsdDogYCcxMjgweDcyMCdgXG4gKiBAcHJvcGVydHkgZHVyYXRpb25NcyBEZWZhdWx0OiBgMTAwMGBcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfRVhQT1JUX1ZJREVPOiBFeHBvcnRWaWRlbyA9IHtcbiAgbWVkaWFUeXBlOiAnd2VibScsIC8vIHVzZSB3ZWJtIGFzIGRlZmF1bHQgYXMgZ2lmIGV4cG9ydCB0ZW5kcyB0byBmcmVlemUgb24gbGFyZ2VyIHJlY29yZGluZ3NcbiAgY2FtZXJhUHJlc2V0OiAnTm9uZScsXG4gIGZpbGVOYW1lOiAna2VwbGVyLmdsJyxcbiAgcmVzb2x1dGlvbjogJzEyODB4NzIwJyxcbiAgZHVyYXRpb25NczogMTAwMCxcbiAgc3dpcGVTdGFydFBjdDogMCxcbiAgc3dpcGVFbmRQY3Q6IDEwMCxcbiAgc3dpcGVFYXNpbmc6ICdlYXNlLWluLW91dCdcbn07XG5cbi8qKlxuICogRGVmYXVsdCBpbml0aWFsIGB1aVN0YXRlYFxuICogQG1lbWJlcm9mIHVpU3RhdGVVcGRhdGVyc1xuICogQGNvbnN0YW50XG4gKiBAcHJvcGVydHkgcmVhZE9ubHkgRGVmYXVsdDogYGZhbHNlYFxuICogQHByb3BlcnR5IGFjdGl2ZVNpZGVQYW5lbCBEZWZhdWx0OiBgJ2xheWVyJ2BcbiAqIEBwcm9wZXJ0eSBjdXJyZW50TW9kYWwgRGVmYXVsdDogYCdhZGREYXRhJ2BcbiAqIEBwcm9wZXJ0eSBkYXRhc2V0S2V5VG9SZW1vdmUgRGVmYXVsdDogYG51bGxgXG4gKiBAcHJvcGVydHkgZGF0YXNldFRvUmVwbGFjZUlkIERlZmF1bHQ6IGBudWxsYFxuICogQHByb3BlcnR5IHZpc2libGVEcm9wZG93biBEZWZhdWx0OiBgbnVsbGBcbiAqIEBwcm9wZXJ0eSBleHBvcnRJbWFnZSBEZWZhdWx0OiBbYERFRkFVTFRfRVhQT1JUX0lNQUdFYF0oI2RlZmF1bHRfZXhwb3J0X2ltYWdlKVxuICogQHByb3BlcnR5IGV4cG9ydERhdGEgRGVmYXVsdDogW2BERUZBVUxUX0VYUE9SVF9EQVRBYF0oI2RlZmF1bHRfZXhwb3J0X2RhdGEpXG4gKiBAcHJvcGVydHkgZXhwb3J0TWFwIERlZmF1bHQ6IFtgREVGQVVMVF9FWFBPUlRfTUFQYF0oI2RlZmF1bHRfZXhwb3J0X21hcClcbiAqIEBwcm9wZXJ0eSBtYXBDb250cm9scyBEZWZhdWx0OiBbYERFRkFVTFRfTUFQX0NPTlRST0xTYF0oI2RlZmF1bHRfbWFwX2NvbnRyb2xzKVxuICogQHByb3BlcnR5IG5vdGlmaWNhdGlvbnMgRGVmYXVsdDogYFtdYFxuICogQHByb3BlcnR5IG5vdGlmaWNhdGlvbnMgRGVmYXVsdDogYFtdYFxuICogQHByb3BlcnR5IGxvYWRGaWxlc1xuICogQHByb3BlcnR5IGxvY2FsZSBEZWZhdWx0OiBgJ2VuJ2BcbiAqIEBwcm9wZXJ0eSB0aGVtZSBEZWZhdWx0OiBgJ2RhcmsnYFxuICogQHByb3BlcnR5IGlzU2lkZVBhbmVsQ2xvc2VCdXR0b25WaXNpYmxlIERlZmF1bHQ6IGB0cnVlYFxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgSU5JVElBTF9VSV9TVEFURTogVWlTdGF0ZSA9IHtcbiAgcmVhZE9ubHk6IGZhbHNlLFxuICBhY3RpdmVTaWRlUGFuZWw6IERFRkFVTFRfQUNUSVZFX1NJREVfUEFORUwsXG4gIGN1cnJlbnRNb2RhbDogREVGQVVMVF9NT0RBTCxcbiAgZGF0YXNldEtleVRvUmVtb3ZlOiBudWxsLFxuICBkYXRhc2V0VG9SZXBsYWNlSWQ6IG51bGwsXG4gIHZpc2libGVEcm9wZG93bjogbnVsbCxcbiAgLy8gZXhwb3J0IGltYWdlIG1vZGFsIHVpXG4gIGV4cG9ydEltYWdlOiBERUZBVUxUX0VYUE9SVF9JTUFHRSxcbiAgLy8gZXhwb3J0IGRhdGEgbW9kYWwgdWlcbiAgZXhwb3J0RGF0YTogREVGQVVMVF9FWFBPUlRfREFUQSxcbiAgLy8gaHRtbCBleHBvcnRcbiAgZXhwb3J0TWFwOiBERUZBVUxUX0VYUE9SVF9NQVAsXG4gIC8vIGV4cG9ydCB2aWRlbyBtb2RhbCB1aVxuICBleHBvcnRWaWRlbzogREVGQVVMVF9FWFBPUlRfVklERU8sXG4gIC8vIG1hcCBjb250cm9sIHBhbmVsc1xuICBtYXBDb250cm9sczogREVGQVVMVF9NQVBfQ09OVFJPTFMsXG4gIC8vIHVpIG5vdGlmaWNhdGlvbnNcbiAgbm90aWZpY2F0aW9uczogREVGQVVMVF9OT1RJRklDQVRJT05TLFxuICAvLyBsb2FkIGZpbGVzXG4gIGxvYWRGaWxlczogREVGQVVMVF9MT0FEX0ZJTEVTLFxuICAvLyBMb2NhbGUgb2YgdGhlIFVJXG4gIGxvY2FsZTogTE9DQUxFX0NPREVTLmVuLFxuICAvLyBUaGVtZSBvZiB0aGUgVUkgKGBsaWdodGAgfCBgZGFya2AgfCBgc3BhY2VgKS4gRmlyc3Qgb2YgYHRoZW1lc2AgaXMgdGhlIGRlZmF1bHQgd2hlbiBzZXQuXG4gIHRoZW1lOiBUSEVNRS5kYXJrLFxuICBsYXllclBhbmVsTGlzdFZpZXc6ICdsaXN0JyxcbiAgZmlsdGVyUGFuZWxMaXN0VmlldzogJ2xpc3QnLFxuICBpc1NpZGVQYW5lbENsb3NlQnV0dG9uVmlzaWJsZTogdHJ1ZVxufTtcblxuLyogVXBkYXRlcnMgKi9cbi8qKlxuICogQG1lbWJlcm9mIHVpU3RhdGVVcGRhdGVyc1xuICovXG5leHBvcnQgY29uc3QgaW5pdFVpU3RhdGVVcGRhdGVyID0gKFxuICBzdGF0ZTogVWlTdGF0ZSxcbiAgYWN0aW9uOiB7XG4gICAgdHlwZT86ICh0eXBlb2YgQWN0aW9uVHlwZXMpWydJTklUJ107XG4gICAgcGF5bG9hZDogS2VwbGVyR2xJbml0UGF5bG9hZDtcbiAgfVxuKTogVWlTdGF0ZSA9PiB7XG4gIGNvbnN0IGluaXRpYWxVaVN0YXRlID0gKGFjdGlvbi5wYXlsb2FkIHx8IHt9KS5pbml0aWFsVWlTdGF0ZSB8fCB7fTtcbiAgY29uc3QgdGhlbWVzID0gZ2V0Q29uZmlndXJlZFRoZW1lcygpO1xuICBjb25zdCByZXF1ZXN0ZWQgPSBpbml0aWFsVWlTdGF0ZS50aGVtZSA/PyBzdGF0ZS50aGVtZTtcbiAgY29uc3QgdGhlbWUgPVxuICAgIHRoZW1lcy5sZW5ndGggPT09IDAgPyByZXF1ZXN0ZWQgOiB0aGVtZXMuaW5jbHVkZXMocmVxdWVzdGVkKSA/IHJlcXVlc3RlZCA6IGdldERlZmF1bHRVaVRoZW1lKCk7XG5cbiAgcmV0dXJuIHtcbiAgICAuLi5zdGF0ZSxcbiAgICAuLi5pbml0aWFsVWlTdGF0ZSxcbiAgICB0aGVtZVxuICB9O1xufTtcblxuLyoqXG4gKiBUb2dnbGUgYWN0aXZlIHNpZGUgcGFuZWxcbiAqIEBtZW1iZXJvZiB1aVN0YXRlVXBkYXRlcnNcbiAqIEBwYXJhbSBzdGF0ZSBgdWlTdGF0ZWBcbiAqIEBwYXJhbSBhY3Rpb25cbiAqIEBwYXJhbSBhY3Rpb24ucGF5bG9hZCBpZCBvZiBzaWRlIHBhbmVsIHRvIGJlIHNob3duLCBvbmUgb2YgYGxheWVyYCwgYGZpbHRlcmAsIGBpbnRlcmFjdGlvbmAsIGBtYXBgLiBjbG9zZSBzaWRlIHBhbmVsIGlmIGBudWxsYFxuICogQHJldHVybnMgbmV4dFN0YXRlXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCB0b2dnbGVTaWRlUGFuZWxVcGRhdGVyID0gKFxuICBzdGF0ZTogVWlTdGF0ZSxcbiAge3BheWxvYWQ6IGlkfTogVUlTdGF0ZUFjdGlvbnMuVG9nZ2xlU2lkZVBhbmVsVXBkYXRlckFjdGlvblxuKTogVWlTdGF0ZSA9PiB7XG4gIHJldHVybiBpZCA9PT0gc3RhdGUuYWN0aXZlU2lkZVBhbmVsXG4gICAgPyBzdGF0ZVxuICAgIDoge1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgYWN0aXZlU2lkZVBhbmVsOiBpZFxuICAgICAgfTtcbn07XG5cbi8qKlxuICogU2hvdyBhbmQgaGlkZSBtb2RhbCBkaWFsb2dcbiAqIEBtZW1iZXJvZiB1aVN0YXRlVXBkYXRlcnNcbiAqIEBwYXJhbSBzdGF0ZSBgdWlTdGF0ZWBcbiAqIEBwYXJhbSBhY3Rpb25cbiAqIEBwYXJhbWFjdGlvbi5wYXlsb2FkIGlkIG9mIG1vZGFsIHRvIGJlIHNob3duLCBudWxsIHRvIGhpZGUgbW9kYWxzLiBPbmUgb2Y6XG4gKiAgLSBbYERBVEFfVEFCTEVfSURgXSguLi9jb25zdGFudHMvZGVmYXVsdC1zZXR0aW5ncy5tZCNkYXRhX3RhYmxlX2lkKVxuICogIC0gW2BERUxFVEVfREFUQV9JRGBdKC4uL2NvbnN0YW50cy9kZWZhdWx0LXNldHRpbmdzLm1kI2RlbGV0ZV9kYXRhX2lkKVxuICogIC0gW2BBRERfREFUQV9JRGBdKC4uL2NvbnN0YW50cy9kZWZhdWx0LXNldHRpbmdzLm1kI2FkZF9kYXRhX2lkKVxuICogIC0gW2BFWFBPUlRfSU1BR0VfSURgXSguLi9jb25zdGFudHMvZGVmYXVsdC1zZXR0aW5ncy5tZCNleHBvcnRfaW1hZ2VfaWQpXG4gKiAgLSBbYEVYUE9SVF9EQVRBX0lEYF0oLi4vY29uc3RhbnRzL2RlZmF1bHQtc2V0dGluZ3MubWQjZXhwb3J0X2RhdGFfaWQpXG4gKiAgLSBbYEFERF9NQVBfU1RZTEVfSURgXSguLi9jb25zdGFudHMvZGVmYXVsdC1zZXR0aW5ncy5tZCNhZGRfbWFwX3N0eWxlX2lkKVxuICogQHJldHVybnMgbmV4dFN0YXRlXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCB0b2dnbGVNb2RhbFVwZGF0ZXIgPSAoXG4gIHN0YXRlOiBVaVN0YXRlLFxuICB7cGF5bG9hZDogaWR9OiBVSVN0YXRlQWN0aW9ucy5Ub2dnbGVNb2RhbFVwZGF0ZXJBY3Rpb25cbik6IFVpU3RhdGUgPT4gKHtcbiAgLi4uc3RhdGUsXG4gIGN1cnJlbnRNb2RhbDogaWQsXG4gIC8vIEFkZCBEYXRhIGFuZCBldmVyeSBvdGhlciBtb2RhbCBvcGVuIGxlYXZlIHJlcGxhY2UgbW9kZS5cbiAgLy8gUmVwbGFjZSBtb2RlIGlzIGVudGVyZWQgb25seSB0aHJvdWdoIG9wZW5SZXBsYWNlRGF0YXNldE1vZGFsLlxuICBkYXRhc2V0VG9SZXBsYWNlSWQ6IG51bGxcbn0pO1xuXG4vKipcbiAqIEhpZGUgYW5kIHNob3cgc2lkZSBwYW5lbCBoZWFkZXIgZHJvcGRvd24sIGFjdGl2YXRlZCBieSBjbGlja2luZyB0aGUgc2hhcmUgbGluayBvbiB0b3Agb2YgdGhlIHNpZGUgcGFuZWxcbiAqIEBtZW1iZXJvZiB1aVN0YXRlVXBkYXRlcnNcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IHNob3dFeHBvcnREcm9wZG93blVwZGF0ZXIgPSAoXG4gIHN0YXRlOiBVaVN0YXRlLFxuICB7cGF5bG9hZDogaWR9OiBVSVN0YXRlQWN0aW9ucy5TaG93RXhwb3J0RHJvcGRvd25VcGRhdGVyQWN0aW9uXG4pOiBVaVN0YXRlID0+ICh7XG4gIC4uLnN0YXRlLFxuICB2aXNpYmxlRHJvcGRvd246IGlkXG59KTtcblxuLyoqXG4gKiBIaWRlIHNpZGUgcGFuZWwgaGVhZGVyIGRyb3Bkb3duLCBhY3RpdmF0ZWQgYnkgY2xpY2tpbmcgdGhlIHNoYXJlIGxpbmsgb24gdG9wIG9mIHRoZSBzaWRlIHBhbmVsXG4gKiBAbWVtYmVyb2YgdWlTdGF0ZVVwZGF0ZXJzXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBoaWRlRXhwb3J0RHJvcGRvd25VcGRhdGVyID0gKHN0YXRlOiBVaVN0YXRlKTogVWlTdGF0ZSA9PiAoe1xuICAuLi5zdGF0ZSxcbiAgdmlzaWJsZURyb3Bkb3duOiBudWxsXG59KTtcblxuLyoqXG4gKiBUb2dnbGUgc2lkZSBwYW5lbCBjbG9zZSBidXR0b24gb24gdG9wIGxlZnQgb2YgdGhlIHNpZGUgcGFuZWxcbiAqIEBtZW1iZXJvZiB1aVN0YXRlVXBkYXRlcnNcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IHRvZ2dsZVNpZGVQYW5lbENsb3NlQnV0dG9uVXBkYXRlciA9IChcbiAgc3RhdGU6IFVpU3RhdGUsXG4gIHtwYXlsb2FkOiB7c2hvd319OiBVSVN0YXRlQWN0aW9ucy5Ub2dnbGVTaWRlUGFuZWxDbG9zZUJ1dHRvblVwZGF0ZXJBY3Rpb25cbik6IFVpU3RhdGUgPT4gKHtcbiAgLi4uc3RhdGUsXG4gIGlzU2lkZVBhbmVsQ2xvc2VCdXR0b25WaXNpYmxlOiBzaG93XG59KTtcblxuLy8gTWFwIGNvbnRyb2wgZHJvcGRvd25zL21lbnVzIHRoYXQgb3ZlcmxhcCBlYWNoIG90aGVyIHZpc3VhbGx5IGFuZCB0aGVyZWZvcmVcbi8vIHNob3VsZCBiZSBtdXR1YWxseSBleGNsdXNpdmU6IG9wZW5pbmcgb25lIGNsb3NlcyBhbGwgdGhlIG90aGVycy5cbi8vIChzcGxpdC92aWV3LW1vZGUgbWVudSwgdG9wLzNkL2dsb2JlIG1lbnUsIHBvbHlnb24gZHJhdyB0b29sLCBsYW5ndWFnZSBtZW51KVxuZXhwb3J0IGNvbnN0IE1VVFVBTExZX0VYQ0xVU0lWRV9NQVBfQ09OVFJPTFM6IHN0cmluZ1tdID0gW1xuICBNQVBfQ09OVFJPTFMuc3BsaXRNYXAsXG4gIE1BUF9DT05UUk9MUy50b2dnbGUzZCxcbiAgTUFQX0NPTlRST0xTLm1hcERyYXcsXG4gIE1BUF9DT05UUk9MUy5tYXBMb2NhbGVcbl07XG5cbi8qKlxuICogVG9nZ2xlIGFjdGl2ZSBtYXAgY29udHJvbCBwYW5lbFxuICogQG1lbWJlcm9mIHVpU3RhdGVVcGRhdGVyc1xuICogQHBhcmFtIHN0YXRlIGB1aVN0YXRlYFxuICogQHBhcmFtIGFjdGlvbiBhY3Rpb25cbiAqIEBwYXJhbSBhY3Rpb24ucGF5bG9hZCBtYXAgY29udHJvbCBwYW5lbCBpZCwgb25lIG9mIHRoZSBrZXlzIG9mOiBbYERFRkFVTFRfTUFQX0NPTlRST0xTYF0oI2RlZmF1bHRfbWFwX2NvbnRyb2xzKVxuICogQHJldHVybnMgbmV4dFN0YXRlXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCB0b2dnbGVNYXBDb250cm9sVXBkYXRlciA9IChcbiAgc3RhdGU6IFVpU3RhdGUsXG4gIHtwYXlsb2FkOiB7cGFuZWxJZCwgaW5kZXggPSAwfX06IFVJU3RhdGVBY3Rpb25zLlRvZ2dsZU1hcENvbnRyb2xVcGRhdGVyQWN0aW9uXG4pOiBVaVN0YXRlID0+IHtcbiAgbGV0IHVwZGF0ZWRTdGF0ZSA9IHN0YXRlO1xuXG4gIC8vIFRoZSBvdmVybGFwcGluZyBtYXAgY29udHJvbCBtZW51cyBzaG91bGQgYmUgbXV0dWFsbHkgZXhjbHVzaXZlOiB3aGVuIG9uZSBvZlxuICAvLyB0aGVtIGlzIGJlaW5nIG9wZW5lZCwgZGVhY3RpdmF0ZSBldmVyeSBvdGhlciBvbmUgdGhhdCBpcyBjdXJyZW50bHkgYWN0aXZlXG4gIC8vIHNvIHRoZWlyIGRyb3Bkb3ducyBuZXZlciBvdmVybGFwIG9uIHNjcmVlbi5cbiAgY29uc3QgaXNPcGVuaW5nID0gIXVwZGF0ZWRTdGF0ZS5tYXBDb250cm9sc1twYW5lbElkXT8uYWN0aXZlO1xuICBpZiAoaXNPcGVuaW5nICYmIE1VVFVBTExZX0VYQ0xVU0lWRV9NQVBfQ09OVFJPTFMuaW5jbHVkZXMocGFuZWxJZCkpIHtcbiAgICBjb25zdCBuZXh0TWFwQ29udHJvbHMgPSB7Li4udXBkYXRlZFN0YXRlLm1hcENvbnRyb2xzfTtcbiAgICBsZXQgZGlkRGVhY3RpdmF0ZSA9IGZhbHNlO1xuICAgIE1VVFVBTExZX0VYQ0xVU0lWRV9NQVBfQ09OVFJPTFMuZm9yRWFjaChjb250cm9sSWQgPT4ge1xuICAgICAgaWYgKGNvbnRyb2xJZCAhPT0gcGFuZWxJZCAmJiBuZXh0TWFwQ29udHJvbHNbY29udHJvbElkXT8uYWN0aXZlKSB7XG4gICAgICAgIG5leHRNYXBDb250cm9sc1tjb250cm9sSWRdID0gey4uLm5leHRNYXBDb250cm9sc1tjb250cm9sSWRdLCBhY3RpdmU6IGZhbHNlfTtcbiAgICAgICAgZGlkRGVhY3RpdmF0ZSA9IHRydWU7XG4gICAgICB9XG4gICAgfSk7XG4gICAgaWYgKGRpZERlYWN0aXZhdGUpIHtcbiAgICAgIHVwZGF0ZWRTdGF0ZSA9IHsuLi51cGRhdGVkU3RhdGUsIG1hcENvbnRyb2xzOiBuZXh0TWFwQ29udHJvbHN9O1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB7XG4gICAgLi4udXBkYXRlZFN0YXRlLFxuICAgIG1hcENvbnRyb2xzOiB7XG4gICAgICAuLi51cGRhdGVkU3RhdGUubWFwQ29udHJvbHMsXG4gICAgICBbcGFuZWxJZF06IHtcbiAgICAgICAgLi4uKHVwZGF0ZWRTdGF0ZS5tYXBDb250cm9sc1twYW5lbElkXSBhcyBNYXBDb250cm9sSXRlbSksXG4gICAgICAgIGFjdGl2ZTogIXVwZGF0ZWRTdGF0ZS5tYXBDb250cm9sc1twYW5lbElkXT8uYWN0aXZlLFxuICAgICAgICBhY3RpdmVNYXBJbmRleDogaW5kZXhcbiAgICAgIH1cbiAgICB9XG4gIH07XG59O1xuXG4vKipcbiAqIFRvZ2dsZSBtYXAgY29udHJvbCB2aXNpYmlsaXR5XG4gKiBAbWVtYmVyb2YgdWlTdGF0ZVVwZGF0ZXJzXG4gKiBAcGFyYW0gc3RhdGUgYHVpU3RhdGVgXG4gKiBAcGFyYW0gYWN0aW9uIGFjdGlvblxuICogQHBhcmFtIGFjdGlvbi5wYXlsb2FkIG1hcCBjb250cm9sIHBhbmVsIGlkLCBvbmUgb2YgdGhlIGtleXMgb2Y6IFtgREVGQVVMVF9NQVBfQ09OVFJPTFNgXSgjZGVmYXVsdF9tYXBfY29udHJvbHMpXG4gKiBAcmV0dXJucyBuZXh0U3RhdGVcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IHNldE1hcENvbnRyb2xWaXNpYmlsaXR5VXBkYXRlciA9IChcbiAgc3RhdGU6IFVpU3RhdGUsXG4gIHtwYXlsb2FkOiB7cGFuZWxJZCwgc2hvd319OiBVSVN0YXRlQWN0aW9ucy5zZXRNYXBDb250cm9sVmlzaWJpbGl0eVVwZGF0ZXJBY3Rpb25cbik6IFVpU3RhdGUgPT4ge1xuICBpZiAoIXN0YXRlLm1hcENvbnRyb2xzPy5bcGFuZWxJZF0pIHtcbiAgICByZXR1cm4gc3RhdGU7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIC4uLnN0YXRlLFxuICAgIG1hcENvbnRyb2xzOiB7XG4gICAgICAuLi5zdGF0ZS5tYXBDb250cm9scyxcbiAgICAgIFtwYW5lbElkXToge1xuICAgICAgICAuLi5zdGF0ZS5tYXBDb250cm9sc1twYW5lbElkXSxcbiAgICAgICAgc2hvdzogQm9vbGVhbihzaG93KVxuICAgICAgfVxuICAgIH1cbiAgfTtcbn07XG5cbi8qKlxuICogVG9nZ2xlIG1hcCBjb250cm9sIHNldHRpbmdzXG4gKiBAbWVtYmVyb2YgdWlTdGF0ZVVwZGF0ZXJzXG4gKiBAcGFyYW0gc3RhdGUgYHVpU3RhdGVgXG4gKiBAcGFyYW0gYWN0aW9uIGFjdGlvblxuICogQHBhcmFtIGFjdGlvbi5wYXlsb2FkIG1hcCBjb250cm9sIHBhbmVsIGlkLCBvbmUgb2YgdGhlIGtleXMgb2Y6IFtgREVGQVVMVF9NQVBfQ09OVFJPTFNgXSgjZGVmYXVsdF9tYXBfY29udHJvbHMpXG4gKiBAcmV0dXJucyBuZXh0U3RhdGVcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IHNldE1hcENvbnRyb2xTZXR0aW5nc1VwZGF0ZXIgPSAoXG4gIHN0YXRlOiBVaVN0YXRlLFxuICB7cGF5bG9hZDoge3BhbmVsSWQsIHNldHRpbmdzfX06IFVJU3RhdGVBY3Rpb25zLnNldE1hcENvbnRyb2xTZXR0aW5nc1VwZGF0ZXJBY3Rpb25cbik6IFVpU3RhdGUgPT4ge1xuICBjb25zdCBtYXBDb250cm9sID0gc3RhdGUubWFwQ29udHJvbHM/LltwYW5lbElkXSBhcyBNYXBDb250cm9sTWFwTGVnZW5kIHwgdW5kZWZpbmVkO1xuICBpZiAoIW1hcENvbnRyb2wpIHtcbiAgICByZXR1cm4gc3RhdGU7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIC4uLnN0YXRlLFxuICAgIG1hcENvbnRyb2xzOiB7XG4gICAgICAuLi5zdGF0ZS5tYXBDb250cm9scyxcbiAgICAgIFtwYW5lbElkXToge1xuICAgICAgICAuLi5tYXBDb250cm9sLFxuICAgICAgICBzZXR0aW5nczogey4uLm1hcENvbnRyb2wuc2V0dGluZ3MsIC4uLnNldHRpbmdzfVxuICAgICAgfSBhcyBNYXBDb250cm9sTWFwTGVnZW5kXG4gICAgfVxuICB9O1xufTtcblxuLyoqXG4gKiBUb2dnbGUgYWN0aXZlIG1hcCBjb250cm9sIHBhbmVsXG4gKiBAbWVtYmVyb2YgdWlTdGF0ZVVwZGF0ZXJzXG4gKiBAcGFyYW0gc3RhdGUgYHVpU3RhdGVgXG4gKiBAcGFyYW0gYWN0aW9uXG4gKiBAcGFyYW0gYWN0aW9uLnBheWxvYWQgZGF0YXNldCBpZFxuICogQHJldHVybnMgbmV4dFN0YXRlXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBvcGVuRGVsZXRlTW9kYWxVcGRhdGVyID0gKFxuICBzdGF0ZTogVWlTdGF0ZSxcbiAge3BheWxvYWQ6IGRhdGFzZXRLZXlUb1JlbW92ZX06IFVJU3RhdGVBY3Rpb25zLk9wZW5EZWxldGVNb2RhbFVwZGF0ZXJBY3Rpb25cbik6IFVpU3RhdGUgPT4gKHtcbiAgLi4uc3RhdGUsXG4gIGN1cnJlbnRNb2RhbDogREVMRVRFX0RBVEFfSUQsXG4gIGRhdGFzZXRLZXlUb1JlbW92ZVxufSk7XG5cbi8qKlxuICogT3BlbiB0aGUgYWRkLWRhdGEgbW9kYWwgc28gdGhlIG5leHQgY29uZmlybWVkIHVwbG9hZCByZXBsYWNlcyBvbmUgZGF0YXNldC5cbiAqIEBtZW1iZXJvZiB1aVN0YXRlVXBkYXRlcnNcbiAqIEBwYXJhbSBzdGF0ZSBgdWlTdGF0ZWBcbiAqIEBwYXJhbSBhY3Rpb25cbiAqIEBwYXJhbSBhY3Rpb24ucGF5bG9hZCBkYXRhc2V0IGlkXG4gKiBAcmV0dXJucyBuZXh0U3RhdGVcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IG9wZW5SZXBsYWNlRGF0YXNldE1vZGFsVXBkYXRlciA9IChcbiAgc3RhdGU6IFVpU3RhdGUsXG4gIHtwYXlsb2FkOiBkYXRhc2V0VG9SZXBsYWNlSWR9OiBVSVN0YXRlQWN0aW9ucy5PcGVuUmVwbGFjZURhdGFzZXRNb2RhbFVwZGF0ZXJBY3Rpb25cbik6IFVpU3RhdGUgPT4gKHtcbiAgLi4uc3RhdGUsXG4gIGN1cnJlbnRNb2RhbDogQUREX0RBVEFfSUQsXG4gIGRhdGFzZXRUb1JlcGxhY2VJZFxufSk7XG5cbi8qKlxuICogU2V0IGBleHBvcnRJbWFnZWAgb3B0aW9ucyBzdWNoIGFzIGBsZWdlbmRgIGFuZCBgY2hhcnRzYCB0byBgdHJ1ZWAgb3IgYGZhbHNlYFxuICogQG1lbWJlcm9mIHVpU3RhdGVVcGRhdGVyc1xuICogQHBhcmFtIHN0YXRlIGB1aVN0YXRlYFxuICogQHJldHVybnMgbmV4dFN0YXRlXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBzZXRFeHBvcnRJbWFnZVNldHRpbmdVcGRhdGVyID0gKFxuICBzdGF0ZTogVWlTdGF0ZSxcbiAge3BheWxvYWQ6IG5ld1NldHRpbmd9OiBVSVN0YXRlQWN0aW9ucy5TZXRFeHBvcnRJbWFnZVNldHRpbmdVcGRhdGVyQWN0aW9uXG4pOiBVaVN0YXRlID0+IHtcbiAgY29uc3QgdXBkYXRlZCA9IHsuLi5zdGF0ZS5leHBvcnRJbWFnZSwgLi4ubmV3U2V0dGluZ307XG4gIGNvbnN0IGltYWdlU2l6ZSA9IGNhbGN1bGF0ZUV4cG9ydEltYWdlU2l6ZSh1cGRhdGVkKSB8fCBzdGF0ZS5leHBvcnRJbWFnZS5pbWFnZVNpemU7XG5cbiAgcmV0dXJuIHtcbiAgICAuLi5zdGF0ZSxcbiAgICBleHBvcnRJbWFnZToge1xuICAgICAgLi4udXBkYXRlZCxcbiAgICAgIGltYWdlU2l6ZVxuICAgIH1cbiAgfTtcbn07XG5cbi8qKlxuICogU2V0IGBleHBvcnRJbWFnZS5zZXRFeHBvcnRJbWFnZURhdGFVcmlgIHRvIGEgaW1hZ2UgZGF0YVVyaVxuICogQG1lbWJlcm9mIHVpU3RhdGVVcGRhdGVyc1xuICogQHBhcmFtIHN0YXRlIGB1aVN0YXRlYFxuICogQHBhcmFtIGFjdGlvblxuICogQHBhcmFtIGFjdGlvbi5wYXlsb2FkIGV4cG9ydCBpbWFnZSBkYXRhIHVyaVxuICogQHJldHVybnMgbmV4dFN0YXRlXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBzZXRFeHBvcnRJbWFnZURhdGFVcmlVcGRhdGVyID0gKFxuICBzdGF0ZTogVWlTdGF0ZSxcbiAge3BheWxvYWQ6IGRhdGFVcml9OiBVSVN0YXRlQWN0aW9ucy5TZXRFeHBvcnRJbWFnZURhdGFVcmlVcGRhdGVyQWN0aW9uXG4pOiBVaVN0YXRlID0+IHtcbiAgaWYgKGRhdGFVcmkgPT09IHN0YXRlLmV4cG9ydEltYWdlLmltYWdlRGF0YVVyaSkge1xuICAgIHJldHVybiBzdGF0ZTtcbiAgfVxuICByZXR1cm4ge1xuICAgIC4uLnN0YXRlLFxuICAgIGV4cG9ydEltYWdlOiB7XG4gICAgICAuLi5zdGF0ZS5leHBvcnRJbWFnZSxcbiAgICAgIHByb2Nlc3Npbmc6IGZhbHNlLFxuICAgICAgaW1hZ2VEYXRhVXJpOiBkYXRhVXJpXG4gICAgfVxuICB9O1xufTtcblxuLyoqXG4gKiBAbWVtYmVyb2YgdWlTdGF0ZVVwZGF0ZXJzXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBzZXRFeHBvcnRJbWFnZUVycm9yVXBkYXRlciA9IChcbiAgc3RhdGU6IFVpU3RhdGUsXG4gIHtwYXlsb2FkOiBlcnJvcn06IFVJU3RhdGVBY3Rpb25zLlNldEV4cG9ydEltYWdlRXJyb3JVcGRhdGVyQWN0aW9uXG4pOiBVaVN0YXRlID0+ICh7XG4gIC4uLnN0YXRlLFxuICBleHBvcnRJbWFnZToge1xuICAgIC4uLnN0YXRlLmV4cG9ydEltYWdlLFxuICAgIHByb2Nlc3Npbmc6IGZhbHNlLFxuICAgIGVycm9yXG4gIH1cbn0pO1xuXG4vKipcbiAqIERlbGV0ZSBjYWNoZWQgZXhwb3J0IGltYWdlXG4gKiBAbWVtYmVyb2YgdWlTdGF0ZVVwZGF0ZXJzXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBjbGVhbnVwRXhwb3J0SW1hZ2VVcGRhdGVyID0gKHN0YXRlOiBVaVN0YXRlKTogVWlTdGF0ZSA9PiAoe1xuICAuLi5zdGF0ZSxcbiAgZXhwb3J0SW1hZ2U6IHtcbiAgICAuLi5zdGF0ZS5leHBvcnRJbWFnZSxcbiAgICBleHBvcnRpbmc6IGZhbHNlLFxuICAgIGltYWdlRGF0YVVyaTogJycsXG4gICAgZXJyb3I6IGZhbHNlLFxuICAgIHByb2Nlc3Npbmc6IGZhbHNlLFxuICAgIGNlbnRlcjogZmFsc2VcbiAgfVxufSk7XG5cbi8qKlxuICogU2V0IGBleHBvcnRWaWRlb2Agc2V0dGluZ3M6IG1lZGlhVHlwZSwgY2FtZXJhUHJlc2V0LCBmaWxlTmFtZSwgcmVzb2x1dGlvbiwgZHVyYXRpb25Nc1xuICogQG1lbWJlcm9mIHVpU3RhdGVVcGRhdGVyc1xuICogQHBhcmFtIHN0YXRlIGB1aVN0YXRlYFxuICogQHBhcmFtIGFjdGlvblxuICogQHBhcmFtIGFjdGlvbi5wYXlsb2FkIG5ldyB2aWRlbyBleHBvcnQgc2V0dGluZ3NcbiAqIEByZXR1cm5zIG5leHRTdGF0ZVxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3Qgc2V0RXhwb3J0VmlkZW9TZXR0aW5nVXBkYXRlciA9IChcbiAgc3RhdGU6IFVpU3RhdGUsXG4gIHtwYXlsb2FkOiBuZXdTZXR0aW5nfTogVUlTdGF0ZUFjdGlvbnMuU2V0RXhwb3J0VmlkZW9TZXR0aW5nVXBkYXRlckFjdGlvblxuKTogVWlTdGF0ZSA9PiAoe1xuICAuLi5zdGF0ZSxcbiAgZXhwb3J0VmlkZW86IHtcbiAgICAuLi5zdGF0ZS5leHBvcnRWaWRlbyxcbiAgICAuLi5uZXdTZXR0aW5nXG4gIH1cbn0pO1xuXG4vKipcbiAqIFN0YXJ0IGltYWdlIGV4cG9ydGluZyBmbG93XG4gKiBAbWVtYmVyb2YgdWlTdGF0ZVVwZGF0ZXJzXG4gKiBAcGFyYW0gc3RhdGVcbiAqIEBwYXJhbSBvcHRpb25zXG4gKiBAcmV0dXJucyB7VWlTdGF0ZX1cbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IHN0YXJ0RXhwb3J0aW5nSW1hZ2VVcGRhdGVyID0gKFxuICBzdGF0ZTogVWlTdGF0ZSxcbiAge3BheWxvYWQ6IG9wdGlvbnMgPSB7fX06IHtwYXlsb2FkOiBQYXJ0aWFsPEV4cG9ydEltYWdlPn1cbik6IFVpU3RhdGUgPT4ge1xuICBjb25zdCBpbWFnZVNldHRpbmdzID0ge1xuICAgIC4uLm9wdGlvbnMsXG4gICAgZXhwb3J0aW5nOiB0cnVlXG4gIH07XG5cbiAgcmV0dXJuIGNvbXBvc2VfKFtcbiAgICBjbGVhbnVwRXhwb3J0SW1hZ2VVcGRhdGVyLFxuICAgIGFwcGx5XyhzZXRFeHBvcnRJbWFnZVNldHRpbmdVcGRhdGVyLCBwYXlsb2FkXyhpbWFnZVNldHRpbmdzKSlcbiAgXSkoc3RhdGUpO1xufTtcblxuLyoqXG4gKiBTZXQgc2VsZWN0ZWQgZGF0YXNldCBmb3IgZXhwb3J0XG4gKiBAbWVtYmVyb2YgdWlTdGF0ZVVwZGF0ZXJzXG4gKiBAcGFyYW0gc3RhdGUgYHVpU3RhdGVgXG4gKiBAcGFyYW0gYWN0aW9uXG4gKiBAcGFyYW0gYWN0aW9uLnBheWxvYWQgZGF0YXNldCBpZFxuICogQHJldHVybnMgbmV4dFN0YXRlXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBzZXRFeHBvcnRTZWxlY3RlZERhdGFzZXRVcGRhdGVyID0gKFxuICBzdGF0ZTogVWlTdGF0ZSxcbiAge3BheWxvYWQ6IGRhdGFzZXR9OiBVSVN0YXRlQWN0aW9ucy5TZXRFeHBvcnRTZWxlY3RlZERhdGFzZXRVcGRhdGVyQWN0aW9uXG4pOiBVaVN0YXRlID0+ICh7XG4gIC4uLnN0YXRlLFxuICBleHBvcnREYXRhOiB7XG4gICAgLi4uc3RhdGUuZXhwb3J0RGF0YSxcbiAgICBzZWxlY3RlZERhdGFzZXQ6IGRhdGFzZXRcbiAgfVxufSk7XG5cbi8qKlxuICogU2V0IGRhdGEgZm9ybWF0IGZvciBleHBvcnRpbmcgZGF0YVxuICogQG1lbWJlcm9mIHVpU3RhdGVVcGRhdGVyc1xuICogQHBhcmFtIHN0YXRlIGB1aVN0YXRlYFxuICogQHBhcmFtIGFjdGlvblxuICogQHBhcmFtIGFjdGlvbi5wYXlsb2FkIG9uZSBvZiBgJ3RleHQvY3N2J2BcbiAqIEByZXR1cm5zIG5leHRTdGF0ZVxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3Qgc2V0RXhwb3J0RGF0YVR5cGVVcGRhdGVyID0gKFxuICBzdGF0ZTogVWlTdGF0ZSxcbiAge3BheWxvYWQ6IGRhdGFUeXBlfTogVUlTdGF0ZUFjdGlvbnMuU2V0RXhwb3J0RGF0YVR5cGVVcGRhdGVyQWN0aW9uXG4pOiBVaVN0YXRlID0+ICh7XG4gIC4uLnN0YXRlLFxuICBleHBvcnREYXRhOiB7XG4gICAgLi4uc3RhdGUuZXhwb3J0RGF0YSxcbiAgICBkYXRhVHlwZVxuICB9XG59KTtcblxuLyoqXG4gKiBXaGV0aGVyIHRvIGV4cG9ydCBmaWx0ZXJlZCBkYXRhLCBgdHJ1ZWAgb3IgYGZhbHNlYFxuICogQG1lbWJlcm9mIHVpU3RhdGVVcGRhdGVyc1xuICogQHBhcmFtIHN0YXRlIGB1aVN0YXRlYFxuICogQHBhcmFtIGFjdGlvblxuICogQHBhcmFtIGFjdGlvbi5wYXlsb2FkXG4gKiBAcmV0dXJucyBuZXh0U3RhdGVcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IHNldEV4cG9ydEZpbHRlcmVkVXBkYXRlciA9IChcbiAgc3RhdGU6IFVpU3RhdGUsXG4gIHtwYXlsb2FkOiBmaWx0ZXJlZH06IFVJU3RhdGVBY3Rpb25zLlNldEV4cG9ydEZpbHRlcmVkVXBkYXRlckFjdGlvblxuKTogVWlTdGF0ZSA9PiAoe1xuICAuLi5zdGF0ZSxcbiAgZXhwb3J0RGF0YToge1xuICAgIC4uLnN0YXRlLmV4cG9ydERhdGEsXG4gICAgZmlsdGVyZWRcbiAgfVxufSk7XG5cbi8qKlxuICogV2hldGhlciB0byBpbmNsdWRpbmcgZGF0YSBpbiBtYXAgY29uZmlnLCB0b2dnbGUgYmV0d2VlbiBgdHJ1ZWAgb3IgYGZhbHNlYFxuICogQG1lbWJlcm9mIHVpU3RhdGVVcGRhdGVyc1xuICogQHBhcmFtIHN0YXRlIGB1aVN0YXRlYFxuICogQHJldHVybnMgbmV4dFN0YXRlXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBzZXRFeHBvcnREYXRhVXBkYXRlciA9IChzdGF0ZTogVWlTdGF0ZSk6IFVpU3RhdGUgPT4gKHtcbiAgLi4uc3RhdGUsXG4gIGV4cG9ydE1hcDoge1xuICAgIC4uLnN0YXRlLmV4cG9ydE1hcCxcbiAgICBbRVhQT1JUX01BUF9GT1JNQVRTLkpTT05dOiB7XG4gICAgICAuLi5zdGF0ZS5leHBvcnRNYXBbRVhQT1JUX01BUF9GT1JNQVRTLkpTT05dLFxuICAgICAgaGFzRGF0YTogIXN0YXRlLmV4cG9ydE1hcFtFWFBPUlRfTUFQX0ZPUk1BVFMuSlNPTl0uaGFzRGF0YVxuICAgIH1cbiAgfVxufSk7XG5cbi8qKlxuICogd2hldGhlciB0byBleHBvcnQgYSBtYXBib3ggYWNjZXNzIHRvIEhUTUwgc2luZ2xlIHBhZ2VcbiAqIEBwYXJhbSBzdGF0ZSAtIGB1aVN0YXRlYFxuICogQHBhcmFtIGFjdGlvblxuICogQHBhcmFtIGFjdGlvbi5wYXlsb2FkXG4gKiBAcmV0dXJucyBuZXh0U3RhdGVcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IHNldFVzZXJNYXBib3hBY2Nlc3NUb2tlblVwZGF0ZXIgPSAoXG4gIHN0YXRlOiBVaVN0YXRlLFxuICB7cGF5bG9hZDogdXNlck1hcGJveFRva2VufTogVUlTdGF0ZUFjdGlvbnMuU2V0VXNlck1hcGJveEFjY2Vzc1Rva2VuVXBkYXRlckFjdGlvblxuKTogVWlTdGF0ZSA9PiAoe1xuICAuLi5zdGF0ZSxcbiAgZXhwb3J0TWFwOiB7XG4gICAgLi4uc3RhdGUuZXhwb3J0TWFwLFxuICAgIFtFWFBPUlRfTUFQX0ZPUk1BVFMuSFRNTF06IHtcbiAgICAgIC4uLnN0YXRlLmV4cG9ydE1hcFtFWFBPUlRfTUFQX0ZPUk1BVFMuSFRNTF0sXG4gICAgICB1c2VyTWFwYm94VG9rZW5cbiAgICB9XG4gIH1cbn0pO1xuXG4vKipcbiAqIFNldHMgdGhlIGV4cG9ydCBtYXAgZm9ybWF0XG4gKiBAcGFyYW0gc3RhdGUgLSBgdWlTdGF0ZWBcbiAqIEBwYXJhbSBhY3Rpb25cbiAqIEBwYXJhbSBhY3Rpb24ucGF5bG9hZCBmb3JtYXQgdG8gdXNlIHRvIGV4cG9ydCB0aGUgbWFwIGludG9cbiAqIEByZXR1cm4gbmV4dFN0YXRlXG4gKi9cbmV4cG9ydCBjb25zdCBzZXRFeHBvcnRNYXBGb3JtYXRVcGRhdGVyID0gKFxuICBzdGF0ZTogVWlTdGF0ZSxcbiAge3BheWxvYWQ6IGZvcm1hdH06IFVJU3RhdGVBY3Rpb25zLlNldEV4cG9ydE1hcEZvcm1hdFVwZGF0ZXJBY3Rpb25cbik6IFVpU3RhdGUgPT4gKHtcbiAgLi4uc3RhdGUsXG4gIGV4cG9ydE1hcDoge1xuICAgIC4uLnN0YXRlLmV4cG9ydE1hcCxcbiAgICAvLyBAdHMtZXhwZWN0LWVycm9yXG4gICAgZm9ybWF0XG4gIH1cbn0pO1xuXG4vKipcbiAqIFNldCB0aGUgZmlsZW5hbWUgdXNlZCB3aGVuIGV4cG9ydGluZyBhbiBIVE1MIG9yIEpTT04gbWFwXG4gKiBAbWVtYmVyb2YgdWlTdGF0ZVVwZGF0ZXJzXG4gKiBAcGFyYW0gc3RhdGUgYHVpU3RhdGVgXG4gKiBAcGFyYW0gYWN0aW9uXG4gKiBAcGFyYW0gYWN0aW9uLnBheWxvYWQgZmlsZSBuYW1lIHdpdGhvdXQgZXh0ZW5zaW9uXG4gKiBAcmV0dXJucyBuZXh0U3RhdGVcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IHNldEV4cG9ydE1hcEZpbGVOYW1lVXBkYXRlciA9IChcbiAgc3RhdGU6IFVpU3RhdGUsXG4gIHtwYXlsb2FkOiBmaWxlTmFtZX06IFVJU3RhdGVBY3Rpb25zLlNldEV4cG9ydE1hcEZpbGVOYW1lVXBkYXRlckFjdGlvblxuKTogVWlTdGF0ZSA9PiAoe1xuICAuLi5zdGF0ZSxcbiAgZXhwb3J0TWFwOiB7XG4gICAgLi4uc3RhdGUuZXhwb3J0TWFwLFxuICAgIGZpbGVOYW1lXG4gIH1cbn0pO1xuXG4vKipcbiAqIFNldCB0aGUgZXhwb3J0IGh0bWwgbWFwIG1vZGVcbiAqIEBwYXJhbSBzdGF0ZSAtIGB1aVN0YXRlYFxuICogQHBhcmFtIGFjdGlvblxuICogQHBhcmFtIGFjdGlvbi5wYXlsb2FkIHRvIGJlIHNldCAoYXZhaWxhYmxlIG1vZGVzOiBFWFBPUlRfSFRNTF9NQVBfTU9ERVMpXG4gKiBAcmV0dXJuIG5leHRTdGF0ZVxuICovXG5leHBvcnQgY29uc3Qgc2V0RXhwb3J0TWFwSFRNTE1vZGVVcGRhdGVyID0gKFxuICBzdGF0ZTogVWlTdGF0ZSxcbiAge3BheWxvYWQ6IG1vZGV9OiBVSVN0YXRlQWN0aW9ucy5TZXRFeHBvcnRIVE1MTWFwTW9kZVVwZGF0ZXJBY3Rpb25cbik6IFVpU3RhdGUgPT4gKHtcbiAgLi4uc3RhdGUsXG4gIGV4cG9ydE1hcDoge1xuICAgIC4uLnN0YXRlLmV4cG9ydE1hcCxcbiAgICBbRVhQT1JUX01BUF9GT1JNQVRTLkhUTUxdOiB7XG4gICAgICAuLi5zdGF0ZS5leHBvcnRNYXBbRVhQT1JUX01BUF9GT1JNQVRTLkhUTUxdLFxuICAgICAgbW9kZVxuICAgIH1cbiAgfVxufSk7XG5cbi8qKlxuICogU2V0IGFwcGxpY2F0aW9uIGJyYW5kaW5nIG92ZXJyaWRlcyBmb3IgZXhwb3J0ZWQgbWFwcy5cbiAqIEBwYXJhbSBzdGF0ZSAtIGB1aVN0YXRlYFxuICogQHBhcmFtIGFjdGlvblxuICogQHBhcmFtIGFjdGlvbi5wYXlsb2FkIGFwcGxpY2F0aW9uIG5hbWUgYW5kL29yIHdlYnNpdGUgb3ZlcnJpZGVzXG4gKiBAcmV0dXJuIG5leHRTdGF0ZVxuICovXG5leHBvcnQgY29uc3Qgc2V0RXhwb3J0TWFwQnJhbmRpbmdVcGRhdGVyID0gKFxuICBzdGF0ZTogVWlTdGF0ZSxcbiAge3BheWxvYWR9OiBVSVN0YXRlQWN0aW9ucy5TZXRFeHBvcnRNYXBCcmFuZGluZ1VwZGF0ZXJBY3Rpb25cbik6IFVpU3RhdGUgPT4gKHtcbiAgLi4uc3RhdGUsXG4gIGV4cG9ydE1hcDoge1xuICAgIC4uLnN0YXRlLmV4cG9ydE1hcCxcbiAgICAuLi5wYXlsb2FkXG4gIH1cbn0pO1xuXG4vKipcbiAqIFdoZXRoZXIgdG8ga2VlcCBsYXllciBhY2Nlc3MgdG9rZW5zIGluIGV4cG9ydGVkIEhUTUwgYW5kIEpTT04gbWFwcy5cbiAqIEBwYXJhbSBzdGF0ZSAtIGB1aVN0YXRlYFxuICogQHBhcmFtIGFjdGlvblxuICogQHBhcmFtIGFjdGlvbi5wYXlsb2FkIC0gaW5jbHVkZSBsYXllciBBUEkga2V5c1xuICogQHJldHVybiBuZXh0U3RhdGVcbiAqL1xuZXhwb3J0IGNvbnN0IHNldEV4cG9ydEluY2x1ZGVMYXllckFwaUtleXNVcGRhdGVyID0gKFxuICBzdGF0ZTogVWlTdGF0ZSxcbiAge3BheWxvYWQ6IGluY2x1ZGVMYXllckFwaUtleXN9OiBVSVN0YXRlQWN0aW9ucy5TZXRFeHBvcnRJbmNsdWRlTGF5ZXJBcGlLZXlzVXBkYXRlckFjdGlvblxuKTogVWlTdGF0ZSA9PiAoe1xuICAuLi5zdGF0ZSxcbiAgZXhwb3J0TWFwOiB7XG4gICAgLi4uc3RhdGUuZXhwb3J0TWFwLFxuICAgIGluY2x1ZGVMYXllckFwaUtleXNcbiAgfVxufSk7XG5cbi8qKlxuICogQWRkcyBhIG5ldyBub3RpZmljYXRpb24uXG4gKiBVcGRhdGVzIGEgbm90aWZpY2F0aW9uIGluIGNhc2Ugb2YgbWF0Y2hpbmcgaWRzLlxuICogQG1lbWJlcm9mIHVpU3RhdGVVcGRhdGVyc1xuICogQHBhcmFtIHN0YXRlIGB1aVN0YXRlYFxuICogQHBhcmFtIGFjdGlvblxuICogQHBhcmFtIGFjdGlvbi5wYXlsb2FkIFBhcmFtcyBvZiBhIG5vdGlmaWNhdGlvblxuICogQHJldHVybnMgbmV4dFN0YXRlXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBhZGROb3RpZmljYXRpb25VcGRhdGVyID0gKFxuICBzdGF0ZTogVWlTdGF0ZSxcbiAge3BheWxvYWR9OiBVSVN0YXRlQWN0aW9ucy5BZGROb3RpZmljYXRpb25VcGRhdGVyQWN0aW9uXG4pOiBVaVN0YXRlID0+IHtcbiAgY29uc3Qgb2xkTm90aWZpY2F0aW9ucyA9IHN0YXRlLm5vdGlmaWNhdGlvbnMgfHwgW107XG4gIC8vIEB0cy1leHBlY3QtZXJyb3JcbiAgY29uc3QgcGF5bG9hZElkID0gcGF5bG9hZD8uaWQ7XG4gIGNvbnN0IG5vdGlmaWNhdGlvblRvVXBkYXRlID0gcGF5bG9hZElkID8gb2xkTm90aWZpY2F0aW9ucy5maW5kKG4gPT4gbi5pZCA9PT0gcGF5bG9hZElkKSA6IG51bGw7XG5cbiAgbGV0IG5vdGlmaWNhdGlvbnM7XG4gIGlmIChub3RpZmljYXRpb25Ub1VwZGF0ZSkge1xuICAgIG5vdGlmaWNhdGlvbnMgPSBvbGROb3RpZmljYXRpb25zLm1hcChuID0+XG4gICAgICBuLmlkID09PSBwYXlsb2FkSWQgPyBjcmVhdGVOb3RpZmljYXRpb24oey4uLnBheWxvYWQsIGNvdW50OiBuLmNvdW50ICsgMX0pIDogblxuICAgICk7XG4gIH0gZWxzZSB7XG4gICAgbm90aWZpY2F0aW9ucyA9IFsuLi5vbGROb3RpZmljYXRpb25zLCBjcmVhdGVOb3RpZmljYXRpb24ocGF5bG9hZCldO1xuICB9XG5cbiAgcmV0dXJuIHsuLi5zdGF0ZSwgbm90aWZpY2F0aW9uc307XG59O1xuXG4vKipcbiAqIFJlbW92ZSBhIG5vdGlmaWNhdGlvblxuICogQG1lbWJlcm9mIHVpU3RhdGVVcGRhdGVyc1xuICogQHBhcmFtIHN0YXRlIGB1aVN0YXRlYFxuICogQHBhcmFtIGFjdGlvblxuICogQHBhcmFtIGFjdGlvbi5wYXlsb2FkIGlkIG9mIHRoZSBub3RpZmljYXRpb24gdG8gYmUgcmVtb3ZlZFxuICogQHJldHVybnMgbmV4dFN0YXRlXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCByZW1vdmVOb3RpZmljYXRpb25VcGRhdGVyID0gKFxuICBzdGF0ZTogVWlTdGF0ZSxcbiAge3BheWxvYWQ6IGlkfTogVUlTdGF0ZUFjdGlvbnMuUmVtb3ZlTm90aWZpY2F0aW9uVXBkYXRlckFjdGlvblxuKTogVWlTdGF0ZSA9PiAoe1xuICAuLi5zdGF0ZSxcbiAgbm90aWZpY2F0aW9uczogc3RhdGUubm90aWZpY2F0aW9ucy5maWx0ZXIobiA9PiBuLmlkICE9PSBpZClcbn0pO1xuXG4vKipcbiAqIEZpcmVkIHdoZW4gZmlsZSBsb2FkaW5nIGJlZ2luXG4gKiBAbWVtYmVyb2YgdWlTdGF0ZVVwZGF0ZXJzXG4gKiBAcGFyYW0gc3RhdGUgYHVpU3RhdGVgXG4gKiBAcmV0dXJucyBuZXh0U3RhdGVcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IGxvYWRGaWxlc1VwZGF0ZXIgPSAoc3RhdGU6IFVpU3RhdGUpOiBVaVN0YXRlID0+ICh7XG4gIC4uLnN0YXRlLFxuICBsb2FkRmlsZXM6IHtcbiAgICAuLi5zdGF0ZS5sb2FkRmlsZXMsXG4gICAgZmlsZUxvYWRpbmc6IHRydWVcbiAgfVxufSk7XG5cbi8qKlxuICogSGFuZGxlcyBsb2FkaW5nIGZpbGUgc3VjY2VzcyBhbmQgc2V0IGZpbGVMb2FkaW5nIHByb3BlcnR5IHRvIGZhbHNlXG4gKiBAbWVtYmVyb2YgdWlTdGF0ZVVwZGF0ZXJzXG4gKiBAcGFyYW0gc3RhdGUgYHVpU3RhdGVgXG4gKiBAcmV0dXJucyBuZXh0U3RhdGVcbiAqL1xuZXhwb3J0IGNvbnN0IGxvYWRGaWxlc1N1Y2Nlc3NVcGRhdGVyID0gKHN0YXRlOiBVaVN0YXRlKTogVWlTdGF0ZSA9PiAoe1xuICAuLi5zdGF0ZSxcbiAgbG9hZEZpbGVzOiB7XG4gICAgLi4uc3RhdGUubG9hZEZpbGVzLFxuICAgIGZpbGVMb2FkaW5nOiBmYWxzZVxuICB9XG59KTtcblxuLyoqXG4gKiBIYW5kbGVzIGxvYWQgZmlsZSBlcnJvciBhbmQgc2V0IGZpbGVMb2FkaW5nIHByb3BlcnR5IHRvIGZhbHNlXG4gKiBAbWVtYmVyb2YgdWlTdGF0ZVVwZGF0ZXJzXG4gKiBAcGFyYW0gc3RhdGVcbiAqIEBwYXJhbSBhY3Rpb25cbiAqIEBwYXJhbSBhY3Rpb24uZXJyb3JcbiAqIEByZXR1cm5zIG5leHRTdGF0ZVxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgbG9hZEZpbGVzRXJyVXBkYXRlciA9IChzdGF0ZTogVWlTdGF0ZSwge2Vycm9yfTogTG9hZEZpbGVzRXJyVXBkYXRlckFjdGlvbik6IFVpU3RhdGUgPT5cbiAgYWRkTm90aWZpY2F0aW9uVXBkYXRlcihcbiAgICB7XG4gICAgICAuLi5zdGF0ZSxcbiAgICAgIGxvYWRGaWxlczoge1xuICAgICAgICAuLi5zdGF0ZS5sb2FkRmlsZXMsXG4gICAgICAgIGZpbGVMb2FkaW5nOiBmYWxzZVxuICAgICAgfVxuICAgIH0sXG4gICAge1xuICAgICAgcGF5bG9hZDogZXJyb3JOb3RpZmljYXRpb24oe1xuICAgICAgICBtZXNzYWdlOiAoZXJyb3IgfHwge30pLm1lc3NhZ2UgfHwgJ0ZhaWxlZCB0byB1cGxvYWQgZmlsZXMnLFxuICAgICAgICB0b3BpYzogREVGQVVMVF9OT1RJRklDQVRJT05fVE9QSUNTLmdsb2JhbFxuICAgICAgfSlcbiAgICB9XG4gICk7XG5cbi8qKlxuICogSGFuZGxlcyB0b2dnbGUgbWFwIHNwbGl0IGFuZCByZXNldCBhbGwgbWFwIGNvbnRyb2wgaW5kZXggdG8gMFxuICogQG1lbWJlcm9mIHVpU3RhdGVVcGRhdGVyc1xuICogQHBhcmFtIHN0YXRlXG4gKiBAcmV0dXJucyBuZXh0U3RhdGVcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IHRvZ2dsZVNwbGl0TWFwVXBkYXRlciA9IChzdGF0ZTogVWlTdGF0ZSk6IFVpU3RhdGUgPT4gKHtcbiAgLi4uc3RhdGUsXG4gIG1hcENvbnRyb2xzOiBPYmplY3QuZW50cmllcyhzdGF0ZS5tYXBDb250cm9scykucmVkdWNlKFxuICAgIChhY2MsIGVudHJ5KSA9PiAoe1xuICAgICAgLi4uYWNjLFxuICAgICAgW2VudHJ5WzBdXToge1xuICAgICAgICAuLi4oZW50cnlbMV0gYXMgTWFwQ29udHJvbEl0ZW0pLFxuICAgICAgICBhY3RpdmVNYXBJbmRleDogMFxuICAgICAgfVxuICAgIH0pLFxuICAgIHt9IGFzIE1hcENvbnRyb2xzXG4gIClcbn0pO1xuXG4vKipcbiAqIFRvZ2dsZSBtb2RhbCBkYXRhXG4gKiBAbWVtYmVyb2YgdWlTdGF0ZVVwZGF0ZXJzXG4gKiBAcGFyYW0gc3RhdGVcbiAqIEByZXR1cm5zIG5leHRTdGF0ZVxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3Qgc2hvd0RhdGFzZXRUYWJsZVVwZGF0ZXIgPSAoc3RhdGU6IFVpU3RhdGUpOiBVaVN0YXRlID0+XG4gIHRvZ2dsZU1vZGFsVXBkYXRlcihzdGF0ZSwge3BheWxvYWQ6IERBVEFfVEFCTEVfSUR9KTtcblxuLyoqXG4gKiBTZXQgdGhlIGxvY2FsZSBvZiB0aGUgVUlcbiAqIEBtZW1iZXJvZiB1aVN0YXRlVXBkYXRlcnNcbiAqIEBwYXJhbSBzdGF0ZSBgdWlTdGF0ZWBcbiAqIEBwYXJhbSBhY3Rpb25cbiAqIEBwYXJhbSBhY3Rpb24ucGF5bG9hZFxuICogQHBhcmFtIGFjdGlvbi5wYXlsb2FkLmxvY2FsZSBsb2NhbGVcbiAqIEByZXR1cm5zIG5leHRTdGF0ZVxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3Qgc2V0TG9jYWxlVXBkYXRlciA9IChcbiAgc3RhdGU6IFVpU3RhdGUsXG4gIHtwYXlsb2FkOiB7bG9jYWxlfX06IFVJU3RhdGVBY3Rpb25zLlNldExvY2FsZVVwZGF0ZXJBY3Rpb25cbik6IFVpU3RhdGUgPT4gKHtcbiAgLi4uc3RhdGUsXG4gIGxvY2FsZVxufSk7XG5cbi8qKlxuICogU2V0IHRoZSB0aGVtZSBvZiB0aGUgVUlcbiAqIEBtZW1iZXJvZiB1aVN0YXRlVXBkYXRlcnNcbiAqIEBwYXJhbSBzdGF0ZSBgdWlTdGF0ZWBcbiAqIEBwYXJhbSBhY3Rpb25cbiAqIEBwYXJhbSBhY3Rpb24ucGF5bG9hZFxuICogQHBhcmFtIGFjdGlvbi5wYXlsb2FkLnRoZW1lIHRoZW1lXG4gKiBAcmV0dXJucyBuZXh0U3RhdGVcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IHNldFRoZW1lVXBkYXRlciA9IChcbiAgc3RhdGU6IFVpU3RhdGUsXG4gIHtwYXlsb2FkOiB7dGhlbWV9fTogVUlTdGF0ZUFjdGlvbnMuU2V0VGhlbWVVcGRhdGVyQWN0aW9uXG4pOiBVaVN0YXRlID0+ICh7XG4gIC4uLnN0YXRlLFxuICB0aGVtZVxufSk7XG5cbi8qKlxuICogVG9nZ2xlIGxheWVyIHBhbmVsIGxpc3Qgdmlld1xuICogQG1lbWJlcm9mIHVpU3RhdGVVcGRhdGVyc1xuICogQHBhcmFtIHN0YXRlIGB1aVN0YXRlYFxuICogQHBhcmFtIGFjdGlvblxuICogQHBhcmFtIGFjdGlvbi5wYXlsb2FkIGxheWVyIHBhbmVsIGxpc3RWaWV3IHZhbHVlLiBDYW4gYmUgJ2xpc3QnIG9yICdzb3J0QnlEYXRhc2V0J1xuICogQHJldHVybnMgbmV4dFN0YXRlXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCB0b2dnbGVQYW5lbExpc3RWaWV3VXBkYXRlciA9IChcbiAgc3RhdGU6IFVpU3RhdGUsXG4gIHtwYXlsb2FkOiB7cGFuZWxJZCwgbGlzdFZpZXd9fTogVUlTdGF0ZUFjdGlvbnMuVG9nZ2xlUGFuZWxMaXN0Vmlld0FjdGlvblxuKTogVWlTdGF0ZSA9PiB7XG4gIGNvbnN0IHN0YXRlUHJvcCA9XG4gICAgcGFuZWxJZCA9PT0gJ2xheWVyJ1xuICAgICAgPyAnbGF5ZXJQYW5lbExpc3RWaWV3J1xuICAgICAgOiBwYW5lbElkID09PSAnZmlsdGVyJ1xuICAgICAgPyAnZmlsdGVyUGFuZWxMaXN0VmlldydcbiAgICAgIDogbnVsbDtcbiAgaWYgKCFzdGF0ZVByb3AgfHwgc3RhdGVbc3RhdGVQcm9wXSA9PT0gbGlzdFZpZXcpIHtcbiAgICByZXR1cm4gc3RhdGU7XG4gIH1cbiAgcmV0dXJuIHtcbiAgICAuLi5zdGF0ZSxcbiAgICBbc3RhdGVQcm9wXTogbGlzdFZpZXdcbiAgfTtcbn07XG5cbi8qKlxuICogTWVyZ2UgcmVjZWl2ZWQgdWkgc3RhdGUgY29uZmlnIHdoZW4gbG9hZGluZyBhIHNhdmVkIG1hcFxuICogQG1lbWJlcm9mIHVpU3RhdGVVcGRhdGVyc1xuICogQHBhcmFtIHN0YXRlIGB1aVN0YXRlYFxuICogQHBhcmFtIGFjdGlvblxuICogQHBhcmFtIGFjdGlvbi5wYXlsb2FkIHNhdmVkIG1hcCBjb25maWcgYHttYXBTdHlsZSwgdmlzU3RhdGUsIG1hcFN0YXRlLCB1aVN0YXRlfWBcbiAqIEByZXR1cm5zIG5leHRTdGF0ZVxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgcmVjZWl2ZU1hcENvbmZpZ1VwZGF0ZXIgPSAoXG4gIHN0YXRlOiBVaVN0YXRlLFxuICB7XG4gICAgcGF5bG9hZDoge2NvbmZpZ31cbiAgfToge1xuICAgIHR5cGU/OiAodHlwZW9mIEFjdGlvblR5cGVzKVsnUkVDRUlWRV9NQVBfQ09ORklHJ107XG4gICAgcGF5bG9hZDogUmVjZWl2ZU1hcENvbmZpZ1BheWxvYWQ7XG4gIH1cbik6IFVpU3RhdGUgPT4ge1xuICBjb25zdCB7dWlTdGF0ZX0gPSBjb25maWcgfHwge307XG4gIGlmICghdWlTdGF0ZSkge1xuICAgIHJldHVybiBzdGF0ZTtcbiAgfVxuXG4gIGxldCBuZXdTdGF0ZSA9IHN0YXRlO1xuXG4gIGlmICh1aVN0YXRlLm1hcENvbnRyb2xzPy5tYXBMZWdlbmQ/LmFjdGl2ZSkge1xuICAgIGNvbnN0IGN1cnJlbnRMZWdlbmQgPSBuZXdTdGF0ZS5tYXBDb250cm9scy5tYXBMZWdlbmQ7XG4gICAgbmV3U3RhdGUgPSB7XG4gICAgICAuLi5uZXdTdGF0ZSxcbiAgICAgIG1hcENvbnRyb2xzOiB7XG4gICAgICAgIC4uLm5ld1N0YXRlLm1hcENvbnRyb2xzLFxuICAgICAgICBtYXBMZWdlbmQ6IHtcbiAgICAgICAgICBzaG93OiB0cnVlLFxuICAgICAgICAgIC4uLmN1cnJlbnRMZWdlbmQsXG4gICAgICAgICAgYWN0aXZlOiB0cnVlLFxuICAgICAgICAgIGFjdGl2ZU1hcEluZGV4OiAwXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9O1xuICB9XG5cbiAgaWYgKHVpU3RhdGUubWFwQ29udHJvbHM/LmNoYXJ0Py5hY3RpdmUpIHtcbiAgICBjb25zdCBjdXJyZW50Q2hhcnQgPSBuZXdTdGF0ZS5tYXBDb250cm9scy5jaGFydDtcbiAgICBuZXdTdGF0ZSA9IHtcbiAgICAgIC4uLm5ld1N0YXRlLFxuICAgICAgbWFwQ29udHJvbHM6IHtcbiAgICAgICAgLi4ubmV3U3RhdGUubWFwQ29udHJvbHMsXG4gICAgICAgIGNoYXJ0OiB7XG4gICAgICAgICAgc2hvdzogdHJ1ZSxcbiAgICAgICAgICAuLi5jdXJyZW50Q2hhcnQsXG4gICAgICAgICAgYWN0aXZlOiB0cnVlLFxuICAgICAgICAgIGFjdGl2ZU1hcEluZGV4OiAwXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9O1xuICB9XG5cbiAgLy8gSG9ub3IgYW4gZXhwbGljaXQgY29sbGFwc2VkIG9yIGhpZGRlbiBzdGF0ZS4gQSBtaXNzaW5nIGtleSBrZWVwcyB0aGUgZGVmYXVsdCAoc2hvd24sIG9wZW4pLlxuICBjb25zdCBzYXZlZE1hcEluZm8gPSB1aVN0YXRlLm1hcENvbnRyb2xzPy5tYXBJbmZvO1xuICBjb25zdCBzYXZlZE1hcEluZm9BY3RpdmUgPSBzYXZlZE1hcEluZm8/LmFjdGl2ZTtcbiAgY29uc3Qgc2F2ZWRNYXBJbmZvU2hvdyA9IHNhdmVkTWFwSW5mbz8uc2hvdztcbiAgaWYgKHR5cGVvZiBzYXZlZE1hcEluZm9BY3RpdmUgPT09ICdib29sZWFuJyB8fCB0eXBlb2Ygc2F2ZWRNYXBJbmZvU2hvdyA9PT0gJ2Jvb2xlYW4nKSB7XG4gICAgY29uc3QgY3VycmVudE1hcEluZm8gPSBuZXdTdGF0ZS5tYXBDb250cm9scy5tYXBJbmZvO1xuICAgIG5ld1N0YXRlID0ge1xuICAgICAgLi4ubmV3U3RhdGUsXG4gICAgICBtYXBDb250cm9sczoge1xuICAgICAgICAuLi5uZXdTdGF0ZS5tYXBDb250cm9scyxcbiAgICAgICAgbWFwSW5mbzoge1xuICAgICAgICAgIHNob3c6IHRydWUsXG4gICAgICAgICAgYWN0aXZlOiB0cnVlLFxuICAgICAgICAgIC4uLmN1cnJlbnRNYXBJbmZvLFxuICAgICAgICAgIC4uLih0eXBlb2Ygc2F2ZWRNYXBJbmZvU2hvdyA9PT0gJ2Jvb2xlYW4nID8ge3Nob3c6IHNhdmVkTWFwSW5mb1Nob3d9IDoge30pLFxuICAgICAgICAgIC4uLih0eXBlb2Ygc2F2ZWRNYXBJbmZvQWN0aXZlID09PSAnYm9vbGVhbicgPyB7YWN0aXZlOiBzYXZlZE1hcEluZm9BY3RpdmV9IDoge30pLFxuICAgICAgICAgIGFjdGl2ZU1hcEluZGV4OiAwXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9O1xuICB9XG5cbiAgaWYgKHVpU3RhdGUubWFwQ29udHJvbHM/Lm1hcExlZ2VuZD8uc2V0dGluZ3MpIHtcbiAgICBuZXdTdGF0ZSA9IHNldE1hcENvbnRyb2xTZXR0aW5nc1VwZGF0ZXIobmV3U3RhdGUsIHtcbiAgICAgIHBheWxvYWQ6IHtwYW5lbElkOiAnbWFwTGVnZW5kJywgc2V0dGluZ3M6IHVpU3RhdGUubWFwQ29udHJvbHMubWFwTGVnZW5kLnNldHRpbmdzfVxuICAgIH0gYXMgVUlTdGF0ZUFjdGlvbnMuc2V0TWFwQ29udHJvbFNldHRpbmdzVXBkYXRlckFjdGlvbik7XG4gIH1cblxuICBpZiAodWlTdGF0ZS5sb2NhbGUpIHtcbiAgICBuZXdTdGF0ZSA9IHNldExvY2FsZVVwZGF0ZXIobmV3U3RhdGUsIHtcbiAgICAgIHBheWxvYWQ6IHtsb2NhbGU6IHVpU3RhdGUubG9jYWxlfVxuICAgIH0gYXMgVUlTdGF0ZUFjdGlvbnMuU2V0TG9jYWxlVXBkYXRlckFjdGlvbik7XG4gIH1cblxuICBpZiAodWlTdGF0ZS50aGVtZSkge1xuICAgIG5ld1N0YXRlID0gc2V0VGhlbWVVcGRhdGVyKG5ld1N0YXRlLCB7XG4gICAgICBwYXlsb2FkOiB7dGhlbWU6IHVpU3RhdGUudGhlbWV9XG4gICAgfSBhcyBVSVN0YXRlQWN0aW9ucy5TZXRUaGVtZVVwZGF0ZXJBY3Rpb24pO1xuICB9XG5cbiAgcmV0dXJuIG5ld1N0YXRlO1xufTtcbiJdLCJtYXBwaW5ncyI6Ijs7OztBQUFBO0FBQ0E7O0FBRUEsU0FDRUEsV0FBVyxFQUNYQyxhQUFhLEVBQ2JDLDJCQUEyQixFQUMzQkMsY0FBYyxFQUNkQyxnQkFBZ0IsRUFDaEJDLHFCQUFxQixFQUNyQkMsaUJBQWlCLEVBQ2pCQyxrQkFBa0IsRUFDbEJDLFdBQVcsRUFDWEMsWUFBWSxFQUNaQyxLQUFLLFFBQ0Esc0JBQXNCO0FBQzdCLFNBQVFDLFlBQVksUUFBTyx5QkFBeUI7QUFDcEQsU0FDRUMsa0JBQWtCLEVBQ2xCQyxpQkFBaUIsRUFDakJDLHdCQUF3QixFQUN4QkMsb0JBQW9CLEVBQ3BCQyxtQkFBbUIsRUFDbkJDLGlCQUFpQixRQUNaLGtCQUFrQjtBQUN6QixTQUFRQyxRQUFRLEVBQUVDLE1BQU0sRUFBRUMsUUFBUSxRQUFPLG9CQUFvQjtBQXNCN0QsT0FBTyxJQUFNQyx5QkFBeUIsR0FBRyxPQUFPO0FBQ2hELE9BQU8sSUFBTUMsYUFBYSxHQUFHdEIsV0FBVzs7QUFFeEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFD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
@@ -13,7 +13,7 @@ import * as uiStateUpdaters from './ui-state-updaters';
13
13
  * Important: Do not rename `actionHandler` or the assignment pattern of property value.
14
14
  * It is used to generate documentation
15
15
  */
16
- var actionHandler = (_actionHandler = {}, _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_actionHandler, ActionTypes.INIT, uiStateUpdaters.initUiStateUpdater), ActionTypes.TOGGLE_SIDE_PANEL, uiStateUpdaters.toggleSidePanelUpdater), ActionTypes.TOGGLE_MODAL, uiStateUpdaters.toggleModalUpdater), ActionTypes.SHOW_EXPORT_DROPDOWN, uiStateUpdaters.showExportDropdownUpdater), ActionTypes.HIDE_EXPORT_DROPDOWN, uiStateUpdaters.hideExportDropdownUpdater), ActionTypes.TOGGLE_SIDE_PANEL_CLOSE_BUTTON, uiStateUpdaters.toggleSidePanelCloseButtonUpdater), ActionTypes.OPEN_DELETE_MODAL, uiStateUpdaters.openDeleteModalUpdater), ActionTypes.OPEN_REPLACE_DATASET_MODAL, uiStateUpdaters.openReplaceDatasetModalUpdater), ActionTypes.TOGGLE_MAP_CONTROL, uiStateUpdaters.toggleMapControlUpdater), ActionTypes.SET_MAP_CONTROL_VISIBILITY, uiStateUpdaters.setMapControlVisibilityUpdater), _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_actionHandler, ActionTypes.SET_MAP_CONTROL_SETTINGS, uiStateUpdaters.setMapControlSettingsUpdater), ActionTypes.ADD_NOTIFICATION, uiStateUpdaters.addNotificationUpdater), ActionTypes.REMOVE_NOTIFICATION, uiStateUpdaters.removeNotificationUpdater), ActionTypes.SET_EXPORT_IMAGE_SETTING, uiStateUpdaters.setExportImageSettingUpdater), ActionTypes.SET_EXPORT_IMAGE_DATA_URI, uiStateUpdaters.setExportImageDataUriUpdater), ActionTypes.SET_EXPORT_IMAGE_ERROR, uiStateUpdaters.setExportImageErrorUpdater), ActionTypes.CLEANUP_EXPORT_IMAGE, uiStateUpdaters.cleanupExportImageUpdater), ActionTypes.START_EXPORTING_IMAGE, uiStateUpdaters.startExportingImageUpdater), ActionTypes.SET_EXPORT_VIDEO_SETTING, uiStateUpdaters.setExportVideoSettingUpdater), ActionTypes.SET_EXPORT_SELECTED_DATASET, uiStateUpdaters.setExportSelectedDatasetUpdater), _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_actionHandler, ActionTypes.SET_EXPORT_DATA_TYPE, uiStateUpdaters.setExportDataTypeUpdater), ActionTypes.SET_EXPORT_FILTERED, uiStateUpdaters.setExportFilteredUpdater), ActionTypes.SET_EXPORT_DATA, uiStateUpdaters.setExportDataUpdater), ActionTypes.SET_USER_MAPBOX_ACCESS_TOKEN, uiStateUpdaters.setUserMapboxAccessTokenUpdater), ActionTypes.SET_EXPORT_MAP_FORMAT, uiStateUpdaters.setExportMapFormatUpdater), ActionTypes.SET_EXPORT_MAP_HTML_MODE, uiStateUpdaters.setExportMapHTMLModeUpdater), ActionTypes.SET_EXPORT_MAP_FILE_NAME, uiStateUpdaters.setExportMapFileNameUpdater), ActionTypes.SET_EXPORT_INCLUDE_LAYER_API_KEYS, uiStateUpdaters.setExportIncludeLayerApiKeysUpdater), ActionTypes.LOAD_FILES, uiStateUpdaters.loadFilesUpdater), ActionTypes.LOAD_FILES_ERR, uiStateUpdaters.loadFilesErrUpdater), _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_actionHandler, ActionTypes.TOGGLE_SPLIT_MAP, uiStateUpdaters.toggleSplitMapUpdater), ActionTypes.SHOW_DATASET_TABLE, uiStateUpdaters.showDatasetTableUpdater), ActionTypes.SET_LOCALE, uiStateUpdaters.setLocaleUpdater), ActionTypes.SET_THEME, uiStateUpdaters.setThemeUpdater), ActionTypes.TOGGLE_PANEL_LIST_VIEW, uiStateUpdaters.togglePanelListViewUpdater), ActionTypes.RECEIVE_MAP_CONFIG, uiStateUpdaters.receiveMapConfigUpdater));
16
+ var actionHandler = (_actionHandler = {}, _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_actionHandler, ActionTypes.INIT, uiStateUpdaters.initUiStateUpdater), ActionTypes.TOGGLE_SIDE_PANEL, uiStateUpdaters.toggleSidePanelUpdater), ActionTypes.TOGGLE_MODAL, uiStateUpdaters.toggleModalUpdater), ActionTypes.SHOW_EXPORT_DROPDOWN, uiStateUpdaters.showExportDropdownUpdater), ActionTypes.HIDE_EXPORT_DROPDOWN, uiStateUpdaters.hideExportDropdownUpdater), ActionTypes.TOGGLE_SIDE_PANEL_CLOSE_BUTTON, uiStateUpdaters.toggleSidePanelCloseButtonUpdater), ActionTypes.OPEN_DELETE_MODAL, uiStateUpdaters.openDeleteModalUpdater), ActionTypes.OPEN_REPLACE_DATASET_MODAL, uiStateUpdaters.openReplaceDatasetModalUpdater), ActionTypes.TOGGLE_MAP_CONTROL, uiStateUpdaters.toggleMapControlUpdater), ActionTypes.SET_MAP_CONTROL_VISIBILITY, uiStateUpdaters.setMapControlVisibilityUpdater), _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_actionHandler, ActionTypes.SET_MAP_CONTROL_SETTINGS, uiStateUpdaters.setMapControlSettingsUpdater), ActionTypes.ADD_NOTIFICATION, uiStateUpdaters.addNotificationUpdater), ActionTypes.REMOVE_NOTIFICATION, uiStateUpdaters.removeNotificationUpdater), ActionTypes.SET_EXPORT_IMAGE_SETTING, uiStateUpdaters.setExportImageSettingUpdater), ActionTypes.SET_EXPORT_IMAGE_DATA_URI, uiStateUpdaters.setExportImageDataUriUpdater), ActionTypes.SET_EXPORT_IMAGE_ERROR, uiStateUpdaters.setExportImageErrorUpdater), ActionTypes.CLEANUP_EXPORT_IMAGE, uiStateUpdaters.cleanupExportImageUpdater), ActionTypes.START_EXPORTING_IMAGE, uiStateUpdaters.startExportingImageUpdater), ActionTypes.SET_EXPORT_VIDEO_SETTING, uiStateUpdaters.setExportVideoSettingUpdater), ActionTypes.SET_EXPORT_SELECTED_DATASET, uiStateUpdaters.setExportSelectedDatasetUpdater), _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_actionHandler, ActionTypes.SET_EXPORT_DATA_TYPE, uiStateUpdaters.setExportDataTypeUpdater), ActionTypes.SET_EXPORT_FILTERED, uiStateUpdaters.setExportFilteredUpdater), ActionTypes.SET_EXPORT_DATA, uiStateUpdaters.setExportDataUpdater), ActionTypes.SET_USER_MAPBOX_ACCESS_TOKEN, uiStateUpdaters.setUserMapboxAccessTokenUpdater), ActionTypes.SET_EXPORT_MAP_FORMAT, uiStateUpdaters.setExportMapFormatUpdater), ActionTypes.SET_EXPORT_MAP_HTML_MODE, uiStateUpdaters.setExportMapHTMLModeUpdater), ActionTypes.SET_EXPORT_MAP_BRANDING, uiStateUpdaters.setExportMapBrandingUpdater), ActionTypes.SET_EXPORT_MAP_FILE_NAME, uiStateUpdaters.setExportMapFileNameUpdater), ActionTypes.SET_EXPORT_INCLUDE_LAYER_API_KEYS, uiStateUpdaters.setExportIncludeLayerApiKeysUpdater), ActionTypes.LOAD_FILES, uiStateUpdaters.loadFilesUpdater), _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_actionHandler, ActionTypes.LOAD_FILES_ERR, uiStateUpdaters.loadFilesErrUpdater), ActionTypes.TOGGLE_SPLIT_MAP, uiStateUpdaters.toggleSplitMapUpdater), ActionTypes.SHOW_DATASET_TABLE, uiStateUpdaters.showDatasetTableUpdater), ActionTypes.SET_LOCALE, uiStateUpdaters.setLocaleUpdater), ActionTypes.SET_THEME, uiStateUpdaters.setThemeUpdater), ActionTypes.TOGGLE_PANEL_LIST_VIEW, uiStateUpdaters.togglePanelListViewUpdater), ActionTypes.RECEIVE_MAP_CONFIG, uiStateUpdaters.receiveMapConfigUpdater));
17
17
 
18
18
  /* Reducer */
19
19
  export var uiStateReducerFactory = function uiStateReducerFactory() {
@@ -27,4 +27,4 @@ export var uiStateReducerFactory = function uiStateReducerFactory() {
27
27
  );
28
28
  };
29
29
  export default uiStateReducerFactory();
30
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJoYW5kbGVBY3Rpb25zIiwiQWN0aW9uVHlwZXMiLCJ1aVN0YXRlVXBkYXRlcnMiLCJhY3Rpb25IYW5kbGVyIiwiX2FjdGlvbkhhbmRsZXIiLCJfZGVmaW5lUHJvcGVydHkiLCJJTklUIiwiaW5pdFVpU3RhdGVVcGRhdGVyIiwiVE9HR0xFX1NJREVfUEFORUwiLCJ0b2dnbGVTaWRlUGFuZWxVcGRhdGVyIiwiVE9HR0xFX01PREFMIiwidG9nZ2xlTW9kYWxVcGRhdGVyIiwiU0hPV19FWFBPUlRfRFJPUERPV04iLCJzaG93RXhwb3J0RHJvcGRvd25VcGRhdGVyIiwiSElERV9FWFBPUlRfRFJPUERPV04iLCJoaWRlRXhwb3J0RHJvcGRvd25VcGRhdGVyIiwiVE9HR0xFX1NJREVfUEFORUxfQ0xPU0VfQlVUVE9OIiwidG9nZ2xlU2lkZVBhbmVsQ2xvc2VCdXR0b25VcGRhdGVyIiwiT1BFTl9ERUxFVEVfTU9EQUwiLCJvcGVuRGVsZXRlTW9kYWxVcGRhdGVyIiwiT1BFTl9SRVBMQUNFX0RBVEFTRVRfTU9EQUwiLCJvcGVuUmVwbGFjZURhdGFzZXRNb2RhbFVwZGF0ZXIiLCJUT0dHTEVfTUFQX0NPTlRST0wiLCJ0b2dnbGVNYXBDb250cm9sVXBkYXRlciIsIlNFVF9NQVBfQ09OVFJPTF9WSVNJQklMSVRZIiwic2V0TWFwQ29udHJvbFZpc2liaWxpdHlVcGRhdGVyIiwiU0VUX01BUF9DT05UUk9MX1NFVFRJTkdTIiwic2V0TWFwQ29udHJvbFNldHRpbmdzVXBkYXRlciIsIkFERF9OT1RJRklDQVRJT04iLCJhZGROb3RpZmljYXRpb25VcGRhdGVyIiwiUkVNT1ZFX05PVElGSUNBVElPTiIsInJlbW92ZU5vdGlmaWNhdGlvblVwZGF0ZXIiLCJTRVRfRVhQT1JUX0lNQUdFX1NFVFRJTkciLCJzZXRFeHBvcnRJbWFnZVNldHRpbmdVcGRhdGVyIiwiU0VUX0VYUE9SVF9JTUFHRV9EQVRBX1VSSSIsInNldEV4cG9ydEltYWdlRGF0YVVyaVVwZGF0ZXIiLCJTRVRfRVhQT1JUX0lNQUdFX0VSUk9SIiwic2V0RXhwb3J0SW1hZ2VFcnJvclVwZGF0ZXIiLCJDTEVBTlVQX0VYUE9SVF9JTUFHRSIsImNsZWFudXBFeHBvcnRJbWFnZVVwZGF0ZXIiLCJTVEFSVF9FWFBPUlRJTkdfSU1BR0UiLCJzdGFydEV4cG9ydGluZ0ltYWdlVXBkYXRlciIsIlNFVF9FWFBPUlRfVklERU9fU0VUVElORyIsInNldEV4cG9ydFZpZGVvU2V0dGluZ1VwZGF0ZXIiLCJTRVRfRVhQT1JUX1NFTEVDVEVEX0RBVEFTRVQiLCJzZXRFeHBvcnRTZWxlY3RlZERhdGFzZXRVcGRhdGVyIiwiU0VUX0VYUE9SVF9EQVRBX1RZUEUiLCJzZXRFeHBvcnREYXRhVHlwZVVwZGF0ZXIiLCJTRVRfRVhQT1JUX0ZJTFRFUkVEIiwic2V0RXhwb3J0RmlsdGVyZWRVcGRhdGVyIiwiU0VUX0VYUE9SVF9EQVRBIiwic2V0RXhwb3J0RGF0YVVwZGF0ZXIiLCJTRVRfVVNFUl9NQVBCT1hfQUNDRVNTX1RPS0VOIiwic2V0VXNlck1hcGJveEFjY2Vzc1Rva2VuVXBkYXRlciIsIlNFVF9FWFBPUlRfTUFQX0ZPUk1BVCIsInNldEV4cG9ydE1hcEZvcm1hdFVwZGF0ZXIiLCJTRVRfRVhQT1JUX01BUF9IVE1MX01PREUiLCJzZXRFeHBvcnRNYXBIVE1MTW9kZVVwZGF0ZXIiLCJTRVRfRVhQT1JUX01BUF9GSUxFX05BTUUiLCJzZXRFeHBvcnRNYXBGaWxlTmFtZVVwZGF0ZXIiLCJTRVRfRVhQT1JUX0lOQ0xVREVfTEFZRVJfQVBJX0tFWVMiLCJzZXRFeHBvcnRJbmNsdWRlTGF5ZXJBcGlLZXlzVXBkYXRlciIsIkxPQURfRklMRVMiLCJsb2FkRmlsZXNVcGRhdGVyIiwiTE9BRF9GSUxFU19FUlIiLCJsb2FkRmlsZXNFcnJVcGRhdGVyIiwiVE9HR0xFX1NQTElUX01BUCIsInRvZ2dsZVNwbGl0TWFwVXBkYXRlciIsIlNIT1dfREFUQVNFVF9UQUJMRSIsInNob3dEYXRhc2V0VGFibGVVcGRhdGVyIiwiU0VUX0xPQ0FMRSIsInNldExvY2FsZVVwZGF0ZXIiLCJTRVRfVEhFTUUiLCJzZXRUaGVtZVVwZGF0ZXIiLCJUT0dHTEVfUEFORUxfTElTVF9WSUVXIiwidG9nZ2xlUGFuZWxMaXN0Vmlld1VwZGF0ZXIiLCJSRUNFSVZFX01BUF9DT05GSUciLCJyZWNlaXZlTWFwQ29uZmlnVXBkYXRlciIsInVpU3RhdGVSZWR1Y2VyRmFjdG9yeSIsImluaXRpYWxTdGF0ZSIsImFyZ3VtZW50cyIsImxlbmd0aCIsInVuZGVmaW5lZCIsIl9vYmplY3RTcHJlYWQiLCJJTklUSUFMX1VJX1NUQVRFIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3VpLXN0YXRlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVRcbi8vIENvcHlyaWdodCBjb250cmlidXRvcnMgdG8gdGhlIGtlcGxlci5nbCBwcm9qZWN0XG5cbmltcG9ydCB7aGFuZGxlQWN0aW9uc30gZnJvbSAncmVkdXgtYWN0aW9ucyc7XG5pbXBvcnQge0FjdGlvblR5cGVzfSBmcm9tICdAa2VwbGVyLmdsL2FjdGlvbnMnO1xuaW1wb3J0ICogYXMgdWlTdGF0ZVVwZGF0ZXJzIGZyb20gJy4vdWktc3RhdGUtdXBkYXRlcnMnO1xuXG4vKipcbiAqIEltcG9ydGFudDogRG8gbm90IHJlbmFtZSBgYWN0aW9uSGFuZGxlcmAgb3IgdGhlIGFzc2lnbm1lbnQgcGF0dGVybiBvZiBwcm9wZXJ0eSB2YWx1ZS5cbiAqIEl0IGlzIHVzZWQgdG8gZ2VuZXJhdGUgZG9jdW1lbnRhdGlvblxuICovXG5jb25zdCBhY3Rpb25IYW5kbGVyID0ge1xuICBbQWN0aW9uVHlwZXMuSU5JVF06IHVpU3RhdGVVcGRhdGVycy5pbml0VWlTdGF0ZVVwZGF0ZXIsXG4gIFtBY3Rpb25UeXBlcy5UT0dHTEVfU0lERV9QQU5FTF06IHVpU3RhdGVVcGRhdGVycy50b2dnbGVTaWRlUGFuZWxVcGRhdGVyLFxuICBbQWN0aW9uVHlwZXMuVE9HR0xFX01PREFMXTogdWlTdGF0ZVVwZGF0ZXJzLnRvZ2dsZU1vZGFsVXBkYXRlcixcbiAgW0FjdGlvblR5cGVzLlNIT1dfRVhQT1JUX0RST1BET1dOXTogdWlTdGF0ZVVwZGF0ZXJzLnNob3dFeHBvcnREcm9wZG93blVwZGF0ZXIsXG4gIFtBY3Rpb25UeXBlcy5ISURFX0VYUE9SVF9EUk9QRE9XTl06IHVpU3RhdGVVcGRhdGVycy5oaWRlRXhwb3J0RHJvcGRvd25VcGRhdGVyLFxuICBbQWN0aW9uVHlwZXMuVE9HR0xFX1NJREVfUEFORUxfQ0xPU0VfQlVUVE9OXTogdWlTdGF0ZVVwZGF0ZXJzLnRvZ2dsZVNpZGVQYW5lbENsb3NlQnV0dG9uVXBkYXRlcixcbiAgW0FjdGlvblR5cGVzLk9QRU5fREVMRVRFX01PREFMXTogdWlTdGF0ZVVwZGF0ZXJzLm9wZW5EZWxldGVNb2RhbFVwZGF0ZXIsXG4gIFtBY3Rpb25UeXBlcy5PUEVOX1JFUExBQ0VfREFUQVNFVF9NT0RBTF06IHVpU3RhdGVVcGRhdGVycy5vcGVuUmVwbGFjZURhdGFzZXRNb2RhbFVwZGF0ZXIsXG4gIFtBY3Rpb25UeXBlcy5UT0dHTEVfTUFQX0NPTlRST0xdOiB1aVN0YXRlVXBkYXRlcnMudG9nZ2xlTWFwQ29udHJvbFVwZGF0ZXIsXG4gIFtBY3Rpb25UeXBlcy5TRVRfTUFQX0NPTlRST0xfVklTSUJJTElUWV06IHVpU3RhdGVVcGRhdGVycy5zZXRNYXBDb250cm9sVmlzaWJpbGl0eVVwZGF0ZXIsXG4gIFtBY3Rpb25UeXBlcy5TRVRfTUFQX0NPTlRST0xfU0VUVElOR1NdOiB1aVN0YXRlVXBkYXRlcnMuc2V0TWFwQ29udHJvbFNldHRpbmdzVXBkYXRlcixcbiAgW0FjdGlvblR5cGVzLkFERF9OT1RJRklDQVRJT05dOiB1aVN0YXRlVXBkYXRlcnMuYWRkTm90aWZpY2F0aW9uVXBkYXRlcixcbiAgW0FjdGlvblR5cGVzLlJFTU9WRV9OT1RJRklDQVRJT05dOiB1aVN0YXRlVXBkYXRlcnMucmVtb3ZlTm90aWZpY2F0aW9uVXBkYXRlcixcblxuICBbQWN0aW9uVHlwZXMuU0VUX0VYUE9SVF9JTUFHRV9TRVRUSU5HXTogdWlTdGF0ZVVwZGF0ZXJzLnNldEV4cG9ydEltYWdlU2V0dGluZ1VwZGF0ZXIsXG4gIFtBY3Rpb25UeXBlcy5TRVRfRVhQT1JUX0lNQUdFX0RBVEFfVVJJXTogdWlTdGF0ZVVwZGF0ZXJzLnNldEV4cG9ydEltYWdlRGF0YVVyaVVwZGF0ZXIsXG4gIFtBY3Rpb25UeXBlcy5TRVRfRVhQT1JUX0lNQUdFX0VSUk9SXTogdWlTdGF0ZVVwZGF0ZXJzLnNldEV4cG9ydEltYWdlRXJyb3JVcGRhdGVyLFxuICBbQWN0aW9uVHlwZXMuQ0xFQU5VUF9FWFBPUlRfSU1BR0VdOiB1aVN0YXRlVXBkYXRlcnMuY2xlYW51cEV4cG9ydEltYWdlVXBkYXRlcixcbiAgW0FjdGlvblR5cGVzLlNUQVJUX0VYUE9SVElOR19JTUFHRV06IHVpU3RhdGVVcGRhdGVycy5zdGFydEV4cG9ydGluZ0ltYWdlVXBkYXRlcixcblxuICBbQWN0aW9uVHlwZXMuU0VUX0VYUE9SVF9WSURFT19TRVRUSU5HXTogdWlTdGF0ZVVwZGF0ZXJzLnNldEV4cG9ydFZpZGVvU2V0dGluZ1VwZGF0ZXIsXG5cbiAgW0FjdGlvblR5cGVzLlNFVF9FWFBPUlRfU0VMRUNURURfREFUQVNFVF06IHVpU3RhdGVVcGRhdGVycy5zZXRFeHBvcnRTZWxlY3RlZERhdGFzZXRVcGRhdGVyLFxuICBbQWN0aW9uVHlwZXMuU0VUX0VYUE9SVF9EQVRBX1RZUEVdOiB1aVN0YXRlVXBkYXRlcnMuc2V0RXhwb3J0RGF0YVR5cGVVcGRhdGVyLFxuICBbQWN0aW9uVHlwZXMuU0VUX0VYUE9SVF9GSUxURVJFRF06IHVpU3RhdGVVcGRhdGVycy5zZXRFeHBvcnRGaWx0ZXJlZFVwZGF0ZXIsXG4gIFtBY3Rpb25UeXBlcy5TRVRfRVhQT1JUX0RBVEFdOiB1aVN0YXRlVXBkYXRlcnMuc2V0RXhwb3J0RGF0YVVwZGF0ZXIsXG4gIFtBY3Rpb25UeXBlcy5TRVRfVVNFUl9NQVBCT1hfQUNDRVNTX1RPS0VOXTogdWlTdGF0ZVVwZGF0ZXJzLnNldFVzZXJNYXBib3hBY2Nlc3NUb2tlblVwZGF0ZXIsXG5cbiAgW0FjdGlvblR5cGVzLlNFVF9FWFBPUlRfTUFQX0ZPUk1BVF06IHVpU3RhdGVVcGRhdGVycy5zZXRFeHBvcnRNYXBGb3JtYXRVcGRhdGVyLFxuXG4gIFtBY3Rpb25UeXBlcy5TRVRfRVhQT1JUX01BUF9IVE1MX01PREVdOiB1aVN0YXRlVXBkYXRlcnMuc2V0RXhwb3J0TWFwSFRNTE1vZGVVcGRhdGVyLFxuICBbQWN0aW9uVHlwZXMuU0VUX0VYUE9SVF9NQVBfRklMRV9OQU1FXTogdWlTdGF0ZVVwZGF0ZXJzLnNldEV4cG9ydE1hcEZpbGVOYW1lVXBkYXRlcixcbiAgW0FjdGlvblR5cGVzLlNFVF9FWFBPUlRfSU5DTFVERV9MQVlFUl9BUElfS0VZU106XG4gICAgdWlTdGF0ZVVwZGF0ZXJzLnNldEV4cG9ydEluY2x1ZGVMYXllckFwaUtleXNVcGRhdGVyLFxuICBbQWN0aW9uVHlwZXMuTE9BRF9GSUxFU106IHVpU3RhdGVVcGRhdGVycy5sb2FkRmlsZXNVcGRhdGVyLFxuICBbQWN0aW9uVHlwZXMuTE9BRF9GSUxFU19FUlJdOiB1aVN0YXRlVXBkYXRlcnMubG9hZEZpbGVzRXJyVXBkYXRlcixcblxuICBbQWN0aW9uVHlwZXMuVE9HR0xFX1NQTElUX01BUF06IHVpU3RhdGVVcGRhdGVycy50b2dnbGVTcGxpdE1hcFVwZGF0ZXIsXG4gIFtBY3Rpb25UeXBlcy5TSE9XX0RBVEFTRVRfVEFCTEVdOiB1aVN0YXRlVXBkYXRlcnMuc2hvd0RhdGFzZXRUYWJsZVVwZGF0ZXIsXG4gIFtBY3Rpb25UeXBlcy5TRVRfTE9DQUxFXTogdWlTdGF0ZVVwZGF0ZXJzLnNldExvY2FsZVVwZGF0ZXIsXG4gIFtBY3Rpb25UeXBlcy5TRVRfVEhFTUVdOiB1aVN0YXRlVXBkYXRlcnMuc2V0VGhlbWVVcGRhdGVyLFxuICBbQWN0aW9uVHlwZXMuVE9HR0xFX1BBTkVMX0xJU1RfVklFV106IHVpU3RhdGVVcGRhdGVycy50b2dnbGVQYW5lbExpc3RWaWV3VXBkYXRlcixcbiAgW0FjdGlvblR5cGVzLlJFQ0VJVkVfTUFQX0NPTkZJR106IHVpU3RhdGVVcGRhdGVycy5yZWNlaXZlTWFwQ29uZmlnVXBkYXRlclxufTtcblxuLyogUmVkdWNlciAqL1xuZXhwb3J0IGNvbnN0IHVpU3RhdGVSZWR1Y2VyRmFjdG9yeSA9IChpbml0aWFsU3RhdGUgPSB7fSkgPT5cbiAgLy8gQHRzLWV4cGVjdC1lcnJvclxuICBoYW5kbGVBY3Rpb25zKGFjdGlvbkhhbmRsZXIsIHtcbiAgICAuLi51aVN0YXRlVXBkYXRlcnMuSU5JVElBTF9VSV9TVEFURSxcbiAgICAuLi5pbml0aWFsU3RhdGUsXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIGluaXRpYWxTdGF0ZVxuICB9KTtcblxuZXhwb3J0IGRlZmF1bHQgdWlTdGF0ZVJlZHVjZXJGYWN0b3J5KCk7XG4iXSwibWFwcGluZ3MiOiI7Ozs7QUFBQTtBQUNBOztBQUVBLFNBQVFBLGFBQWEsUUFBTyxlQUFlO0FBQzNDLFNBQVFDLFdBQVcsUUFBTyxvQkFBb0I7QUFDOUMsT0FBTyxLQUFLQyxlQUFlLE1BQU0scUJBQXFCOztBQUV0RDtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQU1DLGFBQWEsSUFBQUMsY0FBQSxPQUFBQyxlQUFBLENBQUFBLGVBQUEsQ0FBQUEsZUFBQSxDQUFBQSxlQUFBLENBQUFBLGVBQUEsQ0FBQUEsZUFBQSxDQUFBQSxlQUFBLENBQUFBLGVBQUEsQ0FBQUEsZUFBQSxDQUFBQSxlQUFBLENBQUFELGNBQUEsRUFDaEJILFdBQVcsQ0FBQ0ssSUFBSSxFQUFHSixlQUFlLENBQUNLLGtCQUFrQixHQUNyRE4sV0FBVyxDQUFDTyxpQkFBaUIsRUFBR04sZUFBZSxDQUFDTyxzQkFBc0IsR0FDdEVSLFdBQVcsQ0FBQ1MsWUFBWSxFQUFHUixlQUFlLENBQUNTLGtCQUFrQixHQUM3RFYsV0FBVyxDQUFDVyxvQkFBb0IsRUFBR1YsZUFBZSxDQUFDVyx5QkFBeUIsR0FDNUVaLFdBQVcsQ0FBQ2Esb0JBQW9CLEVBQUdaLGVBQWUsQ0FBQ2EseUJBQXlCLEdBQzVFZCxXQUFXLENBQUNlLDhCQUE4QixFQUFH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
30
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJoYW5kbGVBY3Rpb25zIiwiQWN0aW9uVHlwZXMiLCJ1aVN0YXRlVXBkYXRlcnMiLCJhY3Rpb25IYW5kbGVyIiwiX2FjdGlvbkhhbmRsZXIiLCJfZGVmaW5lUHJvcGVydHkiLCJJTklUIiwiaW5pdFVpU3RhdGVVcGRhdGVyIiwiVE9HR0xFX1NJREVfUEFORUwiLCJ0b2dnbGVTaWRlUGFuZWxVcGRhdGVyIiwiVE9HR0xFX01PREFMIiwidG9nZ2xlTW9kYWxVcGRhdGVyIiwiU0hPV19FWFBPUlRfRFJPUERPV04iLCJzaG93RXhwb3J0RHJvcGRvd25VcGRhdGVyIiwiSElERV9FWFBPUlRfRFJPUERPV04iLCJoaWRlRXhwb3J0RHJvcGRvd25VcGRhdGVyIiwiVE9HR0xFX1NJREVfUEFORUxfQ0xPU0VfQlVUVE9OIiwidG9nZ2xlU2lkZVBhbmVsQ2xvc2VCdXR0b25VcGRhdGVyIiwiT1BFTl9ERUxFVEVfTU9EQUwiLCJvcGVuRGVsZXRlTW9kYWxVcGRhdGVyIiwiT1BFTl9SRVBMQUNFX0RBVEFTRVRfTU9EQUwiLCJvcGVuUmVwbGFjZURhdGFzZXRNb2RhbFVwZGF0ZXIiLCJUT0dHTEVfTUFQX0NPTlRST0wiLCJ0b2dnbGVNYXBDb250cm9sVXBkYXRlciIsIlNFVF9NQVBfQ09OVFJPTF9WSVNJQklMSVRZIiwic2V0TWFwQ29udHJvbFZpc2liaWxpdHlVcGRhdGVyIiwiU0VUX01BUF9DT05UUk9MX1NFVFRJTkdTIiwic2V0TWFwQ29udHJvbFNldHRpbmdzVXBkYXRlciIsIkFERF9OT1RJRklDQVRJT04iLCJhZGROb3RpZmljYXRpb25VcGRhdGVyIiwiUkVNT1ZFX05PVElGSUNBVElPTiIsInJlbW92ZU5vdGlmaWNhdGlvblVwZGF0ZXIiLCJTRVRfRVhQT1JUX0lNQUdFX1NFVFRJTkciLCJzZXRFeHBvcnRJbWFnZVNldHRpbmdVcGRhdGVyIiwiU0VUX0VYUE9SVF9JTUFHRV9EQVRBX1VSSSIsInNldEV4cG9ydEltYWdlRGF0YVVyaVVwZGF0ZXIiLCJTRVRfRVhQT1JUX0lNQUdFX0VSUk9SIiwic2V0RXhwb3J0SW1hZ2VFcnJvclVwZGF0ZXIiLCJDTEVBTlVQX0VYUE9SVF9JTUFHRSIsImNsZWFudXBFeHBvcnRJbWFnZVVwZGF0ZXIiLCJTVEFSVF9FWFBPUlRJTkdfSU1BR0UiLCJzdGFydEV4cG9ydGluZ0ltYWdlVXBkYXRlciIsIlNFVF9FWFBPUlRfVklERU9fU0VUVElORyIsInNldEV4cG9ydFZpZGVvU2V0dGluZ1VwZGF0ZXIiLCJTRVRfRVhQT1JUX1NFTEVDVEVEX0RBVEFTRVQiLCJzZXRFeHBvcnRTZWxlY3RlZERhdGFzZXRVcGRhdGVyIiwiU0VUX0VYUE9SVF9EQVRBX1RZUEUiLCJzZXRFeHBvcnREYXRhVHlwZVVwZGF0ZXIiLCJTRVRfRVhQT1JUX0ZJTFRFUkVEIiwic2V0RXhwb3J0RmlsdGVyZWRVcGRhdGVyIiwiU0VUX0VYUE9SVF9EQVRBIiwic2V0RXhwb3J0RGF0YVVwZGF0ZXIiLCJTRVRfVVNFUl9NQVBCT1hfQUNDRVNTX1RPS0VOIiwic2V0VXNlck1hcGJveEFjY2Vzc1Rva2VuVXBkYXRlciIsIlNFVF9FWFBPUlRfTUFQX0ZPUk1BVCIsInNldEV4cG9ydE1hcEZvcm1hdFVwZGF0ZXIiLCJTRVRfRVhQT1JUX01BUF9IVE1MX01PREUiLCJzZXRFeHBvcnRNYXBIVE1MTW9kZVVwZGF0ZXIiLCJTRVRfRVhQT1JUX01BUF9CUkFORElORyIsInNldEV4cG9ydE1hcEJyYW5kaW5nVXBkYXRlciIsIlNFVF9FWFBPUlRfTUFQX0ZJTEVfTkFNRSIsInNldEV4cG9ydE1hcEZpbGVOYW1lVXBkYXRlciIsIlNFVF9FWFBPUlRfSU5DTFVERV9MQVlFUl9BUElfS0VZUyIsInNldEV4cG9ydEluY2x1ZGVMYXllckFwaUtleXNVcGRhdGVyIiwiTE9BRF9GSUxFUyIsImxvYWRGaWxlc1VwZGF0ZXIiLCJMT0FEX0ZJTEVTX0VSUiIsImxvYWRGaWxlc0VyclVwZGF0ZXIiLCJUT0dHTEVfU1BMSVRfTUFQIiwidG9nZ2xlU3BsaXRNYXBVcGRhdGVyIiwiU0hPV19EQVRBU0VUX1RBQkxFIiwic2hvd0RhdGFzZXRUYWJsZVVwZGF0ZXIiLCJTRVRfTE9DQUxFIiwic2V0TG9jYWxlVXBkYXRlciIsIlNFVF9USEVNRSIsInNldFRoZW1lVXBkYXRlciIsIlRPR0dMRV9QQU5FTF9MSVNUX1ZJRVciLCJ0b2dnbGVQYW5lbExpc3RWaWV3VXBkYXRlciIsIlJFQ0VJVkVfTUFQX0NPTkZJRyIsInJlY2VpdmVNYXBDb25maWdVcGRhdGVyIiwidWlTdGF0ZVJlZHVjZXJGYWN0b3J5IiwiaW5pdGlhbFN0YXRlIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwidW5kZWZpbmVkIiwiX29iamVjdFNwcmVhZCIsIklOSVRJQUxfVUlfU1RBVEUiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvdWktc3RhdGUudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVFxuLy8gQ29weXJpZ2h0IGNvbnRyaWJ1dG9ycyB0byB0aGUga2VwbGVyLmdsIHByb2plY3RcblxuaW1wb3J0IHtoYW5kbGVBY3Rpb25zfSBmcm9tICdyZWR1eC1hY3Rpb25zJztcbmltcG9ydCB7QWN0aW9uVHlwZXN9IGZyb20gJ0BrZXBsZXIuZ2wvYWN0aW9ucyc7XG5pbXBvcnQgKiBhcyB1aVN0YXRlVXBkYXRlcnMgZnJvbSAnLi91aS1zdGF0ZS11cGRhdGVycyc7XG5cbi8qKlxuICogSW1wb3J0YW50OiBEbyBub3QgcmVuYW1lIGBhY3Rpb25IYW5kbGVyYCBvciB0aGUgYXNzaWdubWVudCBwYXR0ZXJuIG9mIHByb3BlcnR5IHZhbHVlLlxuICogSXQgaXMgdXNlZCB0byBnZW5lcmF0ZSBkb2N1bWVudGF0aW9uXG4gKi9cbmNvbnN0IGFjdGlvbkhhbmRsZXIgPSB7XG4gIFtBY3Rpb25UeXBlcy5JTklUXTogdWlTdGF0ZVVwZGF0ZXJzLmluaXRVaVN0YXRlVXBkYXRlcixcbiAgW0FjdGlvblR5cGVzLlRPR0dMRV9TSURFX1BBTkVMXTogdWlTdGF0ZVVwZGF0ZXJzLnRvZ2dsZVNpZGVQYW5lbFVwZGF0ZXIsXG4gIFtBY3Rpb25UeXBlcy5UT0dHTEVfTU9EQUxdOiB1aVN0YXRlVXBkYXRlcnMudG9nZ2xlTW9kYWxVcGRhdGVyLFxuICBbQWN0aW9uVHlwZXMuU0hPV19FWFBPUlRfRFJPUERPV05dOiB1aVN0YXRlVXBkYXRlcnMuc2hvd0V4cG9ydERyb3Bkb3duVXBkYXRlcixcbiAgW0FjdGlvblR5cGVzLkhJREVfRVhQT1JUX0RST1BET1dOXTogdWlTdGF0ZVVwZGF0ZXJzLmhpZGVFeHBvcnREcm9wZG93blVwZGF0ZXIsXG4gIFtBY3Rpb25UeXBlcy5UT0dHTEVfU0lERV9QQU5FTF9DTE9TRV9CVVRUT05dOiB1aVN0YXRlVXBkYXRlcnMudG9nZ2xlU2lkZVBhbmVsQ2xvc2VCdXR0b25VcGRhdGVyLFxuICBbQWN0aW9uVHlwZXMuT1BFTl9ERUxFVEVfTU9EQUxdOiB1aVN0YXRlVXBkYXRlcnMub3BlbkRlbGV0ZU1vZGFsVXBkYXRlcixcbiAgW0FjdGlvblR5cGVzLk9QRU5fUkVQTEFDRV9EQVRBU0VUX01PREFMXTogdWlTdGF0ZVVwZGF0ZXJzLm9wZW5SZXBsYWNlRGF0YXNldE1vZGFsVXBkYXRlcixcbiAgW0FjdGlvblR5cGVzLlRPR0dMRV9NQVBfQ09OVFJPTF06IHVpU3RhdGVVcGRhdGVycy50b2dnbGVNYXBDb250cm9sVXBkYXRlcixcbiAgW0FjdGlvblR5cGVzLlNFVF9NQVBfQ09OVFJPTF9WSVNJQklMSVRZXTogdWlTdGF0ZVVwZGF0ZXJzLnNldE1hcENvbnRyb2xWaXNpYmlsaXR5VXBkYXRlcixcbiAgW0FjdGlvblR5cGVzLlNFVF9NQVBfQ09OVFJPTF9TRVRUSU5HU106IHVpU3RhdGVVcGRhdGVycy5zZXRNYXBDb250cm9sU2V0dGluZ3NVcGRhdGVyLFxuICBbQWN0aW9uVHlwZXMuQUREX05PVElGSUNBVElPTl06IHVpU3RhdGVVcGRhdGVycy5hZGROb3RpZmljYXRpb25VcGRhdGVyLFxuICBbQWN0aW9uVHlwZXMuUkVNT1ZFX05PVElGSUNBVElPTl06IHVpU3RhdGVVcGRhdGVycy5yZW1vdmVOb3RpZmljYXRpb25VcGRhdGVyLFxuXG4gIFtBY3Rpb25UeXBlcy5TRVRfRVhQT1JUX0lNQUdFX1NFVFRJTkddOiB1aVN0YXRlVXBkYXRlcnMuc2V0RXhwb3J0SW1hZ2VTZXR0aW5nVXBkYXRlcixcbiAgW0FjdGlvblR5cGVzLlNFVF9FWFBPUlRfSU1BR0VfREFUQV9VUkldOiB1aVN0YXRlVXBkYXRlcnMuc2V0RXhwb3J0SW1hZ2VEYXRhVXJpVXBkYXRlcixcbiAgW0FjdGlvblR5cGVzLlNFVF9FWFBPUlRfSU1BR0VfRVJST1JdOiB1aVN0YXRlVXBkYXRlcnMuc2V0RXhwb3J0SW1hZ2VFcnJvclVwZGF0ZXIsXG4gIFtBY3Rpb25UeXBlcy5DTEVBTlVQX0VYUE9SVF9JTUFHRV06IHVpU3RhdGVVcGRhdGVycy5jbGVhbnVwRXhwb3J0SW1hZ2VVcGRhdGVyLFxuICBbQWN0aW9uVHlwZXMuU1RBUlRfRVhQT1JUSU5HX0lNQUdFXTogdWlTdGF0ZVVwZGF0ZXJzLnN0YXJ0RXhwb3J0aW5nSW1hZ2VVcGRhdGVyLFxuXG4gIFtBY3Rpb25UeXBlcy5TRVRfRVhQT1JUX1ZJREVPX1NFVFRJTkddOiB1aVN0YXRlVXBkYXRlcnMuc2V0RXhwb3J0VmlkZW9TZXR0aW5nVXBkYXRlcixcblxuICBbQWN0aW9uVHlwZXMuU0VUX0VYUE9SVF9TRUxFQ1RFRF9EQVRBU0VUXTogdWlTdGF0ZVVwZGF0ZXJzLnNldEV4cG9ydFNlbGVjdGVkRGF0YXNldFVwZGF0ZXIsXG4gIFtBY3Rpb25UeXBlcy5TRVRfRVhQT1JUX0RBVEFfVFlQRV06IHVpU3RhdGVVcGRhdGVycy5zZXRFeHBvcnREYXRhVHlwZVVwZGF0ZXIsXG4gIFtBY3Rpb25UeXBlcy5TRVRfRVhQT1JUX0ZJTFRFUkVEXTogdWlTdGF0ZVVwZGF0ZXJzLnNldEV4cG9ydEZpbHRlcmVkVXBkYXRlcixcbiAgW0FjdGlvblR5cGVzLlNFVF9FWFBPUlRfREFUQV06IHVpU3RhdGVVcGRhdGVycy5zZXRFeHBvcnREYXRhVXBkYXRlcixcbiAgW0FjdGlvblR5cGVzLlNFVF9VU0VSX01BUEJPWF9BQ0NFU1NfVE9LRU5dOiB1aVN0YXRlVXBkYXRlcnMuc2V0VXNlck1hcGJveEFjY2Vzc1Rva2VuVXBkYXRlcixcblxuICBbQWN0aW9uVHlwZXMuU0VUX0VYUE9SVF9NQVBfRk9STUFUXTogdWlTdGF0ZVVwZGF0ZXJzLnNldEV4cG9ydE1hcEZvcm1hdFVwZGF0ZXIsXG5cbiAgW0FjdGlvblR5cGVzLlNFVF9FWFBPUlRfTUFQX0hUTUxfTU9ERV06IHVpU3RhdGVVcGRhdGVycy5zZXRFeHBvcnRNYXBIVE1MTW9kZVVwZGF0ZXIsXG4gIFtBY3Rpb25UeXBlcy5TRVRfRVhQT1JUX01BUF9CUkFORElOR106IHVpU3RhdGVVcGRhdGVycy5zZXRFeHBvcnRNYXBCcmFuZGluZ1VwZGF0ZXIsXG4gIFtBY3Rpb25UeXBlcy5TRVRfRVhQT1JUX01BUF9GSUxFX05BTUVdOiB1aVN0YXRlVXBkYXRlcnMuc2V0RXhwb3J0TWFwRmlsZU5hbWVVcGRhdGVyLFxuICBbQWN0aW9uVHlwZXMuU0VUX0VYUE9SVF9JTkNMVURFX0xBWUVSX0FQSV9LRVlTXTpcbiAgICB1aVN0YXRlVXBkYXRlcnMuc2V0RXhwb3J0SW5jbHVkZUxheWVyQXBpS2V5c1VwZGF0ZXIsXG4gIFtBY3Rpb25UeXBlcy5MT0FEX0ZJTEVTXTogdWlTdGF0ZVVwZGF0ZXJzLmxvYWRGaWxlc1VwZGF0ZXIsXG4gIFtBY3Rpb25UeXBlcy5MT0FEX0ZJTEVTX0VSUl06IHVpU3RhdGVVcGRhdGVycy5sb2FkRmlsZXNFcnJVcGRhdGVyLFxuXG4gIFtBY3Rpb25UeXBlcy5UT0dHTEVfU1BMSVRfTUFQXTogdWlTdGF0ZVVwZGF0ZXJzLnRvZ2dsZVNwbGl0TWFwVXBkYXRlcixcbiAgW0FjdGlvblR5cGVzLlNIT1dfREFUQVNFVF9UQUJMRV06IHVpU3RhdGVVcGRhdGVycy5zaG93RGF0YXNldFRhYmxlVXBkYXRlcixcbiAgW0FjdGlvblR5cGVzLlNFVF9MT0NBTEVdOiB1aVN0YXRlVXBkYXRlcnMuc2V0TG9jYWxlVXBkYXRlcixcbiAgW0FjdGlvblR5cGVzLlNFVF9USEVNRV06IHVpU3RhdGVVcGRhdGVycy5zZXRUaGVtZVVwZGF0ZXIsXG4gIFtBY3Rpb25UeXBlcy5UT0dHTEVfUEFORUxfTElTVF9WSUVXXTogdWlTdGF0ZVVwZGF0ZXJzLnRvZ2dsZVBhbmVsTGlzdFZpZXdVcGRhdGVyLFxuICBbQWN0aW9uVHlwZXMuUkVDRUlWRV9NQVBfQ09ORklHXTogdWlTdGF0ZVVwZGF0ZXJzLnJlY2VpdmVNYXBDb25maWdVcGRhdGVyXG59O1xuXG4vKiBSZWR1Y2VyICovXG5leHBvcnQgY29uc3QgdWlTdGF0ZVJlZHVjZXJGYWN0b3J5ID0gKGluaXRpYWxTdGF0ZSA9IHt9KSA9PlxuICAvLyBAdHMtZXhwZWN0LWVycm9yXG4gIGhhbmRsZUFjdGlvbnMoYWN0aW9uSGFuZGxlciwge1xuICAgIC4uLnVpU3RhdGVVcGRhdGVycy5JTklUSUFMX1VJX1NUQVRFLFxuICAgIC4uLmluaXRpYWxTdGF0ZSxcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgaW5pdGlhbFN0YXRlXG4gIH0pO1xuXG5leHBvcnQgZGVmYXVsdCB1aVN0YXRlUmVkdWNlckZhY3RvcnkoKTtcbiJdLCJtYXBwaW5ncyI6Ijs7OztBQUFBO0FBQ0E7O0FBRUEsU0FBUUEsYUFBYSxRQUFPLGVBQWU7QUFDM0MsU0FBUUMsV0FBVyxRQUFPLG9CQUFvQjtBQUM5QyxPQUFPLEtBQUtDLGVBQWUsTUFBTSxxQkFBcUI7O0FBRXREO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBTUMsYUFBYSxJQUFBQyxjQUFBLE9BQUFDLGVBQUEsQ0FBQUEsZUFBQSxDQUFBQSxlQUFBLENBQUFBLGVBQUEsQ0FBQUEsZUFBQSxDQUFBQSxlQUFBLENBQUFBLGVBQUEsQ0FBQUEsZUFBQSxDQUFBQSxlQUFBLENBQUFBLGVBQUEsQ0FBQUQsY0FBQSxFQUNoQkgsV0FBVyxDQUFDSyxJQUFJLEVBQUdKLGVBQWUsQ0FBQ0ssa0JBQWtCLEdBQ3JETixXQUFXLENBQUNPLGlCQUFpQixFQUFHTixlQUFlLENBQUNPLHNCQUFzQixHQUN0RVIsV0FBVyxDQUFDUyxZQUFZLEVBQUdSLGVB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