@kepler.gl/components 3.1.0 → 3.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/common/checkbox.js +14 -5
- package/dist/common/data-table/header-cell.d.ts +1 -0
- package/dist/common/data-table/header-cell.js +2 -2
- package/dist/common/data-table/index.d.ts +1 -0
- package/dist/common/data-table/index.js +5 -1
- package/dist/common/file-uploader/file-drop.d.ts +1 -32
- package/dist/common/file-uploader/file-drop.js +152 -167
- package/dist/common/histogram-plot.js +13 -13
- package/dist/common/icons/index.js +1 -1
- package/dist/common/index.d.ts +1 -1
- package/dist/common/index.js +3 -3
- package/dist/common/item-selector/chickleted-input.js +5 -2
- package/dist/common/item-selector/dropdown-list.d.ts +3 -3
- package/dist/common/item-selector/dropdown-list.js +6 -7
- package/dist/common/item-selector/dropdown-select.js +8 -3
- package/dist/common/item-selector/item-selector.d.ts +1 -1
- package/dist/common/item-selector/item-selector.js +5 -2
- package/dist/common/item-selector/typeahead.d.ts +1 -1
- package/dist/common/item-selector/typeahead.js +8 -3
- package/dist/common/range-brush.js +6 -6
- package/dist/common/range-slider.js +7 -7
- package/dist/common/slider/slider-bar-handle.d.ts +2 -2
- package/dist/common/slider/slider-bar-handle.js +4 -4
- package/dist/common/slider/slider-handle.d.ts +3 -3
- package/dist/common/slider/slider-handle.js +11 -11
- package/dist/common/slider/slider.d.ts +3 -3
- package/dist/common/slider/slider.js +6 -6
- package/dist/common/styled-components.d.ts +4 -3
- package/dist/common/styled-components.js +47 -12
- package/dist/geocoder/geocoder.d.ts +7 -0
- package/dist/geocoder/geocoder.js +19 -11
- package/dist/geocoder-panel.d.ts +2 -2
- package/dist/geocoder-panel.js +64 -91
- package/dist/hooks/use-fetch-vector-tile-metadata.d.ts +4 -3
- package/dist/hooks/use-fetch-vector-tile-metadata.js +35 -26
- package/dist/hooks/use-legend-position.d.ts +2 -10
- package/dist/hooks/use-legend-position.js +12 -6
- package/dist/index.d.ts +1 -1
- package/dist/index.js +4 -4
- package/dist/kepler-gl.js +3 -13
- package/dist/loading-indicator.d.ts +2 -2
- package/dist/loading-indicator.js +5 -5
- package/dist/map/map-control.d.ts +2 -0
- package/dist/map/map-control.js +3 -3
- package/dist/map/map-legend-panel.d.ts +3 -1
- package/dist/map/map-legend-panel.js +23 -30
- package/dist/map-container.js +12 -10
- package/dist/modal-container.js +8 -8
- package/dist/modals/tilesets-modals/tileset-vector-form.js +31 -12
- package/dist/side-panel/common/dataset-title.js +4 -4
- package/dist/side-panel/common/types.d.ts +1 -1
- package/dist/side-panel/common/types.js +1 -1
- package/dist/side-panel/interaction-panel/tooltip-config/tooltip-chicklet.d.ts +3 -3
- package/dist/side-panel/interaction-panel/tooltip-config/tooltip-chicklet.js +7 -7
- package/dist/side-panel/layer-manager.js +84 -108
- package/dist/side-panel/layer-panel/color-palette-preset.js +2 -2
- package/dist/side-panel/layer-panel/color-palette.d.ts +2 -2
- package/dist/side-panel/layer-panel/color-palette.js +6 -6
- package/dist/side-panel/layer-panel/color-range-selector.js +10 -11
- package/dist/side-panel/layer-panel/color-selector.js +9 -5
- package/dist/side-panel/layer-panel/custom-palette.js +7 -4
- package/dist/side-panel/layer-panel/dataset-section.js +3 -3
- package/dist/side-panel/layer-panel/layer-config-group.js +5 -2
- package/dist/side-panel/layer-panel/layer-configurator.js +6 -8
- package/dist/side-panel/layer-panel/layer-list.js +5 -5
- package/dist/side-panel/layer-panel/layer-panel-header.js +9 -5
- package/dist/side-panel/layer-panel/vector-tile-layer-configurator.js +1 -2
- package/dist/side-panel/map-manager.js +76 -101
- package/dist/side-panel/map-style-panel/map-layer-group-color-picker.js +3 -3
- package/dist/side-panel/map-style-panel/map-layer-group-item.js +4 -4
- package/dist/side-panel/panel-header-action.js +8 -8
- package/dist/side-panel/panel-view-list-toggle.d.ts +1 -1
- package/dist/side-panel/panel-view-list-toggle.js +3 -3
- package/package.json +16 -16
|
@@ -1,175 +1,28 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
var _typeof = require("@babel/runtime/helpers/typeof");
|
|
4
5
|
Object.defineProperty(exports, "__esModule", {
|
|
5
6
|
value: true
|
|
6
7
|
});
|
|
7
8
|
exports["default"] = void 0;
|
|
8
|
-
var
|
|
9
|
-
var
|
|
10
|
-
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
|
|
11
|
-
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
|
|
12
|
-
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
|
|
13
|
-
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
14
|
-
var _react = _interopRequireDefault(require("react"));
|
|
9
|
+
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
10
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
15
11
|
var _window = _interopRequireDefault(require("global/window"));
|
|
16
|
-
function
|
|
17
|
-
function
|
|
12
|
+
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
|
|
13
|
+
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { "default": e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n["default"] = e, t && t.set(e, n), n; }
|
|
14
|
+
// SPDX-License-Identifier: MIT
|
|
18
15
|
// Copyright contributors to the kepler.gl project
|
|
16
|
+
|
|
19
17
|
/**
|
|
20
18
|
* Copied from https://github.com/sarink/react-file-drop
|
|
21
19
|
* For React 16.8 compatibility
|
|
22
20
|
*/
|
|
23
|
-
/** @typedef {import('./file-drop').FileDropProps} FileDropProps */
|
|
24
|
-
/** @augments React.PureComponent<FileDropProps> */
|
|
25
|
-
var FileDrop = /*#__PURE__*/function (_React$PureComponent) {
|
|
26
|
-
function FileDrop() {
|
|
27
|
-
var _this;
|
|
28
|
-
(0, _classCallCheck2["default"])(this, FileDrop);
|
|
29
|
-
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
30
|
-
args[_key] = arguments[_key];
|
|
31
|
-
}
|
|
32
|
-
_this = _callSuper(this, FileDrop, [].concat(args));
|
|
33
|
-
(0, _defineProperty2["default"])(_this, "frameDragCounter", 0);
|
|
34
|
-
(0, _defineProperty2["default"])(_this, "state", {
|
|
35
|
-
draggingOverFrame: false,
|
|
36
|
-
draggingOverTarget: false
|
|
37
|
-
});
|
|
38
|
-
(0, _defineProperty2["default"])(_this, "resetDragging", function () {
|
|
39
|
-
_this.frameDragCounter = 0;
|
|
40
|
-
_this.setState({
|
|
41
|
-
draggingOverFrame: false,
|
|
42
|
-
draggingOverTarget: false
|
|
43
|
-
});
|
|
44
|
-
});
|
|
45
|
-
(0, _defineProperty2["default"])(_this, "handleWindowDragOverOrDrop", function (event) {
|
|
46
|
-
// This prevents the browser from trying to load whatever file the user dropped on the window
|
|
47
|
-
event.preventDefault();
|
|
48
|
-
});
|
|
49
|
-
(0, _defineProperty2["default"])(_this, "handleFrameDrag", function (event) {
|
|
50
|
-
// Only allow dragging of files
|
|
51
|
-
if (!FileDrop.eventHasFiles(event)) return;
|
|
52
21
|
|
|
53
|
-
|
|
54
|
-
// the event bubbles up to the frame. By keeping count of how many "dragenters" we get, we can tell if they are still
|
|
55
|
-
// "draggingOverFrame" (b/c you get one "dragenter" initially, and one "dragenter"/one "dragleave" for every bubble)
|
|
56
|
-
// This is far better than a "dragover" handler, which would be calling `setState` continuously.
|
|
57
|
-
_this.frameDragCounter += event.type === 'dragenter' ? 1 : -1;
|
|
58
|
-
if (_this.frameDragCounter === 1) {
|
|
59
|
-
_this.setState({
|
|
60
|
-
draggingOverFrame: true
|
|
61
|
-
});
|
|
62
|
-
if (_this.props.onFrameDragEnter) _this.props.onFrameDragEnter(event);
|
|
63
|
-
return;
|
|
64
|
-
}
|
|
65
|
-
if (_this.frameDragCounter === 0) {
|
|
66
|
-
_this.setState({
|
|
67
|
-
draggingOverFrame: false
|
|
68
|
-
});
|
|
69
|
-
if (_this.props.onFrameDragLeave) _this.props.onFrameDragLeave(event);
|
|
70
|
-
return;
|
|
71
|
-
}
|
|
72
|
-
});
|
|
73
|
-
(0, _defineProperty2["default"])(_this, "handleFrameDrop", function (event) {
|
|
74
|
-
event.preventDefault();
|
|
75
|
-
if (!_this.state.draggingOverTarget) {
|
|
76
|
-
_this.resetDragging();
|
|
77
|
-
if (_this.props.onFrameDrop) _this.props.onFrameDrop(event);
|
|
78
|
-
}
|
|
79
|
-
});
|
|
80
|
-
(0, _defineProperty2["default"])(_this, "handleDragOver", function (event) {
|
|
81
|
-
if (FileDrop.eventHasFiles(event)) {
|
|
82
|
-
_this.setState({
|
|
83
|
-
draggingOverTarget: true
|
|
84
|
-
});
|
|
85
|
-
if (!FileDrop.isIE() && _this.props.dropEffect) event.dataTransfer.dropEffect = _this.props.dropEffect;
|
|
86
|
-
if (_this.props.onDragOver) _this.props.onDragOver(event);
|
|
87
|
-
}
|
|
88
|
-
});
|
|
89
|
-
(0, _defineProperty2["default"])(_this, "handleDragLeave", function (event) {
|
|
90
|
-
_this.setState({
|
|
91
|
-
draggingOverTarget: false
|
|
92
|
-
});
|
|
93
|
-
if (_this.props.onDragLeave) _this.props.onDragLeave(event);
|
|
94
|
-
});
|
|
95
|
-
(0, _defineProperty2["default"])(_this, "handleDrop", function (event) {
|
|
96
|
-
if (_this.props.onDrop && FileDrop.eventHasFiles(event)) {
|
|
97
|
-
var files = event.dataTransfer ? event.dataTransfer.files : null;
|
|
98
|
-
_this.props.onDrop(files, event);
|
|
99
|
-
}
|
|
100
|
-
_this.resetDragging();
|
|
101
|
-
});
|
|
102
|
-
(0, _defineProperty2["default"])(_this, "stopFrameListeners", function (frame) {
|
|
103
|
-
if (frame) {
|
|
104
|
-
frame.removeEventListener('dragenter', _this.handleFrameDrag);
|
|
105
|
-
frame.removeEventListener('dragleave', _this.handleFrameDrag);
|
|
106
|
-
frame.removeEventListener('drop', _this.handleFrameDrop);
|
|
107
|
-
}
|
|
108
|
-
});
|
|
109
|
-
(0, _defineProperty2["default"])(_this, "startFrameListeners", function (frame) {
|
|
110
|
-
if (frame) {
|
|
111
|
-
frame.addEventListener('dragenter', _this.handleFrameDrag);
|
|
112
|
-
frame.addEventListener('dragleave', _this.handleFrameDrag);
|
|
113
|
-
frame.addEventListener('drop', _this.handleFrameDrop);
|
|
114
|
-
}
|
|
115
|
-
});
|
|
116
|
-
return _this;
|
|
117
|
-
}
|
|
118
|
-
(0, _inherits2["default"])(FileDrop, _React$PureComponent);
|
|
119
|
-
return (0, _createClass2["default"])(FileDrop, [{
|
|
120
|
-
key: "componentDidMount",
|
|
121
|
-
value: function componentDidMount() {
|
|
122
|
-
this.startFrameListeners(this.props.frame);
|
|
123
|
-
this.resetDragging();
|
|
124
|
-
_window["default"].addEventListener('dragover', this.handleWindowDragOverOrDrop);
|
|
125
|
-
_window["default"].addEventListener('drop', this.handleWindowDragOverOrDrop);
|
|
126
|
-
}
|
|
127
|
-
}, {
|
|
128
|
-
key: "componentDidUpdate",
|
|
129
|
-
value: function componentDidUpdate(prevProps) {
|
|
130
|
-
if (prevProps.frame !== this.props.frame) {
|
|
131
|
-
this.resetDragging();
|
|
132
|
-
this.stopFrameListeners(prevProps.frame);
|
|
133
|
-
this.startFrameListeners(this.props.frame);
|
|
134
|
-
}
|
|
135
|
-
}
|
|
136
|
-
}, {
|
|
137
|
-
key: "componentWillUnmount",
|
|
138
|
-
value: function componentWillUnmount() {
|
|
139
|
-
this.stopFrameListeners(this.props.frame);
|
|
140
|
-
_window["default"].removeEventListener('dragover', this.handleWindowDragOverOrDrop);
|
|
141
|
-
_window["default"].removeEventListener('drop', this.handleWindowDragOverOrDrop);
|
|
142
|
-
}
|
|
143
|
-
}, {
|
|
144
|
-
key: "render",
|
|
145
|
-
value: function render() {
|
|
146
|
-
var _this$props = this.props,
|
|
147
|
-
children = _this$props.children,
|
|
148
|
-
className = _this$props.className,
|
|
149
|
-
targetClassName = _this$props.targetClassName,
|
|
150
|
-
draggingOverFrameClassName = _this$props.draggingOverFrameClassName,
|
|
151
|
-
draggingOverTargetClassName = _this$props.draggingOverTargetClassName;
|
|
152
|
-
var _this$state = this.state,
|
|
153
|
-
draggingOverTarget = _this$state.draggingOverTarget,
|
|
154
|
-
draggingOverFrame = _this$state.draggingOverFrame;
|
|
155
|
-
var fileDropTargetClassName = targetClassName;
|
|
156
|
-
if (draggingOverFrame) fileDropTargetClassName += " ".concat(draggingOverFrameClassName);
|
|
157
|
-
if (draggingOverTarget) fileDropTargetClassName += " ".concat(draggingOverTargetClassName);
|
|
158
|
-
return /*#__PURE__*/_react["default"].createElement("div", {
|
|
159
|
-
className: className,
|
|
160
|
-
onDragOver: this.handleDragOver,
|
|
161
|
-
onDragLeave: this.handleDragLeave,
|
|
162
|
-
onDrop: this.handleDrop
|
|
163
|
-
}, /*#__PURE__*/_react["default"].createElement("div", {
|
|
164
|
-
className: fileDropTargetClassName
|
|
165
|
-
}, children));
|
|
166
|
-
}
|
|
167
|
-
}]);
|
|
168
|
-
}(_react["default"].PureComponent);
|
|
169
|
-
(0, _defineProperty2["default"])(FileDrop, "isIE", function () {
|
|
22
|
+
var isIE = function isIE() {
|
|
170
23
|
return _window["default"] && _window["default"].navigator && ((_window["default"].navigator.userAgent || []).includes('MSIE') || (_window["default"].navigator.appVersion || []).includes('Trident/'));
|
|
171
|
-
}
|
|
172
|
-
|
|
24
|
+
};
|
|
25
|
+
var eventHasFiles = function eventHasFiles(event) {
|
|
173
26
|
// In most browsers this is an array, but in IE11 it's an Object :(
|
|
174
27
|
|
|
175
28
|
var hasFiles = false;
|
|
@@ -183,14 +36,146 @@ var FileDrop = /*#__PURE__*/function (_React$PureComponent) {
|
|
|
183
36
|
}
|
|
184
37
|
}
|
|
185
38
|
return hasFiles;
|
|
186
|
-
}
|
|
187
|
-
|
|
188
|
-
dropEffect
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
39
|
+
};
|
|
40
|
+
var FileDrop = function FileDrop(_ref) {
|
|
41
|
+
var _ref$dropEffect = _ref.dropEffect,
|
|
42
|
+
dropEffect = _ref$dropEffect === void 0 ? 'copy' : _ref$dropEffect,
|
|
43
|
+
_ref$frame = _ref.frame,
|
|
44
|
+
frame = _ref$frame === void 0 ? _window["default"] ? _window["default"].document : undefined : _ref$frame,
|
|
45
|
+
_ref$className = _ref.className,
|
|
46
|
+
className = _ref$className === void 0 ? 'file-drop' : _ref$className,
|
|
47
|
+
_ref$targetClassName = _ref.targetClassName,
|
|
48
|
+
targetClassName = _ref$targetClassName === void 0 ? 'file-drop-target' : _ref$targetClassName,
|
|
49
|
+
_ref$draggingOverFram = _ref.draggingOverFrameClassName,
|
|
50
|
+
draggingOverFrameClassName = _ref$draggingOverFram === void 0 ? 'file-drop-dragging-over-frame' : _ref$draggingOverFram,
|
|
51
|
+
_ref$draggingOverTarg = _ref.draggingOverTargetClassName,
|
|
52
|
+
draggingOverTargetClassName = _ref$draggingOverTarg === void 0 ? 'file-drop-dragging-over-target' : _ref$draggingOverTarg,
|
|
53
|
+
onDragOver = _ref.onDragOver,
|
|
54
|
+
onDragLeave = _ref.onDragLeave,
|
|
55
|
+
onDrop = _ref.onDrop,
|
|
56
|
+
onFrameDragEnter = _ref.onFrameDragEnter,
|
|
57
|
+
onFrameDragLeave = _ref.onFrameDragLeave,
|
|
58
|
+
onFrameDrop = _ref.onFrameDrop,
|
|
59
|
+
children = _ref.children;
|
|
60
|
+
var _useState = (0, _react.useState)(false),
|
|
61
|
+
_useState2 = (0, _slicedToArray2["default"])(_useState, 2),
|
|
62
|
+
draggingOverTarget = _useState2[0],
|
|
63
|
+
setDraggingOverTarget = _useState2[1];
|
|
64
|
+
var _useState3 = (0, _react.useState)(false),
|
|
65
|
+
_useState4 = (0, _slicedToArray2["default"])(_useState3, 2),
|
|
66
|
+
draggingOverFrame = _useState4[0],
|
|
67
|
+
setDraggingOverFrame = _useState4[1];
|
|
68
|
+
var _useState5 = (0, _react.useState)(0),
|
|
69
|
+
_useState6 = (0, _slicedToArray2["default"])(_useState5, 2),
|
|
70
|
+
frameDragCounter = _useState6[0],
|
|
71
|
+
setFrameDragCounter = _useState6[1];
|
|
72
|
+
var prevFrame = (0, _react.useRef)(frame);
|
|
73
|
+
(0, _react.useEffect)(function () {
|
|
74
|
+
// componentDidMount
|
|
75
|
+
startFrameListeners(frame);
|
|
76
|
+
resetDragging();
|
|
77
|
+
_window["default"].addEventListener('dragover', handleWindowDragOverOrDrop);
|
|
78
|
+
_window["default"].addEventListener('drop', handleWindowDragOverOrDrop);
|
|
79
|
+
return function () {
|
|
80
|
+
// componentWillUnmount
|
|
81
|
+
stopFrameListeners(frame);
|
|
82
|
+
_window["default"].removeEventListener('dragover', handleWindowDragOverOrDrop);
|
|
83
|
+
_window["default"].removeEventListener('drop', handleWindowDragOverOrDrop);
|
|
84
|
+
};
|
|
85
|
+
|
|
86
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
87
|
+
}, []);
|
|
88
|
+
var resetDragging = (0, _react.useCallback)(function () {
|
|
89
|
+
setFrameDragCounter(0);
|
|
90
|
+
setDraggingOverTarget(false);
|
|
91
|
+
setDraggingOverFrame(false);
|
|
92
|
+
}, []);
|
|
93
|
+
var handleWindowDragOverOrDrop = (0, _react.useCallback)(function (event) {
|
|
94
|
+
// This prevents the browser from trying to load whatever file the user dropped on the window
|
|
95
|
+
event.preventDefault();
|
|
96
|
+
}, []);
|
|
97
|
+
var handleFrameDrag = (0, _react.useCallback)(function (event) {
|
|
98
|
+
// Only allow dragging of files
|
|
99
|
+
if (!eventHasFiles(event)) return;
|
|
100
|
+
|
|
101
|
+
// We are listening for events on the 'frame', so every time the user drags over any element in the frame's tree,
|
|
102
|
+
// the event bubbles up to the frame. By keeping count of how many "dragenters" we get, we can tell if they are still
|
|
103
|
+
// "draggingOverFrame" (b/c you get one "dragenter" initially, and one "dragenter"/one "dragleave" for every bubble)
|
|
104
|
+
// This is far better than a "dragover" handler, which would be calling `setState` continuously.
|
|
105
|
+
var newDragCounterValue = frameDragCounter + (event.type === 'dragenter' ? 1 : -1);
|
|
106
|
+
setFrameDragCounter(newDragCounterValue);
|
|
107
|
+
if (newDragCounterValue === 1) {
|
|
108
|
+
setDraggingOverFrame(true);
|
|
109
|
+
if (onFrameDragEnter) onFrameDragEnter(event);
|
|
110
|
+
return;
|
|
111
|
+
}
|
|
112
|
+
if (newDragCounterValue === 0) {
|
|
113
|
+
setDraggingOverFrame(false);
|
|
114
|
+
if (onFrameDragLeave) onFrameDragLeave(event);
|
|
115
|
+
return;
|
|
116
|
+
}
|
|
117
|
+
}, [frameDragCounter, setDraggingOverFrame, onFrameDragEnter, onFrameDragLeave]);
|
|
118
|
+
var handleFrameDrop = (0, _react.useCallback)(function (event) {
|
|
119
|
+
event.preventDefault();
|
|
120
|
+
if (!draggingOverTarget) {
|
|
121
|
+
resetDragging();
|
|
122
|
+
if (onFrameDrop) onFrameDrop(event);
|
|
123
|
+
}
|
|
124
|
+
}, [onFrameDrop, draggingOverTarget, resetDragging]);
|
|
125
|
+
var handleDragOver = (0, _react.useCallback)(function (event) {
|
|
126
|
+
if (eventHasFiles(event)) {
|
|
127
|
+
setDraggingOverTarget(true);
|
|
128
|
+
if (!isIE() && dropEffect) event.dataTransfer.dropEffect = dropEffect;
|
|
129
|
+
if (onDragOver) onDragOver(event);
|
|
130
|
+
}
|
|
131
|
+
}, [dropEffect, onDragOver]);
|
|
132
|
+
var handleDragLeave = (0, _react.useCallback)(function (event) {
|
|
133
|
+
setDraggingOverTarget(false);
|
|
134
|
+
if (onDragLeave) onDragLeave(event);
|
|
135
|
+
}, [onDragLeave]);
|
|
136
|
+
var handleDrop = (0, _react.useCallback)(function (event) {
|
|
137
|
+
if (onDrop && eventHasFiles(event)) {
|
|
138
|
+
var files = event.dataTransfer ? event.dataTransfer.files : null;
|
|
139
|
+
onDrop(files, event);
|
|
140
|
+
}
|
|
141
|
+
resetDragging();
|
|
142
|
+
}, [onDrop, resetDragging]);
|
|
143
|
+
var stopFrameListeners = (0, _react.useCallback)(function (frame) {
|
|
144
|
+
if (frame) {
|
|
145
|
+
frame.removeEventListener('dragenter', handleFrameDrag);
|
|
146
|
+
frame.removeEventListener('dragleave', handleFrameDrag);
|
|
147
|
+
frame.removeEventListener('drop', handleFrameDrop);
|
|
148
|
+
}
|
|
149
|
+
}, [handleFrameDrag, handleFrameDrop]);
|
|
150
|
+
var startFrameListeners = (0, _react.useCallback)(function (frame) {
|
|
151
|
+
if (frame) {
|
|
152
|
+
frame.addEventListener('dragenter', handleFrameDrag);
|
|
153
|
+
frame.addEventListener('dragleave', handleFrameDrag);
|
|
154
|
+
frame.addEventListener('drop', handleFrameDrop);
|
|
155
|
+
}
|
|
156
|
+
}, [handleFrameDrag, handleFrameDrop]);
|
|
157
|
+
(0, _react.useEffect)(function () {
|
|
158
|
+
// componentDidUpdate
|
|
159
|
+
if (prevFrame.current !== frame) {
|
|
160
|
+
resetDragging();
|
|
161
|
+
stopFrameListeners(prevFrame.current);
|
|
162
|
+
startFrameListeners(frame);
|
|
163
|
+
prevFrame.current = frame;
|
|
164
|
+
}
|
|
165
|
+
}, [frame, resetDragging, stopFrameListeners, startFrameListeners]);
|
|
166
|
+
|
|
167
|
+
// Render
|
|
168
|
+
var fileDropTargetClassName = targetClassName;
|
|
169
|
+
if (draggingOverFrame) fileDropTargetClassName += " ".concat(draggingOverFrameClassName);
|
|
170
|
+
if (draggingOverTarget) fileDropTargetClassName += " ".concat(draggingOverTargetClassName);
|
|
171
|
+
return /*#__PURE__*/_react["default"].createElement("div", {
|
|
172
|
+
className: className,
|
|
173
|
+
onDragOver: handleDragOver,
|
|
174
|
+
onDragLeave: handleDragLeave,
|
|
175
|
+
onDrop: handleDrop
|
|
176
|
+
}, /*#__PURE__*/_react["default"].createElement("div", {
|
|
177
|
+
className: fileDropTargetClassName
|
|
178
|
+
}, children));
|
|
179
|
+
};
|
|
195
180
|
var _default = exports["default"] = FileDrop;
|
|
196
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl93aW5kb3ciLCJfY2FsbFN1cGVyIiwidCIsIm8iLCJlIiwiX2dldFByb3RvdHlwZU9mMiIsIl9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuMiIsIl9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QiLCJSZWZsZWN0IiwiY29uc3RydWN0IiwiY29uc3RydWN0b3IiLCJhcHBseSIsIkJvb2xlYW4iLCJwcm90b3R5cGUiLCJ2YWx1ZU9mIiwiY2FsbCIsIkZpbGVEcm9wIiwiX1JlYWN0JFB1cmVDb21wb25lbnQiLCJfdGhpcyIsIl9jbGFzc0NhbGxDaGVjazIiLCJfbGVuIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwiYXJncyIsIkFycmF5IiwiX2tleSIsImNvbmNhdCIsIl9kZWZpbmVQcm9wZXJ0eTIiLCJkcmFnZ2luZ092ZXJGcmFtZSIsImRyYWdnaW5nT3ZlclRhcmdldCIsImZyYW1lRHJhZ0NvdW50ZXIiLCJzZXRTdGF0ZSIsImV2ZW50IiwicHJldmVudERlZmF1bHQiLCJldmVudEhhc0ZpbGVzIiwidHlwZSIsInByb3BzIiwib25GcmFtZURyYWdFbnRlciIsIm9uRnJhbWVEcmFnTGVhdmUiLCJzdGF0ZSIsInJlc2V0RHJhZ2dpbmciLCJvbkZyYW1lRHJvcCIsImlzSUUiLCJkcm9wRWZmZWN0IiwiZGF0YVRyYW5zZmVyIiwib25EcmFnT3ZlciIsIm9uRHJhZ0xlYXZlIiwib25Ecm9wIiwiZmlsZXMiLCJmcmFtZSIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJoYW5kbGVGcmFtZURyYWciLCJoYW5kbGVGcmFtZURyb3AiLCJhZGRFdmVudExpc3RlbmVyIiwiX2luaGVyaXRzMiIsIl9jcmVhdGVDbGFzczIiLCJrZXkiLCJ2YWx1ZSIsImNvbXBvbmVudERpZE1vdW50Iiwic3RhcnRGcmFtZUxpc3RlbmVycyIsIldpbmRvdyIsImhhbmRsZVdpbmRvd0RyYWdPdmVyT3JEcm9wIiwiY29tcG9uZW50RGlkVXBkYXRlIiwicHJldlByb3BzIiwic3RvcEZyYW1lTGlzdGVuZXJzIiwiY29tcG9uZW50V2lsbFVubW91bnQiLCJyZW5kZXIiLCJfdGhpcyRwcm9wcyIsImNoaWxkcmVuIiwiY2xhc3NOYW1lIiwidGFyZ2V0Q2xhc3NOYW1lIiwiZHJhZ2dpbmdPdmVyRnJhbWVDbGFzc05hbWUiLCJkcmFnZ2luZ092ZXJUYXJnZXRDbGFzc05hbWUiLCJfdGhpcyRzdGF0ZSIsImZpbGVEcm9wVGFyZ2V0Q2xhc3NOYW1lIiwiY3JlYXRlRWxlbWVudCIsImhhbmRsZURyYWdPdmVyIiwiaGFuZGxlRHJhZ0xlYXZlIiwiaGFuZGxlRHJvcCIsIlJlYWN0IiwiUHVyZUNvbXBvbmVudCIsIm5hdmlnYXRvciIsInVzZXJBZ2VudCIsImluY2x1ZGVzIiwiYXBwVmVyc2lvbiIsImhhc0ZpbGVzIiwidHlwZXMiLCJrZXlPckluZGV4IiwiZG9jdW1lbnQiLCJ1bmRlZmluZWQiLCJfZGVmYXVsdCIsImV4cG9ydHMiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29tbW9uL2ZpbGUtdXBsb2FkZXIvZmlsZS1kcm9wLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUXG4vLyBDb3B5cmlnaHQgY29udHJpYnV0b3JzIHRvIHRoZSBrZXBsZXIuZ2wgcHJvamVjdFxuXG4vKipcbiAqIENvcGllZCBmcm9tIGh0dHBzOi8vZ2l0aHViLmNvbS9zYXJpbmsvcmVhY3QtZmlsZS1kcm9wXG4gKiBGb3IgUmVhY3QgMTYuOCBjb21wYXRpYmlsaXR5XG4gKi9cbmltcG9ydCBSZWFjdCwge1JlYWN0Tm9kZX0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IFdpbmRvdyBmcm9tICdnbG9iYWwvd2luZG93JztcblxuZXhwb3J0IHR5cGUgRmlsZURyb3BQcm9wcyA9IHtcbiAgZHJvcEVmZmVjdD86ICdjb3B5JyB8ICdtb3ZlJyB8ICdsaW5rJyB8ICdub25lJztcbiAgZnJhbWU/OiB0eXBlb2YgZG9jdW1lbnQgfCB0eXBlb2YgV2luZG93IHwgSFRNTEVsZW1lbnQ7XG4gIGNsYXNzTmFtZT86IHN0cmluZztcbiAgdGFyZ2V0Q2xhc3NOYW1lPzogc3RyaW5nO1xuICBkcmFnZ2luZ092ZXJGcmFtZUNsYXNzTmFtZT86IHN0cmluZztcbiAgZHJhZ2dpbmdPdmVyVGFyZ2V0Q2xhc3NOYW1lPzogc3RyaW5nO1xuICBvbkRyYWdPdmVyPzogKGV2ZW50OiBhbnkpID0+IHZvaWQ7XG4gIG9uRHJhZ0xlYXZlPzogKGV2ZW50OiBhbnkpID0+IHZvaWQ7XG4gIG9uRHJvcD86IChmaWxlTGlzdDogRmlsZUxpc3QsIGV2ZW50OiBhbnkpID0+IHZvaWQ7XG4gIG9uRnJhbWVEcmFnRW50ZXI/OiAoZXZlbnQ6IGFueSkgPT4gdm9pZDtcbiAgb25GcmFtZURyYWdMZWF2ZT86IChldmVudDogYW55KSA9PiB2b2lkO1xuICBvbkZyYW1lRHJvcD86IChldmVudDogYW55KSA9PiB2b2lkO1xuICBjaGlsZHJlbj86IFJlYWN0Tm9kZTtcbn07XG5cbi8qKiBAdHlwZWRlZiB7aW1wb3J0KCcuL2ZpbGUtZHJvcCcpLkZpbGVEcm9wUHJvcHN9IEZpbGVEcm9wUHJvcHMgKi9cblxuLyoqIEBhdWdtZW50cyBSZWFjdC5QdXJlQ29tcG9uZW50PEZpbGVEcm9wUHJvcHM+ICovXG5jbGFzcyBGaWxlRHJvcCBleHRlbmRzIFJlYWN0LlB1cmVDb21wb25lbnQ8RmlsZURyb3BQcm9wcz4ge1xuICBzdGF0aWMgaXNJRSA9ICgpID0+XG4gICAgV2luZG93ICYmXG4gICAgV2luZG93Lm5hdmlnYXRvciAmJlxuICAgICgoV2luZG93Lm5hdmlnYXRvci51c2VyQWdlbnQgfHwgW10pLmluY2x1ZGVzKCdNU0lFJykgfHxcbiAgICAgIChXaW5kb3cubmF2aWdhdG9yLmFwcFZlcnNpb24gfHwgW10pLmluY2x1ZGVzKCdUcmlkZW50LycpKTtcblxuICBzdGF0aWMgZXZlbnRIYXNGaWxlcyA9IGV2ZW50ID0+IHtcbiAgICAvLyBJbiBtb3N0IGJyb3dzZXJzIHRoaXMgaXMgYW4gYXJyYXksIGJ1dCBpbiBJRTExIGl0J3MgYW4gT2JqZWN0IDooXG5cbiAgICBsZXQgaGFzRmlsZXMgPSBmYWxzZTtcbiAgICBpZiAoZXZlbnQuZGF0YVRyYW5zZmVyKSB7XG4gICAgICBjb25zdCB0eXBlcyA9IGV2ZW50LmRhdGFUcmFuc2Zlci50eXBlcztcbiAgICAgIGZvciAoY29uc3Qga2V5T3JJbmRleCBpbiB0eXBlcykge1xuICAgICAgICBpZiAodHlwZXNba2V5T3JJbmRleF0gPT09ICdGaWxlcycpIHtcbiAgICAgICAgICBoYXNGaWxlcyA9IHRydWU7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGhhc0ZpbGVzO1xuICB9O1xuXG4gIHN0YXRpYyBkZWZhdWx0UHJvcHMgPSB7XG4gICAgZHJvcEVmZmVjdDogJ2NvcHknLFxuICAgIGZyYW1lOiBXaW5kb3cgPyBXaW5kb3cuZG9jdW1lbnQgOiB1bmRlZmluZWQsXG4gICAgY2xhc3NOYW1lOiAnZmlsZS1kcm9wJyxcbiAgICB0YXJnZXRDbGFzc05hbWU6ICdmaWxlLWRyb3AtdGFyZ2V0JyxcbiAgICBkcmFnZ2luZ092ZXJGcmFtZUNsYXNzTmFtZTogJ2ZpbGUtZHJvcC1kcmFnZ2luZy1vdmVyLWZyYW1lJyxcbiAgICBkcmFnZ2luZ092ZXJUYXJnZXRDbGFzc05hbWU6ICdmaWxlLWRyb3AtZHJhZ2dpbmctb3Zlci10YXJnZXQnXG4gIH07XG5cbiAgZnJhbWVEcmFnQ291bnRlciA9IDA7XG4gIHN0YXRlID0ge2RyYWdnaW5nT3ZlckZyYW1lOiBmYWxzZSwgZHJhZ2dpbmdPdmVyVGFyZ2V0OiBmYWxzZX07XG5cbiAgY29tcG9uZW50RGlkTW91bnQoKSB7XG4gICAgdGhpcy5zdGFydEZyYW1lTGlzdGVuZXJzKHRoaXMucHJvcHMuZnJhbWUpO1xuICAgIHRoaXMucmVzZXREcmFnZ2luZygpO1xuICAgIFdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdkcmFnb3ZlcicsIHRoaXMuaGFuZGxlV2luZG93RHJhZ092ZXJPckRyb3ApO1xuICAgIFdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdkcm9wJywgdGhpcy5oYW5kbGVXaW5kb3dEcmFnT3Zlck9yRHJvcCk7XG4gIH1cblxuICBjb21wb25lbnREaWRVcGRhdGUocHJldlByb3BzKSB7XG4gICAgaWYgKHByZXZQcm9wcy5mcmFtZSAhPT0gdGhpcy5wcm9wcy5mcmFtZSkge1xuICAgICAgdGhpcy5yZXNldERyYWdnaW5nKCk7XG4gICAgICB0aGlzLnN0b3BGcmFtZUxpc3RlbmVycyhwcmV2UHJvcHMuZnJhbWUpO1xuICAgICAgdGhpcy5zdGFydEZyYW1lTGlzdGVuZXJzKHRoaXMucHJvcHMuZnJhbWUpO1xuICAgIH1cbiAgfVxuXG4gIGNvbXBvbmVudFdpbGxVbm1vdW50KCkge1xuICAgIHRoaXMuc3RvcEZyYW1lTGlzdGVuZXJzKHRoaXMucHJvcHMuZnJhbWUpO1xuICAgIFdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdkcmFnb3ZlcicsIHRoaXMuaGFuZGxlV2luZG93RHJhZ092ZXJPckRyb3ApO1xuICAgIFdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdkcm9wJywgdGhpcy5oYW5kbGVXaW5kb3dEcmFnT3Zlck9yRHJvcCk7XG4gIH1cblxuICByZXNldERyYWdnaW5nID0gKCkgPT4ge1xuICAgIHRoaXMuZnJhbWVEcmFnQ291bnRlciA9IDA7XG4gICAgdGhpcy5zZXRTdGF0ZSh7ZHJhZ2dpbmdPdmVyRnJhbWU6IGZhbHNlLCBkcmFnZ2luZ092ZXJUYXJnZXQ6IGZhbHNlfSk7XG4gIH07XG5cbiAgaGFuZGxlV2luZG93RHJhZ092ZXJPckRyb3AgPSBldmVudCA9PiB7XG4gICAgLy8gVGhpcyBwcmV2ZW50cyB0aGUgYnJvd3NlciBmcm9tIHRyeWluZyB0byBsb2FkIHdoYXRldmVyIGZpbGUgdGhlIHVzZXIgZHJvcHBlZCBvbiB0aGUgd2luZG93XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgfTtcblxuICBoYW5kbGVGcmFtZURyYWcgPSBldmVudCA9PiB7XG4gICAgLy8gT25seSBhbGxvdyBkcmFnZ2luZyBvZiBmaWxlc1xuICAgIGlmICghRmlsZURyb3AuZXZlbnRIYXNGaWxlcyhldmVudCkpIHJldHVybjtcblxuICAgIC8vIFdlIGFyZSBsaXN0ZW5pbmcgZm9yIGV2ZW50cyBvbiB0aGUgJ2ZyYW1lJywgc28gZXZlcnkgdGltZSB0aGUgdXNlciBkcmFncyBvdmVyIGFueSBlbGVtZW50IGluIHRoZSBmcmFtZSdzIHRyZWUsXG4gICAgLy8gdGhlIGV2ZW50IGJ1YmJsZXMgdXAgdG8gdGhlIGZyYW1lLiBCeSBrZWVwaW5nIGNvdW50IG9mIGhvdyBtYW55IFwiZHJhZ2VudGVyc1wiIHdlIGdldCwgd2UgY2FuIHRlbGwgaWYgdGhleSBhcmUgc3RpbGxcbiAgICAvLyBcImRyYWdnaW5nT3ZlckZyYW1lXCIgKGIvYyB5b3UgZ2V0IG9uZSBcImRyYWdlbnRlclwiIGluaXRpYWxseSwgYW5kIG9uZSBcImRyYWdlbnRlclwiL29uZSBcImRyYWdsZWF2ZVwiIGZvciBldmVyeSBidWJibGUpXG4gICAgLy8gVGhpcyBpcyBmYXIgYmV0dGVyIHRoYW4gYSBcImRyYWdvdmVyXCIgaGFuZGxlciwgd2hpY2ggd291bGQgYmUgY2FsbGluZyBgc2V0U3RhdGVgIGNvbnRpbnVvdXNseS5cbiAgICB0aGlzLmZyYW1lRHJhZ0NvdW50ZXIgKz0gZXZlbnQudHlwZSA9PT0gJ2RyYWdlbnRlcicgPyAxIDogLTE7XG5cbiAgICBpZiAodGhpcy5mcmFtZURyYWdDb3VudGVyID09PSAxKSB7XG4gICAgICB0aGlzLnNldFN0YXRlKHtkcmFnZ2luZ092ZXJGcmFtZTogdHJ1ZX0pO1xuICAgICAgaWYgKHRoaXMucHJvcHMub25GcmFtZURyYWdFbnRlcikgdGhpcy5wcm9wcy5vbkZyYW1lRHJhZ0VudGVyKGV2ZW50KTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5mcmFtZURyYWdDb3VudGVyID09PSAwKSB7XG4gICAgICB0aGlzLnNldFN0YXRlKHtkcmFnZ2luZ092ZXJGcmFtZTogZmFsc2V9KTtcbiAgICAgIGlmICh0aGlzLnByb3BzLm9uRnJhbWVEcmFnTGVhdmUpIHRoaXMucHJvcHMub25GcmFtZURyYWdMZWF2ZShldmVudCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICB9O1xuXG4gIGhhbmRsZUZyYW1lRHJvcCA9IGV2ZW50ID0+IHtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIGlmICghdGhpcy5zdGF0ZS5kcmFnZ2luZ092ZXJUYXJnZXQpIHtcbiAgICAgIHRoaXMucmVzZXREcmFnZ2luZygpO1xuICAgICAgaWYgKHRoaXMucHJvcHMub25GcmFtZURyb3ApIHRoaXMucHJvcHMub25GcmFtZURyb3AoZXZlbnQpO1xuICAgIH1cbiAgfTtcblxuICBoYW5kbGVEcmFnT3ZlciA9IGV2ZW50ID0+IHtcbiAgICBpZiAoRmlsZURyb3AuZXZlbnRIYXNGaWxlcyhldmVudCkpIHtcbiAgICAgIHRoaXMuc2V0U3RhdGUoe2RyYWdnaW5nT3ZlclRhcmdldDogdHJ1ZX0pO1xuICAgICAgaWYgKCFGaWxlRHJvcC5pc0lFKCkgJiYgdGhpcy5wcm9wcy5kcm9wRWZmZWN0KVxuICAgICAgICBldmVudC5kYXRhVHJhbnNmZXIuZHJvcEVmZmVjdCA9IHRoaXMucHJvcHMuZHJvcEVmZmVjdDtcbiAgICAgIGlmICh0aGlzLnByb3BzLm9uRHJhZ092ZXIpIHRoaXMucHJvcHMub25EcmFnT3ZlcihldmVudCk7XG4gICAgfVxuICB9O1xuXG4gIGhhbmRsZURyYWdMZWF2ZSA9IGV2ZW50ID0+IHtcbiAgICB0aGlzLnNldFN0YXRlKHtkcmFnZ2luZ092ZXJUYXJnZXQ6IGZhbHNlfSk7XG4gICAgaWYgKHRoaXMucHJvcHMub25EcmFnTGVhdmUpIHRoaXMucHJvcHMub25EcmFnTGVhdmUoZXZlbnQpO1xuICB9O1xuXG4gIGhhbmRsZURyb3AgPSBldmVudCA9PiB7XG4gICAgaWYgKHRoaXMucHJvcHMub25Ecm9wICYmIEZpbGVEcm9wLmV2ZW50SGFzRmlsZXMoZXZlbnQpKSB7XG4gICAgICBjb25zdCBmaWxlcyA9IGV2ZW50LmRhdGFUcmFuc2ZlciA/IGV2ZW50LmRhdGFUcmFuc2Zlci5maWxlcyA6IG51bGw7XG4gICAgICB0aGlzLnByb3BzLm9uRHJvcChmaWxlcywgZXZlbnQpO1xuICAgIH1cbiAgICB0aGlzLnJlc2V0RHJhZ2dpbmcoKTtcbiAgfTtcblxuICBzdG9wRnJhbWVMaXN0ZW5lcnMgPSBmcmFtZSA9PiB7XG4gICAgaWYgKGZyYW1lKSB7XG4gICAgICBmcmFtZS5yZW1vdmVFdmVudExpc3RlbmVyKCdkcmFnZW50ZXInLCB0aGlzLmhhbmRsZUZyYW1lRHJhZyk7XG4gICAgICBmcmFtZS5yZW1vdmVFdmVudExpc3RlbmVyKCdkcmFnbGVhdmUnLCB0aGlzLmhhbmRsZUZyYW1lRHJhZyk7XG4gICAgICBmcmFtZS5yZW1vdmVFdmVudExpc3RlbmVyKCdkcm9wJywgdGhpcy5oYW5kbGVGcmFtZURyb3ApO1xuICAgIH1cbiAgfTtcblxuICBzdGFydEZyYW1lTGlzdGVuZXJzID0gZnJhbWUgPT4ge1xuICAgIGlmIChmcmFtZSkge1xuICAgICAgZnJhbWUuYWRkRXZlbnRMaXN0ZW5lcignZHJhZ2VudGVyJywgdGhpcy5oYW5kbGVGcmFtZURyYWcpO1xuICAgICAgZnJhbWUuYWRkRXZlbnRMaXN0ZW5lcignZHJhZ2xlYXZlJywgdGhpcy5oYW5kbGVGcmFtZURyYWcpO1xuICAgICAgZnJhbWUuYWRkRXZlbnRMaXN0ZW5lcignZHJvcCcsIHRoaXMuaGFuZGxlRnJhbWVEcm9wKTtcbiAgICB9XG4gIH07XG5cbiAgcmVuZGVyKCkge1xuICAgIGNvbnN0IHtcbiAgICAgIGNoaWxkcmVuLFxuICAgICAgY2xhc3NOYW1lLFxuICAgICAgdGFyZ2V0Q2xhc3NOYW1lLFxuICAgICAgZHJhZ2dpbmdPdmVyRnJhbWVDbGFzc05hbWUsXG4gICAgICBkcmFnZ2luZ092ZXJUYXJnZXRDbGFzc05hbWVcbiAgICB9ID0gdGhpcy5wcm9wcztcbiAgICBjb25zdCB7ZHJhZ2dpbmdPdmVyVGFyZ2V0LCBkcmFnZ2luZ092ZXJGcmFtZX0gPSB0aGlzLnN0YXRlO1xuXG4gICAgbGV0IGZpbGVEcm9wVGFyZ2V0Q2xhc3NOYW1lID0gdGFyZ2V0Q2xhc3NOYW1lO1xuICAgIGlmIChkcmFnZ2luZ092ZXJGcmFtZSkgZmlsZURyb3BUYXJnZXRDbGFzc05hbWUgKz0gYCAke2RyYWdnaW5nT3ZlckZyYW1lQ2xhc3NOYW1lfWA7XG4gICAgaWYgKGRyYWdnaW5nT3ZlclRhcmdldCkgZmlsZURyb3BUYXJnZXRDbGFzc05hbWUgKz0gYCAke2RyYWdnaW5nT3ZlclRhcmdldENsYXNzTmFtZX1gO1xuXG4gICAgcmV0dXJuIChcbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3NOYW1lPXtjbGFzc05hbWV9XG4gICAgICAgIG9uRHJhZ092ZXI9e3RoaXMuaGFuZGxlRHJhZ092ZXJ9XG4gICAgICAgIG9uRHJhZ0xlYXZlPXt0aGlzLmhhbmRsZURyYWdMZWF2ZX1cbiAgICAgICAgb25Ecm9wPXt0aGlzLmhhbmRsZURyb3B9XG4gICAgICA+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPXtmaWxlRHJvcFRhcmdldENsYXNzTmFtZX0+e2NoaWxkcmVufTwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgKTtcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBGaWxlRHJvcDtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7OztBQU9BLElBQUFBLE1BQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLE9BQUEsR0FBQUYsc0JBQUEsQ0FBQUMsT0FBQTtBQUFtQyxTQUFBRSxXQUFBQyxDQUFBLEVBQUFDLENBQUEsRUFBQUMsQ0FBQSxXQUFBRCxDQUFBLE9BQUFFLGdCQUFBLGFBQUFGLENBQUEsT0FBQUcsMkJBQUEsYUFBQUosQ0FBQSxFQUFBSyx5QkFBQSxLQUFBQyxPQUFBLENBQUFDLFNBQUEsQ0FBQU4sQ0FBQSxFQUFBQyxDQUFBLFlBQUFDLGdCQUFBLGFBQUFILENBQUEsRUFBQVEsV0FBQSxJQUFBUCxDQUFBLENB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
|
|
181
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfd2luZG93IiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsIl9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSIsImUiLCJXZWFrTWFwIiwiciIsInQiLCJfX2VzTW9kdWxlIiwiX3R5cGVvZiIsImhhcyIsImdldCIsIm4iLCJfX3Byb3RvX18iLCJhIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJ1IiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiaSIsInNldCIsImlzSUUiLCJXaW5kb3ciLCJuYXZpZ2F0b3IiLCJ1c2VyQWdlbnQiLCJpbmNsdWRlcyIsImFwcFZlcnNpb24iLCJldmVudEhhc0ZpbGVzIiwiZXZlbnQiLCJoYXNGaWxlcyIsImRhdGFUcmFuc2ZlciIsInR5cGVzIiwia2V5T3JJbmRleCIsIkZpbGVEcm9wIiwiX3JlZiIsIl9yZWYkZHJvcEVmZmVjdCIsImRyb3BFZmZlY3QiLCJfcmVmJGZyYW1lIiwiZnJhbWUiLCJkb2N1bWVudCIsInVuZGVmaW5lZCIsIl9yZWYkY2xhc3NOYW1lIiwiY2xhc3NOYW1lIiwiX3JlZiR0YXJnZXRDbGFzc05hbWUiLCJ0YXJnZXRDbGFzc05hbWUiLCJfcmVmJGRyYWdnaW5nT3ZlckZyYW0iLCJkcmFnZ2luZ092ZXJGcmFtZUNsYXNzTmFtZSIsIl9yZWYkZHJhZ2dpbmdPdmVyVGFyZyIsImRyYWdnaW5nT3ZlclRhcmdldENsYXNzTmFtZSIsIm9uRHJhZ092ZXIiLCJvbkRyYWdMZWF2ZSIsIm9uRHJvcCIsIm9uRnJhbWVEcmFnRW50ZXIiLCJvbkZyYW1lRHJhZ0xlYXZlIiwib25GcmFtZURyb3AiLCJjaGlsZHJlbiIsIl91c2VTdGF0ZSIsInVzZVN0YXRlIiwiX3VzZVN0YXRlMiIsIl9zbGljZWRUb0FycmF5MiIsImRyYWdnaW5nT3ZlclRhcmdldCIsInNldERyYWdnaW5nT3ZlclRhcmdldCIsIl91c2VTdGF0ZTMiLCJfdXNlU3RhdGU0IiwiZHJhZ2dpbmdPdmVyRnJhbWUiLCJzZXREcmFnZ2luZ092ZXJGcmFtZSIsIl91c2VTdGF0ZTUiLCJfdXNlU3RhdGU2IiwiZnJhbWVEcmFnQ291bnRlciIsInNldEZyYW1lRHJhZ0NvdW50ZXIiLCJwcmV2RnJhbWUiLCJ1c2VSZWYiLCJ1c2VFZmZlY3QiLCJzdGFydEZyYW1lTGlzdGVuZXJzIiwicmVzZXREcmFnZ2luZyIsImFkZEV2ZW50TGlzdGVuZXIiLCJoYW5kbGVXaW5kb3dEcmFnT3Zlck9yRHJvcCIsInN0b3BGcmFtZUxpc3RlbmVycyIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJ1c2VDYWxsYmFjayIsInByZXZlbnREZWZhdWx0IiwiaGFuZGxlRnJhbWVEcmFnIiwibmV3RHJhZ0NvdW50ZXJWYWx1ZSIsInR5cGUiLCJoYW5kbGVGcmFtZURyb3AiLCJoYW5kbGVEcmFnT3ZlciIsImhhbmRsZURyYWdMZWF2ZSIsImhhbmRsZURyb3AiLCJmaWxlcyIsImN1cnJlbnQiLCJmaWxlRHJvcFRhcmdldENsYXNzTmFtZSIsImNvbmNhdCIsImNyZWF0ZUVsZW1lbnQiLCJfZGVmYXVsdCIsImV4cG9ydHMiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29tbW9uL2ZpbGUtdXBsb2FkZXIvZmlsZS1kcm9wLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUXG4vLyBDb3B5cmlnaHQgY29udHJpYnV0b3JzIHRvIHRoZSBrZXBsZXIuZ2wgcHJvamVjdFxuXG4vKipcbiAqIENvcGllZCBmcm9tIGh0dHBzOi8vZ2l0aHViLmNvbS9zYXJpbmsvcmVhY3QtZmlsZS1kcm9wXG4gKiBGb3IgUmVhY3QgMTYuOCBjb21wYXRpYmlsaXR5XG4gKi9cbmltcG9ydCBSZWFjdCwge1JlYWN0Tm9kZSwgdXNlQ2FsbGJhY2ssIHVzZUVmZmVjdCwgdXNlU3RhdGUsIHVzZVJlZn0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IFdpbmRvdyBmcm9tICdnbG9iYWwvd2luZG93JztcblxuY29uc3QgaXNJRSA9ICgpID0+XG4gIFdpbmRvdyAmJlxuICBXaW5kb3cubmF2aWdhdG9yICYmXG4gICgoV2luZG93Lm5hdmlnYXRvci51c2VyQWdlbnQgfHwgW10pLmluY2x1ZGVzKCdNU0lFJykgfHxcbiAgICAoV2luZG93Lm5hdmlnYXRvci5hcHBWZXJzaW9uIHx8IFtdKS5pbmNsdWRlcygnVHJpZGVudC8nKSk7XG5cbmNvbnN0IGV2ZW50SGFzRmlsZXMgPSBldmVudCA9PiB7XG4gIC8vIEluIG1vc3QgYnJvd3NlcnMgdGhpcyBpcyBhbiBhcnJheSwgYnV0IGluIElFMTEgaXQncyBhbiBPYmplY3QgOihcblxuICBsZXQgaGFzRmlsZXMgPSBmYWxzZTtcbiAgaWYgKGV2ZW50LmRhdGFUcmFuc2Zlcikge1xuICAgIGNvbnN0IHR5cGVzID0gZXZlbnQuZGF0YVRyYW5zZmVyLnR5cGVzO1xuICAgIGZvciAoY29uc3Qga2V5T3JJbmRleCBpbiB0eXBlcykge1xuICAgICAgaWYgKHR5cGVzW2tleU9ySW5kZXhdID09PSAnRmlsZXMnKSB7XG4gICAgICAgIGhhc0ZpbGVzID0gdHJ1ZTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHJldHVybiBoYXNGaWxlcztcbn07XG5cbmV4cG9ydCB0eXBlIEZpbGVEcm9wUHJvcHMgPSB7XG4gIGRyb3BFZmZlY3Q/OiAnY29weScgfCAnbW92ZScgfCAnbGluaycgfCAnbm9uZSc7XG4gIGZyYW1lPzogdHlwZW9mIGRvY3VtZW50IHwgdHlwZW9mIFdpbmRvdyB8IEhUTUxFbGVtZW50O1xuICBjbGFzc05hbWU/OiBzdHJpbmc7XG4gIHRhcmdldENsYXNzTmFtZT86IHN0cmluZztcbiAgZHJhZ2dpbmdPdmVyRnJhbWVDbGFzc05hbWU/OiBzdHJpbmc7XG4gIGRyYWdnaW5nT3ZlclRhcmdldENsYXNzTmFtZT86IHN0cmluZztcbiAgb25EcmFnT3Zlcj86IChldmVudDogYW55KSA9PiB2b2lkO1xuICBvbkRyYWdMZWF2ZT86IChldmVudDogYW55KSA9PiB2b2lkO1xuICBvbkRyb3A/OiAoZmlsZUxpc3Q6IEZpbGVMaXN0LCBldmVudDogYW55KSA9PiB2b2lkO1xuICBvbkZyYW1lRHJhZ0VudGVyPzogKGV2ZW50OiBhbnkpID0+IHZvaWQ7XG4gIG9uRnJhbWVEcmFnTGVhdmU/OiAoZXZlbnQ6IGFueSkgPT4gdm9pZDtcbiAgb25GcmFtZURyb3A/OiAoZXZlbnQ6IGFueSkgPT4gdm9pZDtcbiAgY2hpbGRyZW4/OiBSZWFjdE5vZGU7XG59O1xuXG5jb25zdCBGaWxlRHJvcCA9ICh7XG4gIGRyb3BFZmZlY3QgPSAnY29weScsXG4gIGZyYW1lID0gV2luZG93ID8gV2luZG93LmRvY3VtZW50IDogdW5kZWZpbmVkLFxuICBjbGFzc05hbWUgPSAnZmlsZS1kcm9wJyxcbiAgdGFyZ2V0Q2xhc3NOYW1lID0gJ2ZpbGUtZHJvcC10YXJnZXQnLFxuICBkcmFnZ2luZ092ZXJGcmFtZUNsYXNzTmFtZSA9ICdmaWxlLWRyb3AtZHJhZ2dpbmctb3Zlci1mcmFtZScsXG4gIGRyYWdnaW5nT3ZlclRhcmdldENsYXNzTmFtZSA9ICdmaWxlLWRyb3AtZHJhZ2dpbmctb3Zlci10YXJnZXQnLFxuICBvbkRyYWdPdmVyLFxuICBvbkRyYWdMZWF2ZSxcbiAgb25Ecm9wLFxuICBvbkZyYW1lRHJhZ0VudGVyLFxuICBvbkZyYW1lRHJhZ0xlYXZlLFxuICBvbkZyYW1lRHJvcCxcbiAgY2hpbGRyZW5cbn06IEZpbGVEcm9wUHJvcHMpID0+IHtcbiAgY29uc3QgW2RyYWdnaW5nT3ZlclRhcmdldCwgc2V0RHJhZ2dpbmdPdmVyVGFyZ2V0XSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgY29uc3QgW2RyYWdnaW5nT3ZlckZyYW1lLCBzZXREcmFnZ2luZ092ZXJGcmFtZV0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gIGNvbnN0IFtmcmFtZURyYWdDb3VudGVyLCBzZXRGcmFtZURyYWdDb3VudGVyXSA9IHVzZVN0YXRlKDApO1xuXG4gIGNvbnN0IHByZXZGcmFtZSA9IHVzZVJlZihmcmFtZSk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAvLyBjb21wb25lbnREaWRNb3VudFxuICAgIHN0YXJ0RnJhbWVMaXN0ZW5lcnMoZnJhbWUpO1xuICAgIHJlc2V0RHJhZ2dpbmcoKTtcbiAgICBXaW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignZHJhZ292ZXInLCBoYW5kbGVXaW5kb3dEcmFnT3Zlck9yRHJvcCk7XG4gICAgV2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2Ryb3AnLCBoYW5kbGVXaW5kb3dEcmFnT3Zlck9yRHJvcCk7XG5cbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgLy8gY29tcG9uZW50V2lsbFVubW91bnRcbiAgICAgIHN0b3BGcmFtZUxpc3RlbmVycyhmcmFtZSk7XG4gICAgICBXaW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcignZHJhZ292ZXInLCBoYW5kbGVXaW5kb3dEcmFnT3Zlck9yRHJvcCk7XG4gICAgICBXaW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcignZHJvcCcsIGhhbmRsZVdpbmRvd0RyYWdPdmVyT3JEcm9wKTtcbiAgICB9O1xuXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0LWhvb2tzL2V4aGF1c3RpdmUtZGVwc1xuICB9LCBbXSk7XG5cbiAgY29uc3QgcmVzZXREcmFnZ2luZyA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBzZXRGcmFtZURyYWdDb3VudGVyKDApO1xuICAgIHNldERyYWdnaW5nT3ZlclRhcmdldChmYWxzZSk7XG4gICAgc2V0RHJhZ2dpbmdPdmVyRnJhbWUoZmFsc2UpO1xuICB9LCBbXSk7XG5cbiAgY29uc3QgaGFuZGxlV2luZG93RHJhZ092ZXJPckRyb3AgPSB1c2VDYWxsYmFjayhldmVudCA9PiB7XG4gICAgLy8gVGhpcyBwcmV2ZW50cyB0aGUgYnJvd3NlciBmcm9tIHRyeWluZyB0byBsb2FkIHdoYXRldmVyIGZpbGUgdGhlIHVzZXIgZHJvcHBlZCBvbiB0aGUgd2luZG93XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgfSwgW10pO1xuXG4gIGNvbnN0IGhhbmRsZUZyYW1lRHJhZyA9IHVzZUNhbGxiYWNrKFxuICAgIGV2ZW50ID0+IHtcbiAgICAgIC8vIE9ubHkgYWxsb3cgZHJhZ2dpbmcgb2YgZmlsZXNcbiAgICAgIGlmICghZXZlbnRIYXNGaWxlcyhldmVudCkpIHJldHVybjtcblxuICAgICAgLy8gV2UgYXJlIGxpc3RlbmluZyBmb3IgZXZlbnRzIG9uIHRoZSAnZnJhbWUnLCBzbyBldmVyeSB0aW1lIHRoZSB1c2VyIGRyYWdzIG92ZXIgYW55IGVsZW1lbnQgaW4gdGhlIGZyYW1lJ3MgdHJlZSxcbiAgICAgIC8vIHRoZSBldmVudCBidWJibGVzIHVwIHRvIHRoZSBmcmFtZS4gQnkga2VlcGluZyBjb3VudCBvZiBob3cgbWFueSBcImRyYWdlbnRlcnNcIiB3ZSBnZXQsIHdlIGNhbiB0ZWxsIGlmIHRoZXkgYXJlIHN0aWxsXG4gICAgICAvLyBcImRyYWdnaW5nT3ZlckZyYW1lXCIgKGIvYyB5b3UgZ2V0IG9uZSBcImRyYWdlbnRlclwiIGluaXRpYWxseSwgYW5kIG9uZSBcImRyYWdlbnRlclwiL29uZSBcImRyYWdsZWF2ZVwiIGZvciBldmVyeSBidWJibGUpXG4gICAgICAvLyBUaGlzIGlzIGZhciBiZXR0ZXIgdGhhbiBhIFwiZHJhZ292ZXJcIiBoYW5kbGVyLCB3aGljaCB3b3VsZCBiZSBjYWxsaW5nIGBzZXRTdGF0ZWAgY29udGludW91c2x5LlxuICAgICAgY29uc3QgbmV3RHJhZ0NvdW50ZXJWYWx1ZSA9IGZyYW1lRHJhZ0NvdW50ZXIgKyAoZXZlbnQudHlwZSA9PT0gJ2RyYWdlbnRlcicgPyAxIDogLTEpO1xuICAgICAgc2V0RnJhbWVEcmFnQ291bnRlcihuZXdEcmFnQ291bnRlclZhbHVlKTtcblxuICAgICAgaWYgKG5ld0RyYWdDb3VudGVyVmFsdWUgPT09IDEpIHtcbiAgICAgICAgc2V0RHJhZ2dpbmdPdmVyRnJhbWUodHJ1ZSk7XG4gICAgICAgIGlmIChvbkZyYW1lRHJhZ0VudGVyKSBvbkZyYW1lRHJhZ0VudGVyKGV2ZW50KTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBpZiAobmV3RHJhZ0NvdW50ZXJWYWx1ZSA9PT0gMCkge1xuICAgICAgICBzZXREcmFnZ2luZ092ZXJGcmFtZShmYWxzZSk7XG4gICAgICAgIGlmIChvbkZyYW1lRHJhZ0xlYXZlKSBvbkZyYW1lRHJhZ0xlYXZlKGV2ZW50KTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgIH0sXG4gICAgW2ZyYW1lRHJhZ0NvdW50ZXIsIHNldERyYWdnaW5nT3ZlckZyYW1lLCBvbkZyYW1lRHJhZ0VudGVyLCBvbkZyYW1lRHJhZ0xlYXZlXVxuICApO1xuXG4gIGNvbnN0IGhhbmRsZUZyYW1lRHJvcCA9IHVzZUNhbGxiYWNrKFxuICAgIGV2ZW50ID0+IHtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICBpZiAoIWRyYWdnaW5nT3ZlclRhcmdldCkge1xuICAgICAgICByZXNldERyYWdnaW5nKCk7XG4gICAgICAgIGlmIChvbkZyYW1lRHJvcCkgb25GcmFtZURyb3AoZXZlbnQpO1xuICAgICAgfVxuICAgIH0sXG4gICAgW29uRnJhbWVEcm9wLCBkcmFnZ2luZ092ZXJUYXJnZXQsIHJlc2V0RHJhZ2dpbmddXG4gICk7XG5cbiAgY29uc3QgaGFuZGxlRHJhZ092ZXIgPSB1c2VDYWxsYmFjayhcbiAgICBldmVudCA9PiB7XG4gICAgICBpZiAoZXZlbnRIYXNGaWxlcyhldmVudCkpIHtcbiAgICAgICAgc2V0RHJhZ2dpbmdPdmVyVGFyZ2V0KHRydWUpO1xuICAgICAgICBpZiAoIWlzSUUoKSAmJiBkcm9wRWZmZWN0KSBldmVudC5kYXRhVHJhbnNmZXIuZHJvcEVmZmVjdCA9IGRyb3BFZmZlY3Q7XG4gICAgICAgIGlmIChvbkRyYWdPdmVyKSBvbkRyYWdPdmVyKGV2ZW50KTtcbiAgICAgIH1cbiAgICB9LFxuICAgIFtkcm9wRWZmZWN0LCBvbkRyYWdPdmVyXVxuICApO1xuXG4gIGNvbnN0IGhhbmRsZURyYWdMZWF2ZSA9IHVzZUNhbGxiYWNrKFxuICAgIGV2ZW50ID0+IHtcbiAgICAgIHNldERyYWdnaW5nT3ZlclRhcmdldChmYWxzZSk7XG5cbiAgICAgIGlmIChvbkRyYWdMZWF2ZSkgb25EcmFnTGVhdmUoZXZlbnQpO1xuICAgIH0sXG4gICAgW29uRHJhZ0xlYXZlXVxuICApO1xuXG4gIGNvbnN0IGhhbmRsZURyb3AgPSB1c2VDYWxsYmFjayhcbiAgICBldmVudCA9PiB7XG4gICAgICBpZiAob25Ecm9wICYmIGV2ZW50SGFzRmlsZXMoZXZlbnQpKSB7XG4gICAgICAgIGNvbnN0IGZpbGVzID0gZXZlbnQuZGF0YVRyYW5zZmVyID8gZXZlbnQuZGF0YVRyYW5zZmVyLmZpbGVzIDogbnVsbDtcbiAgICAgICAgb25Ecm9wKGZpbGVzLCBldmVudCk7XG4gICAgICB9XG4gICAgICByZXNldERyYWdnaW5nKCk7XG4gICAgfSxcbiAgICBbb25Ecm9wLCByZXNldERyYWdnaW5nXVxuICApO1xuXG4gIGNvbnN0IHN0b3BGcmFtZUxpc3RlbmVycyA9IHVzZUNhbGxiYWNrKFxuICAgIGZyYW1lID0+IHtcbiAgICAgIGlmIChmcmFtZSkge1xuICAgICAgICBmcmFtZS5yZW1vdmVFdmVudExpc3RlbmVyKCdkcmFnZW50ZXInLCBoYW5kbGVGcmFtZURyYWcpO1xuICAgICAgICBmcmFtZS5yZW1vdmVFdmVudExpc3RlbmVyKCdkcmFnbGVhdmUnLCBoYW5kbGVGcmFtZURyYWcpO1xuICAgICAgICBmcmFtZS5yZW1vdmVFdmVudExpc3RlbmVyKCdkcm9wJywgaGFuZGxlRnJhbWVEcm9wKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIFtoYW5kbGVGcmFtZURyYWcsIGhhbmRsZUZyYW1lRHJvcF1cbiAgKTtcblxuICBjb25zdCBzdGFydEZyYW1lTGlzdGVuZXJzID0gdXNlQ2FsbGJhY2soXG4gICAgZnJhbWUgPT4ge1xuICAgICAgaWYgKGZyYW1lKSB7XG4gICAgICAgIGZyYW1lLmFkZEV2ZW50TGlzdGVuZXIoJ2RyYWdlbnRlcicsIGhhbmRsZUZyYW1lRHJhZyk7XG4gICAgICAgIGZyYW1lLmFkZEV2ZW50TGlzdGVuZXIoJ2RyYWdsZWF2ZScsIGhhbmRsZUZyYW1lRHJhZyk7XG4gICAgICAgIGZyYW1lLmFkZEV2ZW50TGlzdGVuZXIoJ2Ryb3AnLCBoYW5kbGVGcmFtZURyb3ApO1xuICAgICAgfVxuICAgIH0sXG4gICAgW2hhbmRsZUZyYW1lRHJhZywgaGFuZGxlRnJhbWVEcm9wXVxuICApO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgLy8gY29tcG9uZW50RGlkVXBkYXRlXG4gICAgaWYgKHByZXZGcmFtZS5jdXJyZW50ICE9PSBmcmFtZSkge1xuICAgICAgcmVzZXREcmFnZ2luZygpO1xuICAgICAgc3RvcEZyYW1lTGlzdGVuZXJzKHByZXZGcmFtZS5jdXJyZW50KTtcbiAgICAgIHN0YXJ0RnJhbWVMaXN0ZW5lcnMoZnJhbWUpO1xuXG4gICAgICBwcmV2RnJhbWUuY3VycmVudCA9IGZyYW1lO1xuICAgIH1cbiAgfSwgW2ZyYW1lLCByZXNldERyYWdnaW5nLCBzdG9wRnJhbWVMaXN0ZW5lcnMsIHN0YXJ0RnJhbWVMaXN0ZW5lcnNdKTtcblxuICAvLyBSZW5kZXJcbiAgbGV0IGZpbGVEcm9wVGFyZ2V0Q2xhc3NOYW1lID0gdGFyZ2V0Q2xhc3NOYW1lO1xuICBpZiAoZHJhZ2dpbmdPdmVyRnJhbWUpIGZpbGVEcm9wVGFyZ2V0Q2xhc3NOYW1lICs9IGAgJHtkcmFnZ2luZ092ZXJGcmFtZUNsYXNzTmFtZX1gO1xuICBpZiAoZHJhZ2dpbmdPdmVyVGFyZ2V0KSBmaWxlRHJvcFRhcmdldENsYXNzTmFtZSArPSBgICR7ZHJhZ2dpbmdPdmVyVGFyZ2V0Q2xhc3NOYW1lfWA7XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2XG4gICAgICBjbGFzc05hbWU9e2NsYXNzTmFtZX1cbiAgICAgIG9uRHJhZ092ZXI9e2hhbmRsZURyYWdPdmVyfVxuICAgICAgb25EcmFnTGVhdmU9e2hhbmRsZURyYWdMZWF2ZX1cbiAgICAgIG9uRHJvcD17aGFuZGxlRHJvcH1cbiAgICA+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT17ZmlsZURyb3BUYXJnZXRDbGFzc05hbWV9PntjaGlsZHJlbn08L2Rpdj5cbiAgICA8L2Rpdj5cbiAgKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IEZpbGVEcm9wO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFPQSxJQUFBQSxNQUFBLEdBQUFDLHVCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxPQUFBLEdBQUFDLHNCQUFBLENBQUFGLE9BQUE7QUFBbUMsU0FBQUcseUJBQUFDLENBQUEsNkJBQUFDLE9BQUEsbUJBQUFDLENBQUEsT0FBQUQsT0FBQSxJQUFBRSxDQUFBLE9BQUFGLE9BQUEsWUFBQUYsd0JBQUEsWUFBQUEseUJBQUFDLENBQUEsV0FBQUEsQ0FBQSxHQUFBRyxDQUFBLEdBQUFELENBQUEsS0FBQUYsQ0FBQTtBQUFBLFNBQUFMLHdCQUFBSyxDQUFBLEVBQUFFLENBQUEsU0FBQUEsQ0FBQSxJQUFBRixDQUFBLElBQUFBLENBQUEsQ0FBQUksVUFBQSxTQUFBSixDQUFBLGVBQUFBLENBQUEsZ0JBQUFLLE9BQUEsQ0FBQUwsQ0FBQSwwQkFBQUEsQ0FBQSxzQkFBQUEsQ0FBQSxRQUFBRyxDQUFBLEdBQUFKLHdCQUFBLENBQUFHLENBQUEsT0FBQUMsQ0FBQSxJQUFBQSxDQUFBLENBQUFHLEdBQUEsQ0FBQU4sQ0FBQSxVQUFBRyxDQUFBLENBQUFJLEdBQUEsQ0FBQVAsQ0FBQSxPQUFBUSxDQUFBLEtBQUFDLFNBQUEsVUFBQUMsQ0FBQSxHQUFBQyxNQUFBLENBQUFDLGNBQUEsSUFBQUQsTUFBQSxDQUFBRSx3QkFBQSxXQUFBQyxDQUFBLElBQUFkLENBQUEsb0JBQUFjLENBQUEsT0FBQUMsY0FBQSxDQUFBQyxJQUFBLENBQUFoQixDQUFBLEVBQUFjLENBQUEsU0FBQUcsQ0FBQSxHQUFBUCxDQUFBLEdBQUFDLE1BQUEsQ0FBQUUsd0JBQUEsQ0FBQWIsQ0FBQSxFQUFBYyxDQUFBLFVBQUFHLENBQUEsS0FB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
|
|
@@ -37,10 +37,10 @@ var HistogramBreakLine = _styledComponents["default"].g(_templateObject3 || (_te
|
|
|
37
37
|
});
|
|
38
38
|
var BarUnmemoized = _styledComponents["default"].rect(function (_ref) {
|
|
39
39
|
var theme = _ref.theme,
|
|
40
|
-
inRange = _ref
|
|
41
|
-
isOverlay = _ref
|
|
42
|
-
color = _ref
|
|
43
|
-
return "\n ".concat(isOverlay ? "fill: ".concat(color !== null && color !== void 0 ? color : theme.histogramOverlayColor, ";") : inRange ? "fill: ".concat(color !== null && color !== void 0 ? color : theme.histogramFillInRange, ";") : "fill: ".concat(color ? (0, _d3Color.hcl)(color).darker() : theme.histogramFillOutRange, ";"), "\n");
|
|
40
|
+
$inRange = _ref.$inRange,
|
|
41
|
+
$isOverlay = _ref.$isOverlay,
|
|
42
|
+
$color = _ref.$color;
|
|
43
|
+
return "\n ".concat($isOverlay ? "fill: ".concat($color !== null && $color !== void 0 ? $color : theme.histogramOverlayColor, ";") : $inRange ? "fill: ".concat($color !== null && $color !== void 0 ? $color : theme.histogramFillInRange, ";") : "fill: ".concat($color ? (0, _d3Color.hcl)($color).darker() : theme.histogramFillOutRange, ";"), "\n");
|
|
44
44
|
});
|
|
45
45
|
var Bar = /*#__PURE__*/_react["default"].memo(BarUnmemoized);
|
|
46
46
|
Bar.displayName = 'Bar';
|
|
@@ -140,9 +140,9 @@ function HistogramPlotFactory() {
|
|
|
140
140
|
var inRange = isBarInRange(bar, idx, list, domain, value);
|
|
141
141
|
var wRatio = inRange ? histogramStyle.highlightW : histogramStyle.unHighlightedW;
|
|
142
142
|
return /*#__PURE__*/_react["default"].createElement(Bar, {
|
|
143
|
-
isOverlay: false,
|
|
144
|
-
inRange: inRange,
|
|
145
|
-
color: HISTOGRAM_MASK_FGCOLOR,
|
|
143
|
+
$isOverlay: false,
|
|
144
|
+
$inRange: inRange,
|
|
145
|
+
$color: HISTOGRAM_MASK_FGCOLOR,
|
|
146
146
|
key: "mask-".concat(idx),
|
|
147
147
|
height: y(bar[countProp]),
|
|
148
148
|
width: barWidth * wRatio,
|
|
@@ -167,8 +167,8 @@ function HistogramPlotFactory() {
|
|
|
167
167
|
var inRange = isBarInRange(bar, idx, list, domain, value);
|
|
168
168
|
var wRatio = inRange ? histogramStyle.highlightW : histogramStyle.unHighlightedW;
|
|
169
169
|
return /*#__PURE__*/_react["default"].createElement(Bar, {
|
|
170
|
-
inRange: inRange,
|
|
171
|
-
isOverlay: true,
|
|
170
|
+
$inRange: inRange,
|
|
171
|
+
$isOverlay: true,
|
|
172
172
|
key: "bar-".concat(idx),
|
|
173
173
|
height: maskHeight,
|
|
174
174
|
width: barWidth * wRatio,
|
|
@@ -201,9 +201,9 @@ function HistogramPlotFactory() {
|
|
|
201
201
|
var startX = x(undefinedToZero(bar.x0)) + barWidth * i + barWidth * (1 - wRatio) / 2;
|
|
202
202
|
if (startX > 0 && startX + barWidth * histogramStyle.unHighlightedW <= width) {
|
|
203
203
|
return /*#__PURE__*/_react["default"].createElement(Bar, {
|
|
204
|
-
isOverlay: false,
|
|
205
|
-
inRange: inRange,
|
|
206
|
-
color: colorsByGroup === null || colorsByGroup === void 0 ? void 0 : colorsByGroup[key],
|
|
204
|
+
$isOverlay: false,
|
|
205
|
+
$inRange: inRange,
|
|
206
|
+
$color: colorsByGroup === null || colorsByGroup === void 0 ? void 0 : colorsByGroup[key],
|
|
207
207
|
key: "bar-".concat(idx),
|
|
208
208
|
height: y(bar[countProp]),
|
|
209
209
|
width: barWidth * wRatio,
|
|
@@ -231,4 +231,4 @@ function HistogramPlotFactory() {
|
|
|
231
231
|
return HistogramPlotWithGroups;
|
|
232
232
|
}
|
|
233
233
|
var _default = exports["default"] = HistogramPlotFactory;
|
|
234
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfZDNTY2FsZSIsIl9kM0NvbG9yIiwiX2QzQXJyYXkiLCJfc3R5bGVkQ29tcG9uZW50cyIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfdGVtcGxhdGVPYmplY3QiLCJfdGVtcGxhdGVPYmplY3QyIiwiX3RlbXBsYXRlT2JqZWN0MyIsIl9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSIsImUiLCJXZWFrTWFwIiwiciIsInQiLCJfX2VzTW9kdWxlIiwiX3R5cGVvZiIsImhhcyIsImdldCIsIm4iLCJfX3Byb3RvX18iLCJhIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJ1IiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiaSIsInNldCIsIkhJU1RPR1JBTV9NQVNLX01PREUiLCJleHBvcnRzIiwiTm9NYXNrIiwiTWFzayIsIk1hc2tXaXRoT3ZlcmxheSIsIkhJU1RPR1JBTV9NQVNLX0JHQ09MT1IiLCJISVNUT0dSQU1fTUFTS19GR0NPTE9SIiwiaGlzdG9ncmFtU3R5bGUiLCJoaWdobGlnaHRXIiwidW5IaWdobGlnaHRlZFciLCJIaXN0b2dyYW1XcmFwcGVyIiwic3R5bGVkIiwic3ZnIiwiX3RhZ2dlZFRlbXBsYXRlTGl0ZXJhbDIiLCJIaXN0b2dyYW1NYXNrUmVjdCIsInJlY3QiLCJwcm9wcyIsInRoZW1lIiwicGFuZWxCYWNrZ3JvdW5kIiwiSGlzdG9ncmFtQnJlYWtMaW5lIiwiZyIsImhpc3RvZ3JhbUJyZWFrTGluZUNvbG9yIiwiQmFyVW5tZW1vaXplZCIsIl9yZWYiLCJpblJhbmdlIiwiaXNPdmVybGF5IiwiY29sb3IiLCJjb25jYXQiLCJoaXN0b2dyYW1PdmVybGF5Q29sb3IiLCJoaXN0b2dyYW1GaWxsSW5SYW5nZSIsImhjbCIsImRhcmtlciIsImhpc3RvZ3JhbUZpbGxPdXRSYW5nZSIsIkJhciIsIlJlYWN0IiwibWVtbyIsImRpc3BsYXlOYW1lIiwiaXNCYXJJblJhbmdlIiwiYmFyIiwiaW5kZXgiLCJsaXN0IiwiZmlsdGVyRG9tYWluIiwiZmlsdGVyVmFsdWUiLCJ4MENvbmRpdGlvbiIsIngwIiwieDFDb25kaXRpb24iLCJsZW5ndGgiLCJ4MSIsIkhpc3RvZ3JhbVBsb3RGYWN0b3J5IiwiSGlzdG9ncmFtUGxvdCIsIl9yZWYyIiwid2lkdGgiLCJoZWlnaHQiLCJoaXN0b2dyYW1zQnlHcm91cCIsImNvbG9yc0J5R3JvdXAiLCJfcmVmMiRpc01hc2tlZCIsImlzTWFza2VkIiwiX3JlZjIkY291bnRQcm9wIiwiY291bnRQcm9wIiwibWFyZ2luIiwiaXNSYW5nZWQiLCJyYW5nZSIsInZhbHVlIiwiYnJ1c2hDb21wb25lbnQiLCJicmVha0xpbmVzIiwidW5kZWZpbmVkVG9aZXJvIiwieCIsImdyb3VwS2V5cyIsInVzZU1lbW8iLCJrZXlzIiwiZmlsdGVyIiwia2V5IiwiX2hpc3RvZ3JhbXNCeUdyb3VwJGtlIiwiZG9tYWluIiwiX21pbiIsIl9tYXgiLCJtaW4iLCJtYXgiLCJiYXJXaWR0aCIsIm1heEdyb3VwIiwicmVkdWNlIiwiYWNjdSIsIl9pZHgiLCJzdGRCaW5JZHgiLCJ4U3RlcCIsIm1heEJpbnMiLCJzY2FsZUxpbmVhciIsInkiLCJNYXRoIiwiTnVtYmVyIiwiZCIsIm1hc2tlZEhpc3RvZ3JhbSIsImNyZWF0ZUVsZW1lbnQiLCJzdHlsZSIsInRvcCIsInJpZ2h0IiwiYm90dG9tIiwibGVmdCIsImlkIiwiZmlsbCIsImNsYXNzTmFtZSIsImZpbHRlcmVkQmlucyIsIm1hcCIsImlkeCIsIndSYXRpbyIsInRyYW5zZm9ybSIsIm1hc2siLCJiaW5zIiwiZmlsdGVyQmFyIiwibWFza0hlaWdodCIsInBvcyIsInN0cm9rZURhc2hhcnJheSIsInN0YXJ0WCIsInJ4IiwicnkiLCJIaXN0b2dyYW1QbG90V2l0aEdyb3VwcyIsImdyb3VwcyIsIl9kZWZhdWx0Il0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbW1vbi9oaXN0b2dyYW0tcGxvdC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVFxuLy8gQ29weXJpZ2h0IGNvbnRyaWJ1dG9ycyB0byB0aGUga2VwbGVyLmdsIHByb2plY3RcblxuaW1wb3J0IFJlYWN0LCB7UmVhY3RFbGVtZW50LCB1c2VNZW1vfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQge3NjYWxlTGluZWFyfSBmcm9tICdkMy1zY2FsZSc7XG5pbXBvcnQge2hjbH0gZnJvbSAnZDMtY29sb3InO1xuaW1wb3J0IHttaW4sIG1heH0gZnJvbSAnZDMtYXJyYXknO1xuaW1wb3J0IHN0eWxlZCBmcm9tICdzdHlsZWQtY29tcG9uZW50cyc7XG5cbmltcG9ydCB7Qmluc30gZnJvbSAnQGtlcGxlci5nbC90eXBlcyc7XG5cbi8vIGNsaXBwaW5nIG1hc2sgY29uc3RhbnRzXG5leHBvcnQgY29uc3QgSElTVE9HUkFNX01BU0tfTU9ERSA9IHtcbiAgTm9NYXNrOiAwLFxuICBNYXNrOiAxLFxuICBNYXNrV2l0aE92ZXJsYXk6IDJcbn07XG5jb25zdCBISVNUT0dSQU1fTUFTS19CR0NPTE9SID0gJyNGRkZGRkYnO1xuY29uc3QgSElTVE9HUkFNX01BU0tfRkdDT0xPUiA9ICcjMDAwMDAwJztcblxuY29uc3QgaGlzdG9ncmFtU3R5bGUgPSB7XG4gIGhpZ2hsaWdodFc6IDAuNyxcbiAgdW5IaWdobGlnaHRlZFc6IDAuNFxufTtcblxuY29uc3QgSGlzdG9ncmFtV3JhcHBlciA9IHN0eWxlZC5zdmdgXG4gIG92ZXJmbG93OiB2aXNpYmxlO1xuYDtcblxuY29uc3QgSGlzdG9ncmFtTWFza1JlY3QgPSBzdHlsZWQucmVjdGBcbiAgZmlsbDogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5wYW5lbEJhY2tncm91bmR9O1xuYDtcblxuY29uc3QgSGlzdG9ncmFtQnJlYWtMaW5lID0gc3R5bGVkLmdgXG4gIHN0cm9rZTogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5oaXN0b2dyYW1CcmVha0xpbmVDb2xvcn07XG4gIHN0cm9rZS13aWR0aDogMXB4O1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAwKTtcbmA7XG5cbnR5cGUgQmFyVHlwZSA9IHtcbiAgaW5SYW5nZTogYm9vbGVhbjtcbiAgaXNPdmVybGF5OiBib29sZWFuO1xufTtcbmNvbnN0IEJhclVubWVtb2l6ZWQgPSBzdHlsZWQucmVjdDxCYXJUeXBlPihcbiAgKHt0aGVtZSwgaW5SYW5nZSwgaXNPdmVybGF5LCBjb2xvcn0pID0+IGBcbiAgJHtcbiAgICBpc092ZXJsYXlcbiAgICAgID8gYGZpbGw6ICR7Y29sb3IgPz8gdGhlbWUuaGlzdG9ncmFtT3ZlcmxheUNvbG9yfTtgXG4gICAgICA6IGluUmFuZ2VcbiAgICAgID8gYGZpbGw6ICR7Y29sb3IgPz8gdGhlbWUuaGlzdG9ncmFtRmlsbEluUmFuZ2V9O2BcbiAgICAgIDogYGZpbGw6ICR7Y29sb3IgPyBoY2woY29sb3IpLmRhcmtlcigpIDogdGhlbWUuaGlzdG9ncmFtRmlsbE91dFJhbmdlfTtgXG4gIH1cbmBcbik7XG5jb25zdCBCYXIgPSBSZWFjdC5tZW1vKEJhclVubWVtb2l6ZWQpO1xuQmFyLmRpc3BsYXlOYW1lID0gJ0Jhcic7XG5cbmNvbnN0IGlzQmFySW5SYW5nZSA9IChcbiAgYmFyOiB7eDA6IG51bWJlcjsgeDE6IG51bWJlcn0sXG4gIGluZGV4OiBudW1iZXIsXG4gIGxpc3Q6IGFueVtdLFxuICBmaWx0ZXJEb21haW46IGFueVtdLFxuICBmaWx0ZXJWYWx1ZTogYW55W11cbikgPT4ge1xuICAvLyBmaXJzdFxuICAvLyBpZiB4MCA8PSBkb21haW5bMF0gYW5kIGN1cnJlbnQgdmFsdWVbMF0gd2Fzbid0IGNoYW5nZWQgZnJvbSB0aGUgb3JpZ2luYWwgZG9tYWluXG4gIGNvbnN0IHgwQ29uZGl0aW9uID1cbiAgICBpbmRleCA9PT0gMCA/IGJhci54MCA8PSBmaWx0ZXJEb21haW5bMF0gJiYgZmlsdGVyRG9tYWluWzBdID09PSBmaWx0ZXJWYWx1ZVswXSA6IGZhbHNlO1xuICAvLyBMYXN0XG4gIC8vIGlmIHgxID49IGRvbWFpblsxXSBhbmQgY3VycmVudCB2YWx1ZVsxXSB3YXNuJ3QgY2hhbmdlZCBmcm9tIHRoZSBvcmlnaW5hbCBkb21haW5cbiAgY29uc3QgeDFDb25kaXRpb24gPVxuICAgIGluZGV4ID09PSBsaXN0Lmxlbmd0aCAtIDFcbiAgICAgID8gYmFyLngxID49IGZpbHRlckRvbWFpblsxXSAmJiBmaWx0ZXJEb21haW5bMV0gPT09IGZpbHRlclZhbHVlWzFdXG4gICAgICA6IGZhbHNlO1xuICByZXR1cm4gKHgwQ29uZGl0aW9uIHx8IGJhci54MCA+PSBmaWx0ZXJWYWx1ZVswXSkgJiYgKHgxQ29uZGl0aW9uIHx8IGJhci54MSA8PSBmaWx0ZXJWYWx1ZVsxXSk7XG59O1xuXG5leHBvcnQgdHlwZSBIaXN0b2dyYW1NYXNrTW9kZVR5cGUgPSB7XG4gIE5vTWFzazogbnVtYmVyO1xuICBNYXNrOiBudW1iZXI7XG4gIE1hc2tXaXRoT3ZlcmxheTogbnVtYmVyO1xufTtcblxuaW50ZXJmYWNlIEhpc3RvZ3JhbVBsb3RQcm9wcyB7XG4gIHdpZHRoOiBudW1iZXI7XG4gIGhlaWdodDogbnVtYmVyO1xuICBtYXJnaW46IHt0b3A6IG51bWJlcjsgYm90dG9tOiBudW1iZXI7IGxlZnQ6IG51bWJlcjsgcmlnaHQ6IG51bWJlcn07XG4gIGlzUmFuZ2VkPzogYm9vbGVhbjtcbiAgdmFsdWU6IG51bWJlcltdO1xuICBpc01hc2tlZD86IG51bWJlcjtcbiAgYnJ1c2hDb21wb25lbnQ/OiBSZWFjdEVsZW1lbnQ7XG4gIGhpc3RvZ3JhbXNCeUdyb3VwOiBCaW5zO1xuICBjb2xvcnNCeUdyb3VwPzogbnVsbCB8IHtbZGF0YUlkOiBzdHJpbmddOiBzdHJpbmd9O1xuICBjb3VudFByb3A/OiBzdHJpbmc7XG4gIHJhbmdlPzogbnVtYmVyW107XG4gIGJyZWFrTGluZXM/OiBudW1iZXJbXTtcbn1cblxuZnVuY3Rpb24gSGlzdG9ncmFtUGxvdEZhY3RvcnkoKSB7XG4gIGNvbnN0IEhpc3RvZ3JhbVBsb3QgPSAoe1xuICAgIHdpZHRoLFxuICAgIGhlaWdodCxcbiAgICBoaXN0b2dyYW1zQnlHcm91cCxcbiAgICBjb2xvcnNCeUdyb3VwLFxuICAgIGlzTWFza2VkID0gSElTVE9HUkFNX01BU0tfTU9ERS5Ob01hc2ssXG4gICAgY291bnRQcm9wID0gJ2NvdW50JyxcbiAgICBtYXJnaW4sXG4gICAgaXNSYW5nZWQsXG4gICAgcmFuZ2UsXG4gICAgdmFsdWUsXG4gICAgYnJ1c2hDb21wb25lbnQsXG4gICAgYnJlYWtMaW5lc1xuICB9OiBIaXN0b2dyYW1QbG90UHJvcHMpID0+IHtcbiAgICBjb25zdCB1bmRlZmluZWRUb1plcm8gPSAoeDogbnVtYmVyIHwgdW5kZWZpbmVkKSA9PiAoeCA/IHggOiAwKTtcbiAgICBjb25zdCBncm91cEtleXMgPSB1c2VNZW1vKFxuICAgICAgKCkgPT5cbiAgICAgICAgT2JqZWN0LmtleXMoaGlzdG9ncmFtc0J5R3JvdXApXG4gICAgICAgICAgLy8gb25seSBrZWVwIG5vbi1lbXB0eSBncm91cHNcbiAgICAgICAgICAuZmlsdGVyKGtleSA9PiBoaXN0b2dyYW1zQnlHcm91cFtrZXldPy5sZW5ndGggPiAwKSxcbiAgICAgIFtoaXN0b2dyYW1zQnlHcm91cF1cbiAgICApO1xuXG4gICAgY29uc3QgZG9tYWluID0gdXNlTWVtbyhcbiAgICAgICgpID0+XG4gICAgICAgIHJhbmdlID8/IFtcbiAgICAgICAgICBtaW4oZ3JvdXBLZXlzLCBrZXkgPT4gaGlzdG9ncmFtc0J5R3JvdXBba2V5XVswXS54MCkgPz8gMCxcbiAgICAgICAgICBtYXgoZ3JvdXBLZXlzLCBrZXkgPT4gaGlzdG9ncmFtc0J5R3JvdXBba2V5XVtoaXN0b2dyYW1zQnlHcm91cFtrZXldLmxlbmd0aCAtIDFdLngxKSA/PyAwXG4gICAgICAgIF0sXG4gICAgICBbcmFuZ2UsIGhpc3RvZ3JhbXNCeUdyb3VwLCBncm91cEtleXNdXG4gICAgKTtcblxuICAgIGNvbnN0IGJhcldpZHRoID0gdXNlTWVtbygoKSA9PiB7XG4gICAgICBpZiAoZ3JvdXBLZXlzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIDA7XG4gICAgICAvLyBmaW5kIGhpc3RvZ3JhbXNCeUdyb3VwIHdpdGggbWF4IG51bWJlciBvZiBiaW5zXG4gICAgICBjb25zdCBtYXhHcm91cCA9IGdyb3VwS2V5cy5yZWR1Y2UoKGFjY3UsIGtleSwgX2lkeCkgPT4ge1xuICAgICAgICBpZiAoaGlzdG9ncmFtc0J5R3JvdXBba2V5XS5sZW5ndGggPiBhY2N1Lmxlbmd0aCkge1xuICAgICAgICAgIHJldHVybiBoaXN0b2dyYW1zQnlHcm91cFtrZXldO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBhY2N1O1xuICAgICAgfSwgaGlzdG9ncmFtc0J5R3JvdXBbZ3JvdXBLZXlzWzBdXSk7XG5cbiAgICAgIC8vIGZpbmQgdGhlIGJpbiBmb3IgbWVhc3VyaW5nIHN0ZXBcbiAgICAgIGNvbnN0IHN0ZEJpbklkeCA9IG1heEdyb3VwLmxlbmd0aCA+IDEgPyAxIDogMDtcbiAgICAgIGNvbnN0IHhTdGVwID0gbWF4R3JvdXBbc3RkQmluSWR4XS54MSAtIG1heEdyb3VwW3N0ZEJpbklkeF0ueDA7XG4gICAgICBjb25zdCBtYXhCaW5zID0gKGRvbWFpblsxXSAtIGRvbWFpblswXSkgLyB4U3RlcDtcbiAgICAgIGlmICghbWF4QmlucykgcmV0dXJuIDA7XG4gICAgICByZXR1cm4gd2lkdGggLyBtYXhCaW5zIC8gKGlzTWFza2VkID8gMSA6IGdyb3VwS2V5cy5sZW5ndGgpO1xuICAgIH0sIFtoaXN0b2dyYW1zQnlHcm91cCwgZG9tYWluLCBncm91cEtleXMsIHdpZHRoLCBpc01hc2tlZF0pO1xuXG4gICAgY29uc3QgeCA9IHVzZU1lbW8oXG4gICAgICAoKSA9PiBzY2FsZUxpbmVhcigpLmRvbWFpbihkb21haW4pLnJhbmdlKFtiYXJXaWR0aCwgd2lkdGhdKSxcbiAgICAgIFtkb21haW4sIHdpZHRoLCBiYXJXaWR0aF1cbiAgICApO1xuXG4gICAgY29uc3QgeSA9IHVzZU1lbW8oXG4gICAgICAoKSA9PlxuICAgICAgICBzY2FsZUxpbmVhcigpXG4gICAgICAgICAgLmRvbWFpbihbXG4gICAgICAgICAgICAwLFxuICAgICAgICAgICAgTWF0aC5tYXgoXG4gICAgICAgICAgICAgIE51bWJlcihtYXgoZ3JvdXBLZXlzLCBrZXkgPT4gbWF4KGhpc3RvZ3JhbXNCeUdyb3VwW2tleV0sIGQgPT4gZFtjb3VudFByb3BdKSkpLFxuICAgICAgICAgICAgICAxXG4gICAgICAgICAgICApXG4gICAgICAgICAgXSlcbiAgICAgICAgICAucmFuZ2UoWzAsIGhlaWdodF0pLFxuICAgICAgW2hpc3RvZ3JhbXNCeUdyb3VwLCBncm91cEtleXMsIGhlaWdodCwgY291bnRQcm9wXVxuICAgICk7XG5cbiAgICBpZiAoZ3JvdXBLZXlzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgY29uc3QgbWFza2VkSGlzdG9ncmFtID0gKCkgPT4ge1xuICAgICAgcmV0dXJuIChcbiAgICAgICAgPEhpc3RvZ3JhbVdyYXBwZXJcbiAgICAgICAgICB3aWR0aD17d2lkdGh9XG4gICAgICAgICAgaGVpZ2h0PXtoZWlnaHR9XG4gICAgICAgICAgc3R5bGU9e3ttYXJnaW46IGAke21hcmdpbi50b3B9cHggJHttYXJnaW4ucmlnaHR9cHggJHttYXJnaW4uYm90dG9tfXB4ICR7bWFyZ2luLmxlZnR9cHhgfX1cbiAgICAgICAgPlxuICAgICAgICAgIDxkZWZzPlxuICAgICAgICAgICAgPG1hc2sgaWQ9XCJoaXN0b2dyYW0tbWFza1wiPlxuICAgICAgICAgICAgICA8cmVjdFxuICAgICAgICAgICAgICAgIHg9XCIwXCJcbiAgICAgICAgICAgICAgICB5PVwiMFwiXG4gICAgICAgICAgICAgICAgd2lkdGg9e3dpZHRofVxuICAgICAgICAgICAgICAgIGhlaWdodD17aGVpZ2h0ICsgbWFyZ2luLmJvdHRvbX1cbiAgICAgICAgICAgICAgICBmaWxsPXtISVNUT0dSQU1fTUFTS19CR0NPTE9SfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8ZyBrZXk9XCJmaWx0ZXJlZC1iaW5zXCIgY2xhc3NOYW1lPVwiaGlzdG9ncmFtLWJhcnNcIj5cbiAgICAgICAgICAgICAgICB7aGlzdG9ncmFtc0J5R3JvdXAuZmlsdGVyZWRCaW5zLm1hcCgoYmFyLCBpZHgsIGxpc3QpID0+IHtcbiAgICAgICAgICAgICAgICAgIGNvbnN0IGluUmFuZ2UgPSBpc0JhckluUmFuZ2UoYmFyLCBpZHgsIGxpc3QsIGRvbWFpbiwgdmFsdWUpO1xuICAgICAgICAgICAgICAgICAgY29uc3Qgd1JhdGlvID0gaW5SYW5nZVxuICAgICAgICAgICAgICAgICAgICA/IGhpc3RvZ3JhbVN0eWxlLmhpZ2hsaWdodFdcbiAgICAgICAgICAgICAgICAgICAgOiBoaXN0b2dyYW1TdHlsZS51bkhpZ2hsaWdodGVkVztcbiAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgIDxCYXJcbiAgICAgICAgICAgICAgICAgICAgICBpc092ZXJsYXk9e2ZhbHNlfVxuICAgICAgICAgICAgICAgICAgICAgIGluUmFuZ2U9e2luUmFuZ2V9XG4gICAgICAgICAgICAgICAgICAgICAgY29sb3I9e0hJU1RPR1JBTV9NQVNLX0ZHQ09MT1J9XG4gICAgICAgICAgICAgICAgICAgICAga2V5PXtgbWFzay0ke2lkeH1gfVxuICAgICAgICAgICAgICAgICAgICAgIGhlaWdodD17eShiYXJbY291bnRQcm9wXSl9XG4gICAgICAgICAgICAgICAgICAgICAgd2lkdGg9e2JhcldpZHRoICogd1JhdGlvfVxuICAgICAgICAgICAgICAgICAgICAgIHg9e3goYmFyLngwKSArIChiYXJXaWR0aCAqICgxIC0gd1JhdGlvKSkgLyAyfVxuICAgICAgICAgICAgICAgICAgICAgIHk9e2hlaWdodCAtIHkoYmFyW2NvdW50UHJvcF0pfVxuICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB9KX1cbiAgICAgICAgICAgICAgPC9nPlxuICAgICAgICAgICAgPC9tYXNrPlxuICAgICAgICAgIDwvZGVmcz5cbiAgICAgICAgICA8ZyB0cmFuc2Zvcm09XCJ0cmFuc2xhdGUoMCwwKVwiPlxuICAgICAgICAgICAgPEhpc3RvZ3JhbU1hc2tSZWN0XG4gICAgICAgICAgICAgIHg9XCIwXCJcbiAgICAgICAgICAgICAgeT1cIjBcIlxuICAgICAgICAgICAgICB3aWR0aD1cIjEwMCVcIlxuICAgICAgICAgICAgICBoZWlnaHQ9e2hlaWdodCArIG1hcmdpbi5ib3R0b219XG4gICAgICAgICAgICAgIG1hc2s9XCJ1cmwoI2hpc3RvZ3JhbS1tYXNrKVwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvZz5cbiAgICAgICAgICB7aXNNYXNrZWQgPT09IEhJU1RPR1JBTV9NQVNLX01PREUuTWFza1dpdGhPdmVybGF5ICYmIChcbiAgICAgICAgICAgIDxnIGtleT1cImJpbnNcIiB0cmFuc2Zvcm09XCJ0cmFuc2xhdGUoMCwwKVwiIGNsYXNzTmFtZT1cIm92ZXJsYXktaGlzdG9ncmFtLWJhcnNcIj5cbiAgICAgICAgICAgICAge2hpc3RvZ3JhbXNCeUdyb3VwLmJpbnMubWFwKChiYXIsIGlkeCwgbGlzdCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGZpbHRlckJhciA9IGhpc3RvZ3JhbXNCeUdyb3VwLmZpbHRlcmVkQmluc1tpZHhdO1xuICAgICAgICAgICAgICAgIGNvbnN0IG1hc2tIZWlnaHQgPSBmaWx0ZXJCYXJcbiAgICAgICAgICAgICAgICAgID8geShiYXJbY291bnRQcm9wXSkgLSB5KGZpbHRlckJhcltjb3VudFByb3BdKVxuICAgICAgICAgICAgICAgICAgOiB5KGJhcltjb3VudFByb3BdKTtcbiAgICAgICAgICAgICAgICBjb25zdCBpblJhbmdlID0gaXNCYXJJblJhbmdlKGJhciwgaWR4LCBsaXN0LCBkb21haW4sIHZhbHVlKTtcbiAgICAgICAgICAgICAgICBjb25zdCB3UmF0aW8gPSBpblJhbmdlID8gaGlzdG9ncmFtU3R5bGUuaGlnaGxpZ2h0VyA6IGhpc3RvZ3JhbVN0eWxlLnVuSGlnaGxpZ2h0ZWRXO1xuICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICA8QmFyXG4gICAgICAgICAgICAgICAgICAgIGluUmFuZ2U9e2luUmFuZ2V9XG4gICAgICAgICAgICAgICAgICAgIGlzT3ZlcmxheT17dHJ1ZX1cbiAgICAgICAgICAgICAgICAgICAga2V5PXtgYmFyLSR7aWR4fWB9XG4gICAgICAgICAgICAgICAgICAgIGhlaWdodD17bWFza0hlaWdodH1cbiAgICAgICAgICAgICAgICAgICAgd2lkdGg9e2JhcldpZHRoICogd1JhdGlvfVxuICAgICAgICAgICAgICAgICAgICB4PXt4KGJhci54MCkgKyAoYmFyV2lkdGggKiAoMSAtIHdSYXRpbykpIC8gMn1cbiAgICAgICAgICAgICAgICAgICAgeT17aGVpZ2h0IC0geShiYXJbY291bnRQcm9wXSl9XG4gICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIH0pfVxuICAgICAgICAgICAgPC9nPlxuICAgICAgICAgICl9XG4gICAgICAgICAgPEhpc3RvZ3JhbUJyZWFrTGluZT5cbiAgICAgICAgICAgIHsoYnJlYWtMaW5lcyA/PyBbXSkubWFwKChwb3MsIGlkeCkgPT4ge1xuICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgIDxwYXRoIGtleT17YG1hc2stbGluZS0ke2lkeH1gfSBzdHJva2VEYXNoYXJyYXk9XCI0LDRcIiBkPXtgTSR7cG9zfSwgMCBsMCAxMDBgfSAvPlxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSl9XG4gICAgICAgICAgPC9IaXN0b2dyYW1CcmVha0xpbmU+XG4gICAgICAgICAgPGcgdHJhbnNmb3JtPXtgdHJhbnNsYXRlKCR7aXNSYW5nZWQgPyAwIDogYmFyV2lkdGggLyAyfSwgMClgfT57YnJ1c2hDb21wb25lbnR9PC9nPlxuICAgICAgICA8L0hpc3RvZ3JhbVdyYXBwZXI+XG4gICAgICApO1xuICAgIH07XG5cbiAgICByZXR1cm4gaXNNYXNrZWQgPyAoXG4gICAgICBtYXNrZWRIaXN0b2dyYW0oKVxuICAgICkgOiAoXG4gICAgICA8SGlzdG9ncmFtV3JhcHBlclxuICAgICAgICB3aWR0aD17d2lkdGh9XG4gICAgICAgIGhlaWdodD17aGVpZ2h0fVxuICAgICAgICBzdHlsZT17e21hcmdpbjogYCR7bWFyZ2luLnRvcH1weCAke21hcmdpbi5yaWdodH1weCAke21hcmdpbi5ib3R0b219cHggJHttYXJnaW4ubGVmdH1weGB9fVxuICAgICAgPlxuICAgICAgICA8Zz5cbiAgICAgICAgICB7Z3JvdXBLZXlzLm1hcCgoa2V5LCBpKSA9PiAoXG4gICAgICAgICAgICA8ZyBrZXk9e2tleX0gY2xhc3NOYW1lPVwiaGlzdG9ncmFtLWJhcnNcIj5cbiAgICAgICAgICAgICAge2hpc3RvZ3JhbXNCeUdyb3VwW2tleV0ubWFwKChiYXIsIGlkeCwgbGlzdCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGluUmFuZ2UgPSBpc0JhckluUmFuZ2UoYmFyLCBpZHgsIGxpc3QsIGRvbWFpbiwgdmFsdWUpO1xuXG4gICAgICAgICAgICAgICAgY29uc3Qgd1JhdGlvID0gaW5SYW5nZSA/IGhpc3RvZ3JhbVN0eWxlLmhpZ2hsaWdodFcgOiBoaXN0b2dyYW1TdHlsZS51bkhpZ2hsaWdodGVkVztcbiAgICAgICAgICAgICAgICBjb25zdCBzdGFydFggPVxuICAgICAgICAgICAgICAgICAgeCh1bmRlZmluZWRUb1plcm8oYmFyLngwKSkgKyBiYXJXaWR0aCAqIGkgKyAoYmFyV2lkdGggKiAoMSAtIHdSYXRpbykpIC8gMjtcbiAgICAgICAgICAgICAgICBpZiAoc3RhcnRYID4gMCAmJiBzdGFydFggKyBiYXJXaWR0aCAqIGhpc3RvZ3JhbVN0eWxlLnVuSGlnaGxpZ2h0ZWRXIDw9IHdpZHRoKSB7XG4gICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICA8QmFyXG4gICAgICAgICAgICAgICAgICAgICAgaXNPdmVybGF5PXtmYWxzZX1cbiAgICAgICAgICAgICAgICAgICAgICBpblJhbmdlPXtpblJhbmdlfVxuICAgICAgICAgICAgICAgICAgICAgIGNvbG9yPXtjb2xvcnNCeUdyb3VwPy5ba2V5XX1cbiAgICAgICAgICAgICAgICAgICAgICBrZXk9e2BiYXItJHtpZHh9YH1cbiAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ9e3koYmFyW2NvdW50UHJvcF0pfVxuICAgICAgICAgICAgICAgICAgICAgIHdpZHRoPXtiYXJXaWR0aCAqIHdSYXRpb31cbiAgICAgICAgICAgICAgICAgICAgICB4PXtzdGFydFh9XG4gICAgICAgICAgICAgICAgICAgICAgcng9ezF9XG4gICAgICAgICAgICAgICAgICAgICAgcnk9ezF9XG4gICAgICAgICAgICAgICAgICAgICAgeT17aGVpZ2h0IC0geShiYXJbY291bnRQcm9wXSl9XG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgICAgfSl9XG4gICAgICAgICAgICA8L2c+XG4gICAgICAgICAgKSl9XG4gICAgICAgIDwvZz5cbiAgICAgICAgPGcgdHJhbnNmb3JtPXtgdHJhbnNsYXRlKCR7aXNSYW5nZWQgPyAwIDogYmFyV2lkdGggLyAyfSwgMClgfT57YnJ1c2hDb21wb25lbnR9PC9nPlxuICAgICAgPC9IaXN0b2dyYW1XcmFwcGVyPlxuICAgICk7XG4gIH07XG5cbiAgY29uc3QgSGlzdG9ncmFtUGxvdFdpdGhHcm91cHMgPSBwcm9wcyA9PiB7XG4gICAgY29uc3QgZ3JvdXBzID0gdXNlTWVtbyhcbiAgICAgICgpID0+IChwcm9wcy5oaXN0b2dyYW1zQnlHcm91cCA/IE9iamVjdC5rZXlzKHByb3BzLmhpc3RvZ3JhbXNCeUdyb3VwKSA6IG51bGwpLFxuICAgICAgW3Byb3BzLmhpc3RvZ3JhbXNCeUdyb3VwXVxuICAgICk7XG5cbiAgICBpZiAoIWdyb3Vwcz8ubGVuZ3RoKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICByZXR1cm4gPEhpc3RvZ3JhbVBsb3Qgey4uLnByb3BzfSAvPjtcbiAgfTtcblxuICByZXR1cm4gSGlzdG9ncmFtUGxvdFdpdGhHcm91cHM7XG59XG5leHBvcnQgZGVmYXVsdCBIaXN0b2dyYW1QbG90RmFjdG9yeTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBR0EsSUFBQUEsTUFBQSxHQUFBQyx1QkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsUUFBQSxHQUFBRCxPQUFBO0FBQ0EsSUFBQUUsUUFBQSxHQUFBRixPQUFBO0FBQ0EsSUFBQUcsUUFBQSxHQUFBSCxPQUFBO0FBQ0EsSUFBQUksaUJBQUEsR0FBQUMsc0JBQUEsQ0FBQUwsT0FBQTtBQUF1QyxJQUFBTSxlQUFBLEVBQUFDLGdCQUFBLEVBQUFDLGdCQUFBLEVBUHZDO0FBQ0E7QUFBQSxTQUFBQyx5QkFBQUMsQ0FBQSw2QkFBQUMsT0FBQSxtQkFBQUMsQ0FBQSxPQUFBRCxPQUFBLElBQUFFLENBQUEsT0FBQUYsT0FBQSxZQUFBRix3QkFBQSxZQUFBQSx5QkFBQUMsQ0FBQSxXQUFBQSxDQUFBLEdBQUFHLENBQUEsR0FBQUQsQ0FBQSxLQUFBRixDQUFBO0FBQUEsU0FBQVgsd0JBQUFXLENBQUEsRUFBQUUsQ0FBQSxTQUFBQSxDQUFBLElBQUFGLENBQUEsSUFBQUEsQ0FBQSxDQUFBSSxVQUFBLFNBQUFKLENBQUEsZUFBQUEsQ0FBQSxnQkFBQUssT0FBQSxDQUFBTCxDQUFBLDBCQUFBQSxDQUFBLHNCQUFBQSxDQUFBLFFBQUFHLENBQUEsR0FBQUosd0JBQUEsQ0FBQUcsQ0FBQSxPQUFBQyxDQUFBLElBQUFBLENBQUEsQ0FBQUcsR0FBQSxDQUFBTixDQUFBLFVBQUFHLENBQUEsQ0FBQUksR0FBQSxDQUFBUCxDQUFBLE9BQUFRLENBQUEsS0FBQUMsU0FBQSxVQUFBQyxDQUFBLEdBQUFDLE1BQUEsQ0FBQUMsY0FBQSxJQUFBRCxNQUFBLENBQUFFLHdCQUFBLFdBQUFDLENBQUEsSUFBQWQsQ0FBQSxvQkFBQWMsQ0FBQSxPQUFBQyxjQUFBLENBQUFDLElBQUEsQ0FBQWhCLENBQUEsRUFBQWMsQ0FBQSxTQUFBRyxDQUFBLEdBQUFQLENBQUEsR0FBQUMsTUFBQSxDQUFBRSx3QkFBQSxDQUFBYixDQUFBLEVBQUFjLENBQUEsVUFBQUcsQ0FBQSxLQUFBQSxDQUFBLENBQUFWLEdBQUEsSUFBQVUsQ0FBQSxDQUFBQyxHQUFBLElBQUFQLE1BQUEsQ0FBQUMsY0FBQSxDQUFBSixDQUFBLEVBQUFNLENBQUEsRUFBQUcsQ0FBQSxJQUFBVCxDQUFBLENBQUFNLENBQUEsSUFBQWQsQ0FBQSxDQUFBYyxDQUFBLFlBQUFOLENBQUEsY0FBQVIsQ0FBQSxFQUFBRyxDQUFBLElBQUFBLENBQUEsQ0FBQWUsR0FBQSxDQUFBbEIsQ0FBQSxFQUFBUSxDQUFBLEdBQUFBLENBQUE7QUFVQTtBQUNPLElBQU1XLG1CQUFtQixHQUFBQyxPQUFBLENBQUFELG1CQUFBLEdBQUc7RUFDakNFLE1BQU0sRUFBRSxDQUFDO0VBQ1RDLElBQUksRUFBRSxDQUFDO0VBQ1BDLGVBQWUsRUFBRTtBQUNuQixDQUFDO0FBQ0QsSUFBTUMsc0JBQXNCLEdBQUcsU0FBUztBQUN4QyxJQUFNQyxzQkFBc0IsR0FBRyxTQUFTO0FBRXhDLElBQU1DLGNBQWMsR0FBRztFQUNyQkMsVUFBVSxFQUFFLEdBQUc7RUFDZkMsY0FBYyxFQUFFO0FBQ2xCLENBQUM7QUFFRCxJQUFNQyxnQkFBZ0IsR0FBR0MsNEJBQU0sQ0FBQ0MsR0FBRyxDQUFBbkMsZUFBQSxLQUFBQSxlQUFBLE9BQUFvQyx1QkFBQSw0Q0FFbEM7QUFFRCxJQUFNQyxpQkFBaUIsR0FBR0gsNEJBQU0sQ0FBQ0ksSUFBSSxDQUFBckMsZ0JBQUEsS0FBQUEsZ0JBQUEsT0FBQW1DLHVCQUFBLHNDQUMzQixVQUFBRyxLQUFLO0VBQUEsT0FBSUEsS0FBSyxDQUFDQyxLQUFLLENBQUNDLGVBQWU7QUFBQSxFQUM3QztBQUVELElBQU1DLGtCQUFrQixHQUFHUiw0QkFBTSxDQUFDUyxDQUFDLENBQUF6QyxnQkFBQSxLQUFBQSxnQkFBQSxPQUFBa0MsdUJBQUEsNkZBQ3ZCLFVBQUFHLEtBQUs7RUFBQSxPQUFJQSxLQUFLLENBQUNDLEtBQUssQ0FBQ0ksdUJBQXVCO0FBQUEsRUFHdkQ7QUFNRCxJQUFNQyxhQUFhLEdBQUdYLDRCQUFNLENBQUNJLElBQUksQ0FDL0IsVUFBQVEsSUFBQTtFQUFBLElBQUVOLEtBQUssR0FBQU0sSUFBQSxDQUFMTixLQUFLO0lBQUVPLE9BQU8sR0FBQUQsSUFBQSxDQUFQQyxPQUFPO0lBQUVDLFNBQVMsR0FBQUYsSUFBQSxDQUFURSxTQUFTO0lBQUVDLEtBQUssR0FBQUgsSUFBQSxDQUFMRyxLQUFLO0VBQUEsY0FBQUMsTUFBQSxDQUVoQ0YsU0FBUyxZQUFBRSxNQUFBLENBQ0lELEtBQUssYUFBTEEsS0FBSyxjQUFMQSxLQUFLLEdBQUlULEtBQUssQ0FBQ1cscUJBQXFCLFNBQzdDSixPQUFPLFlBQUFHLE1BQUEsQ0FDRUQsS0FBSyxhQUFMQSxLQUFLLGNBQUxBLEtBQUssR0FBSVQsS0FBSyxDQUFDWSxvQkFBb0Isa0JBQUFGLE1BQUEsQ0FDbkNELEtBQUssR0FBRyxJQUFBSSxZQUFHLEVBQUNKLEtBQUssQ0FBQyxDQUFDSyxNQUFNLENBQUMsQ0FBQyxHQUFHZCxLQUFLLENBQUNlLHFCQUFxQixNQUFHO0FBQUEsQ0FHN0UsQ0FBQztBQUNELElBQU1DLEdBQUcsZ0JBQUdDLGlCQUFLLENBQUNDLElBQUksQ0FBQ2IsYUFBYSxDQUFDO0FBQ3JDVyxHQUFHLENBQUNHLFdBQVcsR0FBRyxLQUFLO0FBRXZCLElBQU1DLFlBQVksR0FBRyxTQUFmQSxZQUFZQSxDQUNoQkMsR0FBNkIsRUFDN0JDLEtBQWEsRUFDYkMsSUFBVyxFQUNYQyxZQUFtQixFQUNuQkMsV0FBa0IsRUFDZjtFQUNIO0VBQ0E7RUFDQSxJQUFNQyxXQUFXLEdBQ2ZKLEtBQUssS0FBSyxDQUFDLEdBQUdELEdBQUcsQ0FBQ00sRUFBRSxJQUFJSCxZQUFZLENBQUMsQ0FBQyxDQUFDLElBQUlBLFlBQVksQ0FBQyxDQUFDLENBQUMsS0FBS0MsV0FBVyxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUs7RUFDdkY7RUFDQTtFQUNBLElBQU1HLFdBQVcsR0FDZk4sS0FBSyxLQUFLQyxJQUFJLENBQUNNLE1BQU0sR0FBRyxDQUFDLEdBQ3JCUixHQUFHLENBQUNTLEVBQUUsSUFBSU4sWUFBWSxDQUFDLENBQUMsQ0FBQyxJQUFJQSxZQUFZLENBQUMsQ0FBQyxDQUFDLEtBQUtDLFdBQVcsQ0FBQyxDQUFDLENBQUMsR0FDL0QsS0FBSztFQUNYLE9BQU8sQ0FBQ0MsV0FBVyxJQUFJTCxHQUFHLENBQUNNLEVBQUUsSUFBSUYsV0FBVyxDQUFDLENBQUMsQ0FBQyxNQUFNRyxXQUFXLElBQUlQLEdBQUcsQ0FBQ1MsRUFBRSxJQUFJTCxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDL0YsQ0FBQztBQXVCRCxTQUFTTSxvQkFBb0JBLENBQUEsRUFBRztFQUM5QixJQUFNQyxhQUFhLEdBQUcsU0FBaEJBLGFBQWFBLENBQUFDLEtBQUEsRUFhTztJQUFBLElBWnhCQyxLQUFLLEdBQUFELEtBQUEsQ0FBTEMsS0FBSztNQUNMQyxNQUFNLEdBQUFGLEtBQUEsQ0FBTkUsTUFBTTtNQUNOQyxpQkFBaUIsR0FBQUgsS0FBQSxDQUFqQkcsaUJBQWlCO01BQ2pCQyxhQUFhLEdBQUFKLEtBQUEsQ0FBYkksYUFBYTtNQUFBQyxjQUFBLEdBQUFMLEtBQUEsQ0FDYk0sUUFBUTtNQUFSQSxRQUFRLEdBQUFELGNBQUEsY0FBR3ZELG1CQUFtQixDQUFDRSxNQUFNLEdBQUFxRCxjQUFBO01BQUFFLGVBQUEsR0FBQVAsS0FBQSxDQUNyQ1EsU0FBUztNQUFUQSxTQUFTLEdBQUFELGVBQUEsY0FBRyxPQUFPLEdBQUFBLGVBQUE7TUFDbkJFLE1BQU0sR0FBQVQsS0FBQSxDQUFOUyxNQUFNO01BQ05DLFFBQVEsR0FBQVYsS0FBQSxDQUFSVSxRQUFRO01BQ1JDLEtBQUssR0FBQVgsS0FBQSxDQUFMVyxLQUFLO01BQ0xDLEtBQUssR0FBQVosS0FBQSxDQUFMWSxLQUFLO01BQ0xDLGNBQWMsR0FBQWIsS0FBQSxDQUFkYSxjQUFjO01BQ2RDLFVBQVUsR0FBQWQsS0FBQSxDQUFWYyxVQUFVO0lBRVYsSUFBTUMsZUFBZSxHQUFHLFNBQWxCQSxlQUFlQSxDQUFJQyxDQUFxQjtNQUFBLE9BQU1BLENBQUMsR0FBR0EsQ0FBQyxHQUFHLENBQUM7SUFBQSxDQUFDO0lBQzlELElBQU1DLFNBQVMsR0FBRyxJQUFBQyxjQUFPLEVBQ3ZCO01BQUEsT0FDRTVFLE1BQU0sQ0FBQzZFLElBQUksQ0FBQ2hCLGlCQUFpQjtNQUMzQjtNQUFBLENBQ0NpQixNQUFNLENBQUMsVUFBQUMsR0FBRztRQUFBLElBQUFDLHFCQUFBO1FBQUEsT0FBSSxFQUFBQSxxQkFBQSxHQUFBbkIsaUJBQWlCLENBQUNrQixHQUFHLENBQUMsY0FBQUMscUJBQUEsdUJBQXRCQSxxQkFBQSxDQUF3QjFCLE1BQU0sSUFBRyxDQUFDO01BQUEsRUFBQztJQUFBLEdBQ3RELENBQUNPLGlCQUFpQixDQUNwQixDQUFDO0lBRUQsSUFBTW9CLE1BQU0sR0FBRyxJQUFBTCxjQUFPLEVBQ3BCO01BQUEsSUFBQU0sSUFBQSxFQUFBQyxJQUFBO01BQUEsT0FDRWQsS0FBSyxhQUFMQSxLQUFLLGNBQUxBLEtBQUssR0FBSSxFQUFBYSxJQUFBLEdBQ1AsSUFBQUUsWUFBRyxFQUFDVCxTQUFTLEVBQUUsVUFBQUksR0FBRztRQUFBLE9BQUlsQixpQkFBaUIsQ0FBQ2tCLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDM0IsRUFBRTtNQUFBLEVBQUMsY0FBQThCLElBQUEsY0FBQUEsSUFBQSxHQUFJLENBQUMsR0FBQUMsSUFBQSxHQUN4RCxJQUFBRSxZQUFHLEVBQUNWLFNBQVMsRUFBRSxVQUFBSSxHQUFHO1FBQUEsT0FBSWxCLGlCQUFpQixDQUFDa0IsR0FBRyxDQUFDLENBQUNsQixpQkFBaUIsQ0FBQ2tCLEdBQUcsQ0FBQyxDQUFDekIsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDQyxFQUFFO01BQUEsRUFBQyxjQUFBNEIsSUFBQSxjQUFBQSxJQUFBLEdBQUksQ0FBQyxDQUN6RjtJQUFBLEdBQ0gsQ0FBQ2QsS0FBSyxFQUFFUixpQkFBaUIsRUFBRWMsU0FBUyxDQUN0QyxDQUFDO0lBRUQsSUFBTVcsUUFBUSxHQUFHLElBQUFWLGNBQU8sRUFBQyxZQUFNO01BQzdCLElBQUlELFNBQVMsQ0FBQ3JCLE1BQU0sS0FBSyxDQUFDLEVBQUUsT0FBTyxDQUFDO01BQ3BDO01BQ0EsSUFBTWlDLFFBQVEsR0FBR1osU0FBUyxDQUFDYSxNQUFNLENBQUMsVUFBQ0MsSUFBSSxFQUFFVixHQUFHLEVBQUVXLElBQUksRUFBSztRQUNyRCxJQUFJN0IsaUJBQWlCLENBQUNrQixHQUFHLENBQUMsQ0FBQ3pCLE1BQU0sR0FBR21DLElBQUksQ0FBQ25DLE1BQU0sRUFBRTtVQUMvQyxPQUFPTyxpQkFBaUIsQ0FBQ2tCLEdBQUcsQ0FBQztRQUMvQjtRQUNBLE9BQU9VLElBQUk7TUFDYixDQUFDLEVBQUU1QixpQkFBaUIsQ0FBQ2MsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7O01BRW5DO01BQ0EsSUFBTWdCLFNBQVMsR0FBR0osUUFBUSxDQUFDakMsTUFBTSxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQztNQUM3QyxJQUFNc0MsS0FBSyxHQUFHTCxRQUFRLENBQUNJLFNBQVMsQ0FBQyxDQUFDcEMsRUFBRSxHQUFHZ0MsUUFBUSxDQUFDSSxTQUFTLENBQUMsQ0FBQ3ZDLEVBQUU7TUFDN0QsSUFBTXlDLE9BQU8sR0FBRyxDQUFDWixNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUdBLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSVcsS0FBSztNQUMvQyxJQUFJLENBQUNDLE9BQU8sRUFBRSxPQUFPLENBQUM7TUFDdEIsT0FBT2xDLEtBQUssR0FBR2tDLE9BQU8sSUFBSTdCLFFBQVEsR0FBRyxDQUFDLEdBQUdXLFNBQVMsQ0FBQ3JCLE1BQU0sQ0FBQztJQUM1RCxDQUFDLEVBQUUsQ0FBQ08saUJBQWlCLEVBQUVvQixNQUFNLEVBQUVOLFNBQVMsRUFBRWhCLEtBQUssRUFBRUssUUFBUSxDQUFDLENBQUM7SUFFM0QsSUFBTVUsQ0FBQyxHQUFHLElBQUFFLGNBQU8sRUFDZjtNQUFBLE9BQU0sSUFBQWtCLG9CQUFXLEVBQUMsQ0FBQyxDQUFDYixNQUFNLENBQUNBLE1BQU0sQ0FBQyxDQUFDWixLQUFLLENBQUMsQ0FBQ2lCLFFBQVEsRUFBRTNCLEtBQUssQ0FBQyxDQUFDO0lBQUEsR0FDM0QsQ0FBQ3NCLE1BQU0sRUFBRXRCLEtBQUssRUFBRTJCLFFBQVEsQ0FDMUIsQ0FBQztJQUVELElBQU1TLENBQUMsR0FBRyxJQUFBbkIsY0FBTyxFQUNmO01BQUEsT0FDRSxJQUFBa0Isb0JBQVcsRUFBQyxDQUFDLENBQ1ZiLE1BQU0sQ0FBQyxDQUNOLENBQUMsRUFDRGUsSUFBSSxDQUFDWCxHQUFHLENBQ05ZLE1BQU0sQ0FBQyxJQUFBWixZQUFHLEVBQUNWLFNBQVMsRUFBRSxVQUFBSSxHQUFHO1FBQUEsT0FBSSxJQUFBTSxZQUFHLEVBQUN4QixpQkFBaUIsQ0FBQ2tCLEdBQUcsQ0FBQyxFQUFFLFVBQUFtQixDQUFDO1VBQUEsT0FBSUEsQ0FBQyxDQUFDaEMsU0FBUyxDQUFDO1FBQUEsRUFBQztNQUFBLEVBQUMsQ0FBQyxFQUM3RSxDQUNGLENBQUMsQ0FDRixDQUFDLENBQ0RHLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRVQsTUFBTSxDQUFDLENBQUM7SUFBQSxHQUN2QixDQUFDQyxpQkFBaUIsRUFBRWMsU0FBUyxFQUFFZixNQUFNLEVBQUVNLFNBQVMsQ0FDbEQsQ0FBQztJQUVELElBQUlTLFNBQVMsQ0FBQ3JCLE1BQU0sS0FBSyxDQUFDLEVBQUU7TUFDMUIsT0FBTyxJQUFJO0lBQ2I7SUFFQSxJQUFNNkMsZUFBZSxHQUFHLFNBQWxCQSxlQUFlQSxDQUFBLEVBQVM7TUFDNUIsb0JBQ0UxSCxNQUFBLFlBQUEySCxhQUFBLENBQUNsRixnQkFBZ0I7UUFDZnlDLEtBQUssRUFBRUEsS0FBTTtRQUNiQyxNQUFNLEVBQUVBLE1BQU87UUFDZnlDLEtBQUssRUFBRTtVQUFDbEMsTUFBTSxLQUFBaEMsTUFBQSxDQUFLZ0MsTUFBTSxDQUFDbUMsR0FBRyxTQUFBbkUsTUFBQSxDQUFNZ0MsTUFBTSxDQUFDb0MsS0FBSyxTQUFBcEUsTUFBQSxDQUFNZ0MsTUFBTSxDQUFDcUMsTUFBTSxTQUFBckUsTUFBQSxDQUFNZ0MsTUFBTSxDQUFDc0MsSUFBSTtRQUFJO01BQUUsZ0JBRXpGaEksTUFBQSxZQUFBMkgsYUFBQSw0QkFDRTNILE1BQUEsWUFBQTJILGFBQUE7UUFBTU0sRUFBRSxFQUFDO01BQWdCLGdCQUN2QmpJLE1BQUEsWUFBQTJILGFBQUE7UUFDRTFCLENBQUMsRUFBQyxHQUFHO1FBQ0xxQixDQUFDLEVBQUMsR0FBRztRQUNMcEMsS0FBSyxFQUFFQSxLQUFNO1FBQ2JDLE1BQU0sRUFBRUEsTUFBTSxHQUFHTyxNQUFNLENBQUNxQyxNQUFPO1FBQy9CRyxJQUFJLEVBQUU5RjtNQUF1QixDQUM5QixDQUFDLGVBQ0ZwQyxNQUFBLFlBQUEySCxhQUFBO1FBQUdyQixHQUFHLEVBQUMsZUFBZTtRQUFDNkIsU0FBUyxFQUFDO01BQWdCLEdBQzlDL0MsaUJBQWlCLENBQUNnRCxZQUFZLENBQUNDLEdBQUcsQ0FBQyxVQUFDaEUsR0FBRyxFQUFFaUUsR0FBRyxFQUFFL0QsSUFBSSxFQUFLO1FBQ3RELElBQU1oQixPQUFPLEdBQUdhLFlBQVksQ0FBQ0MsR0FBRyxFQUFFaUUsR0FBRyxFQUFFL0QsSUFBSSxFQUFFaUMsTUFBTSxFQUFFWCxLQUFLLENBQUM7UUFDM0QsSUFBTTBDLE1BQU0sR0FBR2hGLE9BQU8sR0FDbEJqQixjQUFjLENBQUNDLFVBQVUsR0FDekJELGNBQWMsQ0FBQ0UsY0FBYztRQUNqQyxvQkFDRXhDLE1BQUEsWUFBQTJILGFBQUEsQ0FBQzNELEdBQUc7VUFDRlIsU0FBUyxFQUFFLEtBQU07VUFDakJELE9BQU8sRUFBRUEsT0FBUTtVQUNqQkUsS0FBSyxFQUFFcEIsc0JBQXVCO1VBQzlCaUUsR0FBRyxVQUFBNUMsTUFBQSxDQUFVNEUsR0FBRyxDQUFHO1VBQ25CbkQsTUFBTSxFQUFFbUMsQ0FBQyxDQUFDakQsR0FBRyxDQUFDb0IsU0FBUyxDQUFDLENBQUU7VUFDMUJQLEtBQUssRUFBRTJCLFFBQVEsR0FBRzBCLE1BQU87VUFDekJ0QyxDQUFDLEVBQUVBLENBQUMsQ0FBQzVCLEdBQUcsQ0FBQ00sRUFBRSxDQUFDLEdBQUlrQyxRQUFRLElBQUksQ0FBQyxHQUFHMEIsTUFBTSxDQUFDLEdBQUksQ0FBRTtVQUM3Q2pCLENBQUMsRUFBRW5DLE1BQU0sR0FBR21DLENBQUMsQ0FBQ2pELEdBQUcsQ0FBQ29CLFNBQVMsQ0FBQztRQUFFLENBQy9CLENBQUM7TUFFTixDQUFDLENBQ0EsQ0FDQyxDQUNGLENBQUMsZUFDUHpGLE1BQUEsWUFBQTJILGFBQUE7UUFBR2EsU0FBUyxFQUFDO01BQWdCLGdCQUMzQnhJLE1BQUEsWUFBQTJILGFBQUEsQ0FBQzlFLGlCQUFpQjtRQUNoQm9ELENBQUMsRUFBQyxHQUFHO1FBQ0xxQixDQUFDLEVBQUMsR0FBRztRQUNMcEMsS0FBSyxFQUFDLE1BQU07UUFDWkMsTUFBTSxFQUFFQSxNQUFNLEdBQUdPLE1BQU0sQ0FBQ3FDLE1BQU87UUFDL0JVLElBQUksRUFBQztNQUFzQixDQUM1QixDQUNBLENBQUMsRUFDSGxELFFBQVEsS0FBS3hELG1CQUFtQixDQUFDSSxlQUFlLGlCQUMvQ25DLE1BQUEsWUFBQTJILGFBQUE7UUFBR3JCLEdBQUcsRUFBQyxNQUFNO1FBQUNrQyxTQUFTLEVBQUMsZ0JBQWdCO1FBQUNMLFNBQVMsRUFBQztNQUF3QixHQUN4RS9DLGlCQUFpQixDQUFDc0QsSUFBSSxDQUFDTCxHQUFHLENBQUMsVUFBQ2hFLEdBQUcsRUFBRWlFLEdBQUcsRUFBRS9ELElBQUksRUFBSztRQUM5QyxJQUFNb0UsU0FBUyxHQUFHdkQsaUJBQWlCLENBQUNnRCxZQUFZLENBQUNFLEdBQUcsQ0FBQztRQUNyRCxJQUFNTSxVQUFVLEdBQUdELFNBQVMsR0FDeEJyQixDQUFDLENBQUNqRCxHQUFHLENBQUNvQixTQUFTLENBQUMsQ0FBQyxHQUFHNkIsQ0FBQyxDQUFDcUIsU0FBUyxDQUFDbEQsU0FBUyxDQUFDLENBQUMsR0FDM0M2QixDQUFDLENBQUNqRCxHQUFHLENBQUNvQixTQUFTLENBQUMsQ0FBQztRQUNyQixJQUFNbEMsT0FBTyxHQUFHYSxZQUFZLENBQUNDLEdBQUcsRUFBRWlFLEdBQUcsRUFBRS9ELElBQUksRUFBRWlDLE1BQU0sRUFBRVgsS0FBSyxDQUFDO1FBQzNELElBQU0wQyxNQUFNLEdBQUdoRixPQUFPLEdBQUdqQixjQUFjLENBQUNDLFVBQVUsR0FBR0QsY0FBYyxDQUFDRSxjQUFjO1FBQ2xGLG9CQUNFeEMsTUFBQSxZQUFBMkgsYUFBQSxDQUFDM0QsR0FBRztVQUNGVCxPQUFPLEVBQUVBLE9BQVE7VUFDakJDLFNBQVMsRUFBRSxJQUFLO1VBQ2hCOEMsR0FBRyxTQUFBNUMsTUFBQSxDQUFTNEUsR0FBRyxDQUFHO1VBQ2xCbkQsTUFBTSxFQUFFeUQsVUFBVztVQUNuQjFELEtBQUssRUFBRTJCLFFBQVEsR0FBRzBCLE1BQU87VUFDekJ0QyxDQUFDLEVBQUVBLENBQUMsQ0FBQzVCLEdBQUcsQ0FBQ00sRUFBRSxDQUFDLEdBQUlrQyxRQUFRLElBQUksQ0FBQyxHQUFHMEIsTUFBTSxDQUFDLEdBQUksQ0FBRTtVQUM3Q2pCLENBQUMsRUFBRW5DLE1BQU0sR0FBR21DLENBQUMsQ0FBQ2pELEdBQUcsQ0FBQ29CLFNBQVMsQ0FBQztRQUFFLENBQy9CLENBQUM7TUFFTixDQUFDLENBQ0EsQ0FDSixlQUNEekYsTUFBQSxZQUFBMkgsYUFBQSxDQUFDekUsa0JBQWtCLFFBQ2hCLENBQUM2QyxVQUFVLGFBQVZBLFVBQVUsY0FBVkEsVUFBVSxHQUFJLEVBQUUsRUFBRXNDLEdBQUcsQ0FBQyxVQUFDUSxHQUFHLEVBQUVQLEdBQUcsRUFBSztRQUNwQyxvQkFDRXRJLE1BQUEsWUFBQTJILGFBQUE7VUFBTXJCLEdBQUcsZUFBQTVDLE1BQUEsQ0FBZTRFLEdBQUcsQ0FBRztVQUFDUSxlQUFlLEVBQUMsS0FBSztVQUFDckIsQ0FBQyxNQUFBL0QsTUFBQSxDQUFNbUYsR0FBRztRQUFhLENBQUUsQ0FBQztNQUVuRixDQUFDLENBQ2lCLENBQUMsZUFDckI3SSxNQUFBLFlBQUEySCxhQUFBO1FBQUdhLFNBQVMsZUFBQTlFLE1BQUEsQ0FBZWlDLFFBQVEsR0FBRyxDQUFDLEdBQUdrQixRQUFRLEdBQUcsQ0FBQztNQUFPLEdBQUVmLGNBQWtCLENBQ2pFLENBQUM7SUFFdkIsQ0FBQztJQUVELE9BQU9QLFFBQVEsR0FDYm1DLGVBQWUsQ0FBQyxDQUFDLGdCQUVqQjFILE1BQUEsWUFBQTJILGFBQUEsQ0FBQ2xGLGdCQUFnQjtNQUNmeUMsS0FBSyxFQUFFQSxLQUFNO01BQ2JDLE1BQU0sRUFBRUEsTUFBTztNQUNmeUMsS0FBSyxFQUFFO1FBQUNsQyxNQUFNLEtBQUFoQyxNQUFBLENBQUtnQyxNQUFNLENBQUNtQyxHQUFHLFNBQUFuRSxNQUFBLENBQU1nQyxNQUFNLENBQUNvQyxLQUFLLFNBQUFwRSxNQUFBLENBQU1nQyxNQUFNLENBQUNxQyxNQUFNLFNBQUFyRSxNQUFBLENBQU1nQyxNQUFNLENBQUNzQyxJQUFJO01BQUk7SUFBRSxnQkFFekZoSSxNQUFBLFlBQUEySCxhQUFBLFlBQ0d6QixTQUFTLENBQUNtQyxHQUFHLENBQUMsVUFBQy9CLEdBQUcsRUFBRXpFLENBQUM7TUFBQSxvQkFDcEI3QixNQUFBLFlBQUEySCxhQUFBO1FBQUdyQixHQUFHLEVBQUVBLEdBQUk7UUFBQzZCLFNBQVMsRUFBQztNQUFnQixHQUNwQy9DLGlCQUFpQixDQUFDa0IsR0FBRyxDQUFDLENBQUMrQixHQUFHLENBQUMsVUFBQ2hFLEdBQUcsRUFBRWlFLEdBQUcsRUFBRS9ELElBQUksRUFBSztRQUM5QyxJQUFNaEIsT0FBTyxHQUFHYSxZQUFZLENBQUNDLEdBQUcsRUFBRWlFLEdBQUcsRUFBRS9ELElBQUksRUFBRWlDLE1BQU0sRUFBRVgsS0FBSyxDQUFDO1FBRTNELElBQU0wQyxNQUFNLEdBQUdoRixPQUFPLEdBQUdqQixjQUFjLENBQUNDLFVBQVUsR0FBR0QsY0FBYyxDQUFDRSxjQUFjO1FBQ2xGLElBQU11RyxNQUFNLEdBQ1Y5QyxDQUFDLENBQUNELGVBQWUsQ0FBQzNCLEdBQUcsQ0FBQ00sRUFBRSxDQUFDLENBQUMsR0FBR2tDLFFBQVEsR0FBR2hGLENBQUMsR0FBSWdGLFFBQVEsSUFBSSxDQUFDLEdBQUcwQixNQUFNLENBQUMsR0FBSSxDQUFDO1FBQzNFLElBQUlRLE1BQU0sR0FBRyxDQUFDLElBQUlBLE1BQU0sR0FBR2xDLFFBQVEsR0FBR3ZFLGNBQWMsQ0FBQ0UsY0FBYyxJQUFJMEMsS0FBSyxFQUFFO1VBQzVFLG9CQUNFbEYsTUFBQSxZQUFBMkgsYUFBQSxDQUFDM0QsR0FBRztZQUNGUixTQUFTLEVBQUUsS0FBTTtZQUNqQkQsT0FBTyxFQUFFQSxPQUFRO1lBQ2pCRSxLQUFLLEVBQUU0QixhQUFhLGFBQWJBLGFBQWEsdUJBQWJBLGFBQWEsQ0FBR2lCLEdBQUcsQ0FBRTtZQUM1QkEsR0FBRyxTQUFBNUMsTUFBQSxDQUFTNEUsR0FBRyxDQUFHO1lBQ2xCbkQsTUFBTSxFQUFFbUMsQ0FBQyxDQUFDakQsR0FBRyxDQUFDb0IsU0FBUyxDQUFDLENBQUU7WUFDMUJQLEtBQUssRUFBRTJCLFFBQVEsR0FBRzBCLE1BQU87WUFDekJ0QyxDQUFDLEVBQUU4QyxNQUFPO1lBQ1ZDLEVBQUUsRUFBRSxDQUFFO1lBQ05DLEVBQUUsRUFBRSxDQUFFO1lBQ04zQixDQUFDLEVBQUVuQyxNQUFNLEdBQUdtQyxDQUFDLENBQUNqRCxHQUFHLENBQUNvQixTQUFTLENBQUM7VUFBRSxDQUMvQixDQUFDO1FBRU47UUFDQSxPQUFPLElBQUk7TUFDYixDQUFDLENBQ0EsQ0FBQztJQUFBLENBQ0wsQ0FDQSxDQUFDLGVBQ0p6RixNQUFBLFlBQUEySCxhQUFBO01BQUdhLFNBQVMsZUFBQTlFLE1BQUEsQ0FBZWlDLFFBQVEsR0FBRyxDQUFDLEdBQUdrQixRQUFRLEdBQUcsQ0FBQztJQUFPLEdBQUVmLGNBQWtCLENBQ2pFLENBQ25CO0VBQ0gsQ0FBQztFQUVELElBQU1vRCx1QkFBdUIsR0FBRyxTQUExQkEsdUJBQXVCQSxDQUFHbkcsS0FBSyxFQUFJO0lBQ3ZDLElBQU1vRyxNQUFNLEdBQUcsSUFBQWhELGNBQU8sRUFDcEI7TUFBQSxPQUFPcEQsS0FBSyxDQUFDcUMsaUJBQWlCLEdBQUc3RCxNQUFNLENBQUM2RSxJQUFJLENBQUNyRCxLQUFLLENBQUNxQyxpQkFBaUIsQ0FBQyxHQUFHLElBQUk7SUFBQSxDQUFDLEVBQzdFLENBQUNyQyxLQUFLLENBQUNxQyxpQkFBaUIsQ0FDMUIsQ0FBQztJQUVELElBQUksRUFBQytELE1BQU0sYUFBTkEsTUFBTSxlQUFOQSxNQUFNLENBQUV0RSxNQUFNLEdBQUU7TUFDbkIsT0FBTyxJQUFJO0lBQ2I7SUFFQSxvQkFBTzdFLE1BQUEsWUFBQTJILGFBQUEsQ0FBQzNDLGFBQWEsRUFBS2pDLEtBQVEsQ0FBQztFQUNyQyxDQUFDO0VBRUQsT0FBT21HLHVCQUF1QjtBQUNoQztBQUFDLElBQUFFLFFBQUEsR0FBQXBILE9BQUEsY0FDYytDLG9CQUFvQiIsImlnbm9yZUxpc3QiOltdfQ==
|
|
234
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfZDNTY2FsZSIsIl9kM0NvbG9yIiwiX2QzQXJyYXkiLCJfc3R5bGVkQ29tcG9uZW50cyIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfdGVtcGxhdGVPYmplY3QiLCJfdGVtcGxhdGVPYmplY3QyIiwiX3RlbXBsYXRlT2JqZWN0MyIsIl9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSIsImUiLCJXZWFrTWFwIiwiciIsInQiLCJfX2VzTW9kdWxlIiwiX3R5cGVvZiIsImhhcyIsImdldCIsIm4iLCJfX3Byb3RvX18iLCJhIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJ1IiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiaSIsInNldCIsIkhJU1RPR1JBTV9NQVNLX01PREUiLCJleHBvcnRzIiwiTm9NYXNrIiwiTWFzayIsIk1hc2tXaXRoT3ZlcmxheSIsIkhJU1RPR1JBTV9NQVNLX0JHQ09MT1IiLCJISVNUT0dSQU1fTUFTS19GR0NPTE9SIiwiaGlzdG9ncmFtU3R5bGUiLCJoaWdobGlnaHRXIiwidW5IaWdobGlnaHRlZFciLCJIaXN0b2dyYW1XcmFwcGVyIiwic3R5bGVkIiwic3ZnIiwiX3RhZ2dlZFRlbXBsYXRlTGl0ZXJhbDIiLCJIaXN0b2dyYW1NYXNrUmVjdCIsInJlY3QiLCJwcm9wcyIsInRoZW1lIiwicGFuZWxCYWNrZ3JvdW5kIiwiSGlzdG9ncmFtQnJlYWtMaW5lIiwiZyIsImhpc3RvZ3JhbUJyZWFrTGluZUNvbG9yIiwiQmFyVW5tZW1vaXplZCIsIl9yZWYiLCIkaW5SYW5nZSIsIiRpc092ZXJsYXkiLCIkY29sb3IiLCJjb25jYXQiLCJoaXN0b2dyYW1PdmVybGF5Q29sb3IiLCJoaXN0b2dyYW1GaWxsSW5SYW5nZSIsImhjbCIsImRhcmtlciIsImhpc3RvZ3JhbUZpbGxPdXRSYW5nZSIsIkJhciIsIlJlYWN0IiwibWVtbyIsImRpc3BsYXlOYW1lIiwiaXNCYXJJblJhbmdlIiwiYmFyIiwiaW5kZXgiLCJsaXN0IiwiZmlsdGVyRG9tYWluIiwiZmlsdGVyVmFsdWUiLCJ4MENvbmRpdGlvbiIsIngwIiwieDFDb25kaXRpb24iLCJsZW5ndGgiLCJ4MSIsIkhpc3RvZ3JhbVBsb3RGYWN0b3J5IiwiSGlzdG9ncmFtUGxvdCIsIl9yZWYyIiwid2lkdGgiLCJoZWlnaHQiLCJoaXN0b2dyYW1zQnlHcm91cCIsImNvbG9yc0J5R3JvdXAiLCJfcmVmMiRpc01hc2tlZCIsImlzTWFza2VkIiwiX3JlZjIkY291bnRQcm9wIiwiY291bnRQcm9wIiwibWFyZ2luIiwiaXNSYW5nZWQiLCJyYW5nZSIsInZhbHVlIiwiYnJ1c2hDb21wb25lbnQiLCJicmVha0xpbmVzIiwidW5kZWZpbmVkVG9aZXJvIiwieCIsImdyb3VwS2V5cyIsInVzZU1lbW8iLCJrZXlzIiwiZmlsdGVyIiwia2V5IiwiX2hpc3RvZ3JhbXNCeUdyb3VwJGtlIiwiZG9tYWluIiwiX21pbiIsIl9tYXgiLCJtaW4iLCJtYXgiLCJiYXJXaWR0aCIsIm1heEdyb3VwIiwicmVkdWNlIiwiYWNjdSIsIl9pZHgiLCJzdGRCaW5JZHgiLCJ4U3RlcCIsIm1heEJpbnMiLCJzY2FsZUxpbmVhciIsInkiLCJNYXRoIiwiTnVtYmVyIiwiZCIsIm1hc2tlZEhpc3RvZ3JhbSIsImNyZWF0ZUVsZW1lbnQiLCJzdHlsZSIsInRvcCIsInJpZ2h0IiwiYm90dG9tIiwibGVmdCIsImlkIiwiZmlsbCIsImNsYXNzTmFtZSIsImZpbHRlcmVkQmlucyIsIm1hcCIsImlkeCIsImluUmFuZ2UiLCJ3UmF0aW8iLCJ0cmFuc2Zvcm0iLCJtYXNrIiwiYmlucyIsImZpbHRlckJhciIsIm1hc2tIZWlnaHQiLCJwb3MiLCJzdHJva2VEYXNoYXJyYXkiLCJzdGFydFgiLCJyeCIsInJ5IiwiSGlzdG9ncmFtUGxvdFdpdGhHcm91cHMiLCJncm91cHMiLCJfZGVmYXVsdCJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb21tb24vaGlzdG9ncmFtLXBsb3QudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVRcbi8vIENvcHlyaWdodCBjb250cmlidXRvcnMgdG8gdGhlIGtlcGxlci5nbCBwcm9qZWN0XG5cbmltcG9ydCBSZWFjdCwge1JlYWN0RWxlbWVudCwgdXNlTWVtb30gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHtzY2FsZUxpbmVhcn0gZnJvbSAnZDMtc2NhbGUnO1xuaW1wb3J0IHtoY2x9IGZyb20gJ2QzLWNvbG9yJztcbmltcG9ydCB7bWluLCBtYXh9IGZyb20gJ2QzLWFycmF5JztcbmltcG9ydCBzdHlsZWQgZnJvbSAnc3R5bGVkLWNvbXBvbmVudHMnO1xuXG5pbXBvcnQge0JpbnN9IGZyb20gJ0BrZXBsZXIuZ2wvdHlwZXMnO1xuXG4vLyBjbGlwcGluZyBtYXNrIGNvbnN0YW50c1xuZXhwb3J0IGNvbnN0IEhJU1RPR1JBTV9NQVNLX01PREUgPSB7XG4gIE5vTWFzazogMCxcbiAgTWFzazogMSxcbiAgTWFza1dpdGhPdmVybGF5OiAyXG59O1xuY29uc3QgSElTVE9HUkFNX01BU0tfQkdDT0xPUiA9ICcjRkZGRkZGJztcbmNvbnN0IEhJU1RPR1JBTV9NQVNLX0ZHQ09MT1IgPSAnIzAwMDAwMCc7XG5cbmNvbnN0IGhpc3RvZ3JhbVN0eWxlID0ge1xuICBoaWdobGlnaHRXOiAwLjcsXG4gIHVuSGlnaGxpZ2h0ZWRXOiAwLjRcbn07XG5cbmNvbnN0IEhpc3RvZ3JhbVdyYXBwZXIgPSBzdHlsZWQuc3ZnYFxuICBvdmVyZmxvdzogdmlzaWJsZTtcbmA7XG5cbmNvbnN0IEhpc3RvZ3JhbU1hc2tSZWN0ID0gc3R5bGVkLnJlY3RgXG4gIGZpbGw6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUucGFuZWxCYWNrZ3JvdW5kfTtcbmA7XG5cbmNvbnN0IEhpc3RvZ3JhbUJyZWFrTGluZSA9IHN0eWxlZC5nYFxuICBzdHJva2U6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuaGlzdG9ncmFtQnJlYWtMaW5lQ29sb3J9O1xuICBzdHJva2Utd2lkdGg6IDFweDtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgMCk7XG5gO1xuXG50eXBlIEJhclR5cGUgPSB7XG4gICRpblJhbmdlOiBib29sZWFuO1xuICAkaXNPdmVybGF5OiBib29sZWFuO1xuICAkY29sb3I/OiBzdHJpbmc7XG59O1xuY29uc3QgQmFyVW5tZW1vaXplZCA9IHN0eWxlZC5yZWN0PEJhclR5cGU+KFxuICAoe3RoZW1lLCAkaW5SYW5nZSwgJGlzT3ZlcmxheSwgJGNvbG9yfSkgPT4gYFxuICAke1xuICAgICRpc092ZXJsYXlcbiAgICAgID8gYGZpbGw6ICR7JGNvbG9yID8/IHRoZW1lLmhpc3RvZ3JhbU92ZXJsYXlDb2xvcn07YFxuICAgICAgOiAkaW5SYW5nZVxuICAgICAgPyBgZmlsbDogJHskY29sb3IgPz8gdGhlbWUuaGlzdG9ncmFtRmlsbEluUmFuZ2V9O2BcbiAgICAgIDogYGZpbGw6ICR7JGNvbG9yID8gaGNsKCRjb2xvcikuZGFya2VyKCkgOiB0aGVtZS5oaXN0b2dyYW1GaWxsT3V0UmFuZ2V9O2BcbiAgfVxuYFxuKTtcbmNvbnN0IEJhciA9IFJlYWN0Lm1lbW8oQmFyVW5tZW1vaXplZCk7XG5CYXIuZGlzcGxheU5hbWUgPSAnQmFyJztcblxuY29uc3QgaXNCYXJJblJhbmdlID0gKFxuICBiYXI6IHt4MDogbnVtYmVyOyB4MTogbnVtYmVyfSxcbiAgaW5kZXg6IG51bWJlcixcbiAgbGlzdDogYW55W10sXG4gIGZpbHRlckRvbWFpbjogYW55W10sXG4gIGZpbHRlclZhbHVlOiBhbnlbXVxuKSA9PiB7XG4gIC8vIGZpcnN0XG4gIC8vIGlmIHgwIDw9IGRvbWFpblswXSBhbmQgY3VycmVudCB2YWx1ZVswXSB3YXNuJ3QgY2hhbmdlZCBmcm9tIHRoZSBvcmlnaW5hbCBkb21haW5cbiAgY29uc3QgeDBDb25kaXRpb24gPVxuICAgIGluZGV4ID09PSAwID8gYmFyLngwIDw9IGZpbHRlckRvbWFpblswXSAmJiBmaWx0ZXJEb21haW5bMF0gPT09IGZpbHRlclZhbHVlWzBdIDogZmFsc2U7XG4gIC8vIExhc3RcbiAgLy8gaWYgeDEgPj0gZG9tYWluWzFdIGFuZCBjdXJyZW50IHZhbHVlWzFdIHdhc24ndCBjaGFuZ2VkIGZyb20gdGhlIG9yaWdpbmFsIGRvbWFpblxuICBjb25zdCB4MUNvbmRpdGlvbiA9XG4gICAgaW5kZXggPT09IGxpc3QubGVuZ3RoIC0gMVxuICAgICAgPyBiYXIueDEgPj0gZmlsdGVyRG9tYWluWzFdICYmIGZpbHRlckRvbWFpblsxXSA9PT0gZmlsdGVyVmFsdWVbMV1cbiAgICAgIDogZmFsc2U7XG4gIHJldHVybiAoeDBDb25kaXRpb24gfHwgYmFyLngwID49IGZpbHRlclZhbHVlWzBdKSAmJiAoeDFDb25kaXRpb24gfHwgYmFyLngxIDw9IGZpbHRlclZhbHVlWzFdKTtcbn07XG5cbmV4cG9ydCB0eXBlIEhpc3RvZ3JhbU1hc2tNb2RlVHlwZSA9IHtcbiAgTm9NYXNrOiBudW1iZXI7XG4gIE1hc2s6IG51bWJlcjtcbiAgTWFza1dpdGhPdmVybGF5OiBudW1iZXI7XG59O1xuXG5pbnRlcmZhY2UgSGlzdG9ncmFtUGxvdFByb3BzIHtcbiAgd2lkdGg6IG51bWJlcjtcbiAgaGVpZ2h0OiBudW1iZXI7XG4gIG1hcmdpbjoge3RvcDogbnVtYmVyOyBib3R0b206IG51bWJlcjsgbGVmdDogbnVtYmVyOyByaWdodDogbnVtYmVyfTtcbiAgaXNSYW5nZWQ/OiBib29sZWFuO1xuICB2YWx1ZTogbnVtYmVyW107XG4gIGlzTWFza2VkPzogbnVtYmVyO1xuICBicnVzaENvbXBvbmVudD86IFJlYWN0RWxlbWVudDtcbiAgaGlzdG9ncmFtc0J5R3JvdXA6IEJpbnM7XG4gIGNvbG9yc0J5R3JvdXA/OiBudWxsIHwge1tkYXRhSWQ6IHN0cmluZ106IHN0cmluZ307XG4gIGNvdW50UHJvcD86IHN0cmluZztcbiAgcmFuZ2U/OiBudW1iZXJbXTtcbiAgYnJlYWtMaW5lcz86IG51bWJlcltdO1xufVxuXG5mdW5jdGlvbiBIaXN0b2dyYW1QbG90RmFjdG9yeSgpIHtcbiAgY29uc3QgSGlzdG9ncmFtUGxvdCA9ICh7XG4gICAgd2lkdGgsXG4gICAgaGVpZ2h0LFxuICAgIGhpc3RvZ3JhbXNCeUdyb3VwLFxuICAgIGNvbG9yc0J5R3JvdXAsXG4gICAgaXNNYXNrZWQgPSBISVNUT0dSQU1fTUFTS19NT0RFLk5vTWFzayxcbiAgICBjb3VudFByb3AgPSAnY291bnQnLFxuICAgIG1hcmdpbixcbiAgICBpc1JhbmdlZCxcbiAgICByYW5nZSxcbiAgICB2YWx1ZSxcbiAgICBicnVzaENvbXBvbmVudCxcbiAgICBicmVha0xpbmVzXG4gIH06IEhpc3RvZ3JhbVBsb3RQcm9wcykgPT4ge1xuICAgIGNvbnN0IHVuZGVmaW5lZFRvWmVybyA9ICh4OiBudW1iZXIgfCB1bmRlZmluZWQpID0+ICh4ID8geCA6IDApO1xuICAgIGNvbnN0IGdyb3VwS2V5cyA9IHVzZU1lbW8oXG4gICAgICAoKSA9PlxuICAgICAgICBPYmplY3Qua2V5cyhoaXN0b2dyYW1zQnlHcm91cClcbiAgICAgICAgICAvLyBvbmx5IGtlZXAgbm9uLWVtcHR5IGdyb3Vwc1xuICAgICAgICAgIC5maWx0ZXIoa2V5ID0+IGhpc3RvZ3JhbXNCeUdyb3VwW2tleV0/Lmxlbmd0aCA+IDApLFxuICAgICAgW2hpc3RvZ3JhbXNCeUdyb3VwXVxuICAgICk7XG5cbiAgICBjb25zdCBkb21haW4gPSB1c2VNZW1vKFxuICAgICAgKCkgPT5cbiAgICAgICAgcmFuZ2UgPz8gW1xuICAgICAgICAgIG1pbihncm91cEtleXMsIGtleSA9PiBoaXN0b2dyYW1zQnlHcm91cFtrZXldWzBdLngwKSA/PyAwLFxuICAgICAgICAgIG1heChncm91cEtleXMsIGtleSA9PiBoaXN0b2dyYW1zQnlHcm91cFtrZXldW2hpc3RvZ3JhbXNCeUdyb3VwW2tleV0ubGVuZ3RoIC0gMV0ueDEpID8/IDBcbiAgICAgICAgXSxcbiAgICAgIFtyYW5nZSwgaGlzdG9ncmFtc0J5R3JvdXAsIGdyb3VwS2V5c11cbiAgICApO1xuXG4gICAgY29uc3QgYmFyV2lkdGggPSB1c2VNZW1vKCgpID0+IHtcbiAgICAgIGlmIChncm91cEtleXMubGVuZ3RoID09PSAwKSByZXR1cm4gMDtcbiAgICAgIC8vIGZpbmQgaGlzdG9ncmFtc0J5R3JvdXAgd2l0aCBtYXggbnVtYmVyIG9mIGJpbnNcbiAgICAgIGNvbnN0IG1heEdyb3VwID0gZ3JvdXBLZXlzLnJlZHVjZSgoYWNjdSwga2V5LCBfaWR4KSA9PiB7XG4gICAgICAgIGlmIChoaXN0b2dyYW1zQnlHcm91cFtrZXldLmxlbmd0aCA+IGFjY3UubGVuZ3RoKSB7XG4gICAgICAgICAgcmV0dXJuIGhpc3RvZ3JhbXNCeUdyb3VwW2tleV07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGFjY3U7XG4gICAgICB9LCBoaXN0b2dyYW1zQnlHcm91cFtncm91cEtleXNbMF1dKTtcblxuICAgICAgLy8gZmluZCB0aGUgYmluIGZvciBtZWFzdXJpbmcgc3RlcFxuICAgICAgY29uc3Qgc3RkQmluSWR4ID0gbWF4R3JvdXAubGVuZ3RoID4gMSA/IDEgOiAwO1xuICAgICAgY29uc3QgeFN0ZXAgPSBtYXhHcm91cFtzdGRCaW5JZHhdLngxIC0gbWF4R3JvdXBbc3RkQmluSWR4XS54MDtcbiAgICAgIGNvbnN0IG1heEJpbnMgPSAoZG9tYWluWzFdIC0gZG9tYWluWzBdKSAvIHhTdGVwO1xuICAgICAgaWYgKCFtYXhCaW5zKSByZXR1cm4gMDtcbiAgICAgIHJldHVybiB3aWR0aCAvIG1heEJpbnMgLyAoaXNNYXNrZWQgPyAxIDogZ3JvdXBLZXlzLmxlbmd0aCk7XG4gICAgfSwgW2hpc3RvZ3JhbXNCeUdyb3VwLCBkb21haW4sIGdyb3VwS2V5cywgd2lkdGgsIGlzTWFza2VkXSk7XG5cbiAgICBjb25zdCB4ID0gdXNlTWVtbyhcbiAgICAgICgpID0+IHNjYWxlTGluZWFyKCkuZG9tYWluKGRvbWFpbikucmFuZ2UoW2JhcldpZHRoLCB3aWR0aF0pLFxuICAgICAgW2RvbWFpbiwgd2lkdGgsIGJhcldpZHRoXVxuICAgICk7XG5cbiAgICBjb25zdCB5ID0gdXNlTWVtbyhcbiAgICAgICgpID0+XG4gICAgICAgIHNjYWxlTGluZWFyKClcbiAgICAgICAgICAuZG9tYWluKFtcbiAgICAgICAgICAgIDAsXG4gICAgICAgICAgICBNYXRoLm1heChcbiAgICAgICAgICAgICAgTnVtYmVyKG1heChncm91cEtleXMsIGtleSA9PiBtYXgoaGlzdG9ncmFtc0J5R3JvdXBba2V5XSwgZCA9PiBkW2NvdW50UHJvcF0pKSksXG4gICAgICAgICAgICAgIDFcbiAgICAgICAgICAgIClcbiAgICAgICAgICBdKVxuICAgICAgICAgIC5yYW5nZShbMCwgaGVpZ2h0XSksXG4gICAgICBbaGlzdG9ncmFtc0J5R3JvdXAsIGdyb3VwS2V5cywgaGVpZ2h0LCBjb3VudFByb3BdXG4gICAgKTtcblxuICAgIGlmIChncm91cEtleXMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBjb25zdCBtYXNrZWRIaXN0b2dyYW0gPSAoKSA9PiB7XG4gICAgICByZXR1cm4gKFxuICAgICAgICA8SGlzdG9ncmFtV3JhcHBlclxuICAgICAgICAgIHdpZHRoPXt3aWR0aH1cbiAgICAgICAgICBoZWlnaHQ9e2hlaWdodH1cbiAgICAgICAgICBzdHlsZT17e21hcmdpbjogYCR7bWFyZ2luLnRvcH1weCAke21hcmdpbi5yaWdodH1weCAke21hcmdpbi5ib3R0b219cHggJHttYXJnaW4ubGVmdH1weGB9fVxuICAgICAgICA+XG4gICAgICAgICAgPGRlZnM+XG4gICAgICAgICAgICA8bWFzayBpZD1cImhpc3RvZ3JhbS1tYXNrXCI+XG4gICAgICAgICAgICAgIDxyZWN0XG4gICAgICAgICAgICAgICAgeD1cIjBcIlxuICAgICAgICAgICAgICAgIHk9XCIwXCJcbiAgICAgICAgICAgICAgICB3aWR0aD17d2lkdGh9XG4gICAgICAgICAgICAgICAgaGVpZ2h0PXtoZWlnaHQgKyBtYXJnaW4uYm90dG9tfVxuICAgICAgICAgICAgICAgIGZpbGw9e0hJU1RPR1JBTV9NQVNLX0JHQ09MT1J9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDxnIGtleT1cImZpbHRlcmVkLWJpbnNcIiBjbGFzc05hbWU9XCJoaXN0b2dyYW0tYmFyc1wiPlxuICAgICAgICAgICAgICAgIHtoaXN0b2dyYW1zQnlHcm91cC5maWx0ZXJlZEJpbnMubWFwKChiYXIsIGlkeCwgbGlzdCkgPT4ge1xuICAgICAgICAgICAgICAgICAgY29uc3QgaW5SYW5nZSA9IGlzQmFySW5SYW5nZShiYXIsIGlkeCwgbGlzdCwgZG9tYWluLCB2YWx1ZSk7XG4gICAgICAgICAgICAgICAgICBjb25zdCB3UmF0aW8gPSBpblJhbmdlXG4gICAgICAgICAgICAgICAgICAgID8gaGlzdG9ncmFtU3R5bGUuaGlnaGxpZ2h0V1xuICAgICAgICAgICAgICAgICAgICA6IGhpc3RvZ3JhbVN0eWxlLnVuSGlnaGxpZ2h0ZWRXO1xuICAgICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgPEJhclxuICAgICAgICAgICAgICAgICAgICAgICRpc092ZXJsYXk9e2ZhbHNlfVxuICAgICAgICAgICAgICAgICAgICAgICRpblJhbmdlPXtpblJhbmdlfVxuICAgICAgICAgICAgICAgICAgICAgICRjb2xvcj17SElTVE9HUkFNX01BU0tfRkdDT0xPUn1cbiAgICAgICAgICAgICAgICAgICAgICBrZXk9e2BtYXNrLSR7aWR4fWB9XG4gICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0PXt5KGJhcltjb3VudFByb3BdKX1cbiAgICAgICAgICAgICAgICAgICAgICB3aWR0aD17YmFyV2lkdGggKiB3UmF0aW99XG4gICAgICAgICAgICAgICAgICAgICAgeD17eChiYXIueDApICsgKGJhcldpZHRoICogKDEgLSB3UmF0aW8pKSAvIDJ9XG4gICAgICAgICAgICAgICAgICAgICAgeT17aGVpZ2h0IC0geShiYXJbY291bnRQcm9wXSl9XG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIH0pfVxuICAgICAgICAgICAgICA8L2c+XG4gICAgICAgICAgICA8L21hc2s+XG4gICAgICAgICAgPC9kZWZzPlxuICAgICAgICAgIDxnIHRyYW5zZm9ybT1cInRyYW5zbGF0ZSgwLDApXCI+XG4gICAgICAgICAgICA8SGlzdG9ncmFtTWFza1JlY3RcbiAgICAgICAgICAgICAgeD1cIjBcIlxuICAgICAgICAgICAgICB5PVwiMFwiXG4gICAgICAgICAgICAgIHdpZHRoPVwiMTAwJVwiXG4gICAgICAgICAgICAgIGhlaWdodD17aGVpZ2h0ICsgbWFyZ2luLmJvdHRvbX1cbiAgICAgICAgICAgICAgbWFzaz1cInVybCgjaGlzdG9ncmFtLW1hc2spXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9nPlxuICAgICAgICAgIHtpc01hc2tlZCA9PT0gSElTVE9HUkFNX01BU0tfTU9ERS5NYXNrV2l0aE92ZXJsYXkgJiYgKFxuICAgICAgICAgICAgPGcga2V5PVwiYmluc1wiIHRyYW5zZm9ybT1cInRyYW5zbGF0ZSgwLDApXCIgY2xhc3NOYW1lPVwib3ZlcmxheS1oaXN0b2dyYW0tYmFyc1wiPlxuICAgICAgICAgICAgICB7aGlzdG9ncmFtc0J5R3JvdXAuYmlucy5tYXAoKGJhciwgaWR4LCBsaXN0KSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgZmlsdGVyQmFyID0gaGlzdG9ncmFtc0J5R3JvdXAuZmlsdGVyZWRCaW5zW2lkeF07XG4gICAgICAgICAgICAgICAgY29uc3QgbWFza0hlaWdodCA9IGZpbHRlckJhclxuICAgICAgICAgICAgICAgICAgPyB5KGJhcltjb3VudFByb3BdKSAtIHkoZmlsdGVyQmFyW2NvdW50UHJvcF0pXG4gICAgICAgICAgICAgICAgICA6IHkoYmFyW2NvdW50UHJvcF0pO1xuICAgICAgICAgICAgICAgIGNvbnN0IGluUmFuZ2UgPSBpc0JhckluUmFuZ2UoYmFyLCBpZHgsIGxpc3QsIGRvbWFpbiwgdmFsdWUpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHdSYXRpbyA9IGluUmFuZ2UgPyBoaXN0b2dyYW1TdHlsZS5oaWdobGlnaHRXIDogaGlzdG9ncmFtU3R5bGUudW5IaWdobGlnaHRlZFc7XG4gICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgIDxCYXJcbiAgICAgICAgICAgICAgICAgICAgJGluUmFuZ2U9e2luUmFuZ2V9XG4gICAgICAgICAgICAgICAgICAgICRpc092ZXJsYXk9e3RydWV9XG4gICAgICAgICAgICAgICAgICAgIGtleT17YGJhci0ke2lkeH1gfVxuICAgICAgICAgICAgICAgICAgICBoZWlnaHQ9e21hc2tIZWlnaHR9XG4gICAgICAgICAgICAgICAgICAgIHdpZHRoPXtiYXJXaWR0aCAqIHdSYXRpb31cbiAgICAgICAgICAgICAgICAgICAgeD17eChiYXIueDApICsgKGJhcldpZHRoICogKDEgLSB3UmF0aW8pKSAvIDJ9XG4gICAgICAgICAgICAgICAgICAgIHk9e2hlaWdodCAtIHkoYmFyW2NvdW50UHJvcF0pfVxuICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICB9KX1cbiAgICAgICAgICAgIDwvZz5cbiAgICAgICAgICApfVxuICAgICAgICAgIDxIaXN0b2dyYW1CcmVha0xpbmU+XG4gICAgICAgICAgICB7KGJyZWFrTGluZXMgPz8gW10pLm1hcCgocG9zLCBpZHgpID0+IHtcbiAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICA8cGF0aCBrZXk9e2BtYXNrLWxpbmUtJHtpZHh9YH0gc3Ryb2tlRGFzaGFycmF5PVwiNCw0XCIgZD17YE0ke3Bvc30sIDAgbDAgMTAwYH0gLz5cbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0pfVxuICAgICAgICAgIDwvSGlzdG9ncmFtQnJlYWtMaW5lPlxuICAgICAgICAgIDxnIHRyYW5zZm9ybT17YHRyYW5zbGF0ZSgke2lzUmFuZ2VkID8gMCA6IGJhcldpZHRoIC8gMn0sIDApYH0+e2JydXNoQ29tcG9uZW50fTwvZz5cbiAgICAgICAgPC9IaXN0b2dyYW1XcmFwcGVyPlxuICAgICAgKTtcbiAgICB9O1xuXG4gICAgcmV0dXJuIGlzTWFza2VkID8gKFxuICAgICAgbWFza2VkSGlzdG9ncmFtKClcbiAgICApIDogKFxuICAgICAgPEhpc3RvZ3JhbVdyYXBwZXJcbiAgICAgICAgd2lkdGg9e3dpZHRofVxuICAgICAgICBoZWlnaHQ9e2hlaWdodH1cbiAgICAgICAgc3R5bGU9e3ttYXJnaW46IGAke21hcmdpbi50b3B9cHggJHttYXJnaW4ucmlnaHR9cHggJHttYXJnaW4uYm90dG9tfXB4ICR7bWFyZ2luLmxlZnR9cHhgfX1cbiAgICAgID5cbiAgICAgICAgPGc+XG4gICAgICAgICAge2dyb3VwS2V5cy5tYXAoKGtleSwgaSkgPT4gKFxuICAgICAgICAgICAgPGcga2V5PXtrZXl9IGNsYXNzTmFtZT1cImhpc3RvZ3JhbS1iYXJzXCI+XG4gICAgICAgICAgICAgIHtoaXN0b2dyYW1zQnlHcm91cFtrZXldLm1hcCgoYmFyLCBpZHgsIGxpc3QpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBpblJhbmdlID0gaXNCYXJJblJhbmdlKGJhciwgaWR4LCBsaXN0LCBkb21haW4sIHZhbHVlKTtcblxuICAgICAgICAgICAgICAgIGNvbnN0IHdSYXRpbyA9IGluUmFuZ2UgPyBoaXN0b2dyYW1TdHlsZS5oaWdobGlnaHRXIDogaGlzdG9ncmFtU3R5bGUudW5IaWdobGlnaHRlZFc7XG4gICAgICAgICAgICAgICAgY29uc3Qgc3RhcnRYID1cbiAgICAgICAgICAgICAgICAgIHgodW5kZWZpbmVkVG9aZXJvKGJhci54MCkpICsgYmFyV2lkdGggKiBpICsgKGJhcldpZHRoICogKDEgLSB3UmF0aW8pKSAvIDI7XG4gICAgICAgICAgICAgICAgaWYgKHN0YXJ0WCA+IDAgJiYgc3RhcnRYICsgYmFyV2lkdGggKiBoaXN0b2dyYW1TdHlsZS51bkhpZ2hsaWdodGVkVyA8PSB3aWR0aCkge1xuICAgICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgPEJhclxuICAgICAgICAgICAgICAgICAgICAgICRpc092ZXJsYXk9e2ZhbHNlfVxuICAgICAgICAgICAgICAgICAgICAgICRpblJhbmdlPXtpblJhbmdlfVxuICAgICAgICAgICAgICAgICAgICAgICRjb2xvcj17Y29sb3JzQnlHcm91cD8uW2tleV19XG4gICAgICAgICAgICAgICAgICAgICAga2V5PXtgYmFyLSR7aWR4fWB9XG4gICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0PXt5KGJhcltjb3VudFByb3BdKX1cbiAgICAgICAgICAgICAgICAgICAgICB3aWR0aD17YmFyV2lkdGggKiB3UmF0aW99XG4gICAgICAgICAgICAgICAgICAgICAgeD17c3RhcnRYfVxuICAgICAgICAgICAgICAgICAgICAgIHJ4PXsxfVxuICAgICAgICAgICAgICAgICAgICAgIHJ5PXsxfVxuICAgICAgICAgICAgICAgICAgICAgIHk9e2hlaWdodCAtIHkoYmFyW2NvdW50UHJvcF0pfVxuICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICAgIH0pfVxuICAgICAgICAgICAgPC9nPlxuICAgICAgICAgICkpfVxuICAgICAgICA8L2c+XG4gICAgICAgIDxnIHRyYW5zZm9ybT17YHRyYW5zbGF0ZSgke2lzUmFuZ2VkID8gMCA6IGJhcldpZHRoIC8gMn0sIDApYH0+e2JydXNoQ29tcG9uZW50fTwvZz5cbiAgICAgIDwvSGlzdG9ncmFtV3JhcHBlcj5cbiAgICApO1xuICB9O1xuXG4gIGNvbnN0IEhpc3RvZ3JhbVBsb3RXaXRoR3JvdXBzID0gcHJvcHMgPT4ge1xuICAgIGNvbnN0IGdyb3VwcyA9IHVzZU1lbW8oXG4gICAgICAoKSA9PiAocHJvcHMuaGlzdG9ncmFtc0J5R3JvdXAgPyBPYmplY3Qua2V5cyhwcm9wcy5oaXN0b2dyYW1zQnlHcm91cCkgOiBudWxsKSxcbiAgICAgIFtwcm9wcy5oaXN0b2dyYW1zQnlHcm91cF1cbiAgICApO1xuXG4gICAgaWYgKCFncm91cHM/Lmxlbmd0aCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgcmV0dXJuIDxIaXN0b2dyYW1QbG90IHsuLi5wcm9wc30gLz47XG4gIH07XG5cbiAgcmV0dXJuIEhpc3RvZ3JhbVBsb3RXaXRoR3JvdXBzO1xufVxuZXhwb3J0IGRlZmF1bHQgSGlzdG9ncmFtUGxvdEZhY3Rvcnk7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUdBLElBQUFBLE1BQUEsR0FBQUMsdUJBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLFFBQUEsR0FBQUQsT0FBQTtBQUNBLElBQUFFLFFBQUEsR0FBQUYsT0FBQTtBQUNBLElBQUFHLFFBQUEsR0FBQUgsT0FBQTtBQUNBLElBQUFJLGlCQUFBLEdBQUFDLHNCQUFBLENBQUFMLE9BQUE7QUFBdUMsSUFBQU0sZUFBQSxFQUFBQyxnQkFBQSxFQUFBQyxnQkFBQSxFQVB2QztBQUNBO0FBQUEsU0FBQUMseUJBQUFDLENBQUEsNkJBQUFDLE9BQUEsbUJBQUFDLENBQUEsT0FBQUQsT0FBQSxJQUFBRSxDQUFBLE9BQUFGLE9BQUEsWUFBQUYsd0JBQUEsWUFBQUEseUJBQUFDLENBQUEsV0FBQUEsQ0FBQSxHQUFBRyxDQUFBLEdBQUFELENBQUEsS0FBQUYsQ0FBQTtBQUFBLFNBQUFYLHdCQUFBVyxDQUFBLEVBQUFFLENBQUEsU0FBQUEsQ0FBQSxJQUFBRixDQUFBLElBQUFBLENBQUEsQ0FBQUksVUFBQSxTQUFBSixDQUFBLGVBQUFBLENBQUEsZ0JBQUFLLE9BQUEsQ0FBQUwsQ0FBQSwwQkFBQUEsQ0FBQSxzQkFBQUEsQ0FBQSxRQUFBRyxDQUFBLEdBQUFKLHdCQUFBLENBQUFHLENBQUEsT0FBQUMsQ0FBQSxJQUFBQSxDQUFBLENBQUFHLEdBQUEsQ0FBQU4sQ0FBQSxVQUFBRyxD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
|