@carto/kepler.gl 0.0.41 → 0.0.42
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/components/index.js +36 -14
- package/dist/components/side-panel/layer-panel/color-range-selector.js +1 -1
- package/dist/components/side-panel/layer-panel/color-selector.js +144 -141
- package/dist/components/side-panel/layer-panel/layer-configurator.js +171 -109
- package/dist/components/side-panel/layer-panel/single-color-palette.js +75 -35
- package/dist/components/side-panel/layer-panel/text-label-panel.js +6 -6
- package/dist/constants/default-settings.js +1 -1
- package/package.json +1 -1
- package/src/components/index.js +14 -8
- package/src/components/side-panel/layer-panel/color-range-selector.js +0 -1
- package/src/components/side-panel/layer-panel/color-selector.js +130 -125
- package/src/components/side-panel/layer-panel/layer-configurator.js +101 -80
- package/src/components/side-panel/layer-panel/single-color-palette.js +41 -32
- package/src/components/side-panel/layer-panel/text-label-panel.js +8 -3
- package/CHANGELOG.md +0 -711
|
@@ -35,8 +35,6 @@ var _styledComponents = _interopRequireDefault(require("styled-components"));
|
|
|
35
35
|
|
|
36
36
|
var _colorUtils = require("../../../utils/color-utils");
|
|
37
37
|
|
|
38
|
-
var _singleColorPalette = _interopRequireDefault(require("./single-color-palette"));
|
|
39
|
-
|
|
40
38
|
var _colorRangeSelector = _interopRequireDefault(require("./color-range-selector"));
|
|
41
39
|
|
|
42
40
|
var _colorPalette = _interopRequireDefault(require("./color-palette"));
|
|
@@ -45,6 +43,8 @@ var _styledComponents2 = require("../../common/styled-components");
|
|
|
45
43
|
|
|
46
44
|
var _reactOnclickoutside = _interopRequireDefault(require("react-onclickoutside"));
|
|
47
45
|
|
|
46
|
+
var _singleColorPalette = _interopRequireDefault(require("./single-color-palette"));
|
|
47
|
+
|
|
48
48
|
var _templateObject, _templateObject2, _templateObject3;
|
|
49
49
|
|
|
50
50
|
function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; }
|
|
@@ -70,154 +70,157 @@ exports.ColorSelectorInput = ColorSelectorInput;
|
|
|
70
70
|
var InputBoxContainer = _styledComponents["default"].div(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n justify-content: space-between;\n\n .color-select__input-group {\n flex-grow: 1;\n }\n .color-select__input-group:nth-child(2) {\n margin-left: 12px;\n }\n"])));
|
|
71
71
|
|
|
72
72
|
exports.InputBoxContainer = InputBoxContainer;
|
|
73
|
+
ColorSelectorFactory.deps = [_singleColorPalette["default"]];
|
|
73
74
|
|
|
74
|
-
|
|
75
|
-
|
|
75
|
+
function ColorSelectorFactory(SingleColorPalette) {
|
|
76
|
+
var ColorSelector = /*#__PURE__*/function (_Component) {
|
|
77
|
+
(0, _inherits2["default"])(ColorSelector, _Component);
|
|
76
78
|
|
|
77
|
-
|
|
79
|
+
var _super = _createSuper(ColorSelector);
|
|
78
80
|
|
|
79
|
-
|
|
80
|
-
|
|
81
|
+
function ColorSelector() {
|
|
82
|
+
var _this;
|
|
81
83
|
|
|
82
|
-
|
|
84
|
+
(0, _classCallCheck2["default"])(this, ColorSelector);
|
|
83
85
|
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
}
|
|
87
|
-
|
|
88
|
-
_this = _super.call.apply(_super, [this].concat(args));
|
|
89
|
-
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "state", {
|
|
90
|
-
showDropdown: false
|
|
91
|
-
});
|
|
92
|
-
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "node", /*#__PURE__*/(0, _react.createRef)());
|
|
93
|
-
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "handleClickOutside", function (e) {
|
|
94
|
-
if (_this.props.colorUI && Number.isInteger(_this.props.colorUI.showSketcher)) {
|
|
95
|
-
// if sketcher is open, let sketch to close itself first
|
|
96
|
-
return;
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
_this._closePanelDropdown();
|
|
100
|
-
});
|
|
101
|
-
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "_getEditing", function () {
|
|
102
|
-
return _this.props.colorUI ? _this.props.colorUI.showDropdown : _this.state.showDropdown;
|
|
103
|
-
});
|
|
104
|
-
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "_closePanelDropdown", function () {
|
|
105
|
-
if (_this._getEditing() === false) {
|
|
106
|
-
return;
|
|
86
|
+
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
87
|
+
args[_key] = arguments[_key];
|
|
107
88
|
}
|
|
108
89
|
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
_this.
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
90
|
+
_this = _super.call.apply(_super, [this].concat(args));
|
|
91
|
+
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "state", {
|
|
92
|
+
showDropdown: false
|
|
93
|
+
});
|
|
94
|
+
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "node", /*#__PURE__*/(0, _react.createRef)());
|
|
95
|
+
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "handleClickOutside", function (e) {
|
|
96
|
+
if (_this.props.colorUI && Number.isInteger(_this.props.colorUI.showSketcher)) {
|
|
97
|
+
// if sketcher is open, let sketch to close itself first
|
|
98
|
+
return;
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
_this._closePanelDropdown();
|
|
102
|
+
});
|
|
103
|
+
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "_getEditing", function () {
|
|
104
|
+
return _this.props.colorUI ? _this.props.colorUI.showDropdown : _this.state.showDropdown;
|
|
105
|
+
});
|
|
106
|
+
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "_closePanelDropdown", function () {
|
|
107
|
+
if (_this._getEditing() === false) {
|
|
108
|
+
return;
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
if (_this.props.setColorUI) {
|
|
112
|
+
_this.props.setColorUI({
|
|
113
|
+
showDropdown: false,
|
|
114
|
+
showSketcher: false
|
|
115
|
+
});
|
|
116
|
+
} else {
|
|
117
|
+
_this.setState({
|
|
118
|
+
showDropdown: false
|
|
119
|
+
});
|
|
120
|
+
}
|
|
121
|
+
});
|
|
122
|
+
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "_onSelectColor", function (color, e) {
|
|
123
|
+
e === null || e === void 0 ? void 0 : e.stopPropagation();
|
|
124
|
+
|
|
125
|
+
var editing = _this._getEditing();
|
|
126
|
+
|
|
127
|
+
if (_this.props.colorSets[editing]) {
|
|
128
|
+
_this.props.colorSets[editing].setColor(color);
|
|
129
|
+
}
|
|
130
|
+
});
|
|
131
|
+
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "_showDropdown", function (e, i) {
|
|
132
|
+
e.stopPropagation();
|
|
133
|
+
e.preventDefault();
|
|
134
|
+
|
|
135
|
+
if (_this.props.setColorUI) {
|
|
136
|
+
_this.props.setColorUI({
|
|
137
|
+
showDropdown: i
|
|
138
|
+
});
|
|
139
|
+
} else {
|
|
140
|
+
_this.setState({
|
|
141
|
+
showDropdown: i
|
|
142
|
+
});
|
|
143
|
+
}
|
|
144
|
+
});
|
|
145
|
+
return _this;
|
|
146
|
+
}
|
|
122
147
|
|
|
123
|
-
|
|
148
|
+
(0, _createClass2["default"])(ColorSelector, [{
|
|
149
|
+
key: "render",
|
|
150
|
+
value: function render() {
|
|
151
|
+
var _this2 = this;
|
|
124
152
|
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
e.stopPropagation();
|
|
131
|
-
e.preventDefault();
|
|
132
|
-
|
|
133
|
-
if (_this.props.setColorUI) {
|
|
134
|
-
_this.props.setColorUI({
|
|
135
|
-
showDropdown: i
|
|
136
|
-
});
|
|
137
|
-
} else {
|
|
138
|
-
_this.setState({
|
|
139
|
-
showDropdown: i
|
|
140
|
-
});
|
|
141
|
-
}
|
|
142
|
-
});
|
|
143
|
-
return _this;
|
|
144
|
-
}
|
|
145
|
-
|
|
146
|
-
(0, _createClass2["default"])(ColorSelector, [{
|
|
147
|
-
key: "render",
|
|
148
|
-
value: function render() {
|
|
149
|
-
var _this2 = this;
|
|
150
|
-
|
|
151
|
-
var _this$props = this.props,
|
|
152
|
-
colorSets = _this$props.colorSets,
|
|
153
|
-
disabled = _this$props.disabled,
|
|
154
|
-
inputTheme = _this$props.inputTheme,
|
|
155
|
-
colorUI = _this$props.colorUI;
|
|
156
|
-
|
|
157
|
-
var editing = this._getEditing();
|
|
158
|
-
|
|
159
|
-
var currentEditing = colorSets[editing] && (0, _typeof2["default"])(colorSets[editing]) === 'object';
|
|
160
|
-
return /*#__PURE__*/_react["default"].createElement("div", {
|
|
161
|
-
className: "color-selector",
|
|
162
|
-
ref: this.node
|
|
163
|
-
}, /*#__PURE__*/_react["default"].createElement(InputBoxContainer, null, colorSets.map(function (cSet, i) {
|
|
164
|
-
return /*#__PURE__*/_react["default"].createElement("div", {
|
|
165
|
-
className: "color-select__input-group",
|
|
166
|
-
key: i
|
|
167
|
-
}, /*#__PURE__*/_react["default"].createElement(ColorSelectorInput, {
|
|
168
|
-
className: "color-selector__selector",
|
|
169
|
-
active: editing === i,
|
|
170
|
-
disabled: disabled,
|
|
171
|
-
inputTheme: inputTheme,
|
|
172
|
-
onMouseDown: function onMouseDown(e) {
|
|
173
|
-
return _this2._showDropdown(e, i);
|
|
174
|
-
}
|
|
175
|
-
}, cSet.isRange ? /*#__PURE__*/_react["default"].createElement(_colorPalette["default"], {
|
|
176
|
-
colors: cSet.selectedColor.colors
|
|
177
|
-
}) : /*#__PURE__*/_react["default"].createElement(ColorBlock, {
|
|
178
|
-
className: "color-selector__selector__block",
|
|
179
|
-
color: cSet.selectedColor
|
|
180
|
-
}), cSet.label ? /*#__PURE__*/_react["default"].createElement("div", {
|
|
181
|
-
className: "color-selector__selector__label"
|
|
182
|
-
}, cSet.label) : null));
|
|
183
|
-
})), currentEditing ? /*#__PURE__*/_react["default"].createElement(_styledComponents2.StyledPanelDropdown, {
|
|
184
|
-
className: "color-selector__dropdown"
|
|
185
|
-
}, colorSets[editing].isRange ? /*#__PURE__*/_react["default"].createElement(_colorRangeSelector["default"], {
|
|
186
|
-
selectedColorRange: colorSets[editing].selectedColor,
|
|
187
|
-
onSelectColorRange: this._onSelectColor,
|
|
188
|
-
setColorPaletteUI: this.props.setColorUI,
|
|
189
|
-
colorPaletteUI: colorUI
|
|
190
|
-
}) : /*#__PURE__*/_react["default"].createElement(_singleColorPalette["default"], {
|
|
191
|
-
selectedColor: (0, _colorUtils.rgbToHex)(colorSets[editing].selectedColor),
|
|
192
|
-
onSelectColor: this._onSelectColor
|
|
193
|
-
})) : null);
|
|
194
|
-
}
|
|
195
|
-
}]);
|
|
196
|
-
return ColorSelector;
|
|
197
|
-
}(_react.Component);
|
|
198
|
-
|
|
199
|
-
(0, _defineProperty2["default"])(ColorSelector, "propTypes", {
|
|
200
|
-
colorSets: _propTypes["default"].arrayOf(_propTypes["default"].shape({
|
|
201
|
-
selectedColor: _propTypes["default"].oneOfType([_propTypes["default"].arrayOf(_propTypes["default"].any), _propTypes["default"].object]),
|
|
202
|
-
setColor: _propTypes["default"].func.isRequired,
|
|
203
|
-
isRange: _propTypes["default"].bool,
|
|
204
|
-
label: _propTypes["default"].string
|
|
205
|
-
})),
|
|
206
|
-
colorUI: _propTypes["default"].shape({
|
|
207
|
-
customPalette: _propTypes["default"].object,
|
|
208
|
-
showSketcher: _propTypes["default"].oneOfType([_propTypes["default"].bool, _propTypes["default"].number]),
|
|
209
|
-
showDropdown: _propTypes["default"].oneOfType([_propTypes["default"].bool, _propTypes["default"].number]),
|
|
210
|
-
colorRangeConfig: _propTypes["default"].object
|
|
211
|
-
}),
|
|
212
|
-
inputTheme: _propTypes["default"].string,
|
|
213
|
-
disabled: _propTypes["default"].bool,
|
|
214
|
-
setColorUI: _propTypes["default"].func
|
|
215
|
-
});
|
|
216
|
-
(0, _defineProperty2["default"])(ColorSelector, "defaultProps", {
|
|
217
|
-
colorSets: []
|
|
218
|
-
});
|
|
153
|
+
var _this$props = this.props,
|
|
154
|
+
colorSets = _this$props.colorSets,
|
|
155
|
+
disabled = _this$props.disabled,
|
|
156
|
+
inputTheme = _this$props.inputTheme,
|
|
157
|
+
colorUI = _this$props.colorUI;
|
|
219
158
|
|
|
220
|
-
var
|
|
159
|
+
var editing = this._getEditing();
|
|
221
160
|
|
|
161
|
+
var currentEditing = colorSets[editing] && (0, _typeof2["default"])(colorSets[editing]) === 'object';
|
|
162
|
+
return /*#__PURE__*/_react["default"].createElement("div", {
|
|
163
|
+
className: "color-selector",
|
|
164
|
+
ref: this.node
|
|
165
|
+
}, /*#__PURE__*/_react["default"].createElement(InputBoxContainer, null, colorSets.map(function (cSet, i) {
|
|
166
|
+
return /*#__PURE__*/_react["default"].createElement("div", {
|
|
167
|
+
className: "color-select__input-group",
|
|
168
|
+
key: i
|
|
169
|
+
}, /*#__PURE__*/_react["default"].createElement(ColorSelectorInput, {
|
|
170
|
+
className: "color-selector__selector",
|
|
171
|
+
active: editing === i,
|
|
172
|
+
disabled: disabled,
|
|
173
|
+
inputTheme: inputTheme,
|
|
174
|
+
onMouseDown: function onMouseDown(e) {
|
|
175
|
+
return _this2._showDropdown(e, i);
|
|
176
|
+
}
|
|
177
|
+
}, cSet.isRange ? /*#__PURE__*/_react["default"].createElement(_colorPalette["default"], {
|
|
178
|
+
colors: cSet.selectedColor.colors
|
|
179
|
+
}) : /*#__PURE__*/_react["default"].createElement(ColorBlock, {
|
|
180
|
+
className: "color-selector__selector__block",
|
|
181
|
+
color: cSet.selectedColor
|
|
182
|
+
}), cSet.label ? /*#__PURE__*/_react["default"].createElement("div", {
|
|
183
|
+
className: "color-selector__selector__label"
|
|
184
|
+
}, cSet.label) : null));
|
|
185
|
+
})), currentEditing ? /*#__PURE__*/_react["default"].createElement(_styledComponents2.StyledPanelDropdown, {
|
|
186
|
+
className: "color-selector__dropdown"
|
|
187
|
+
}, colorSets[editing].isRange ? /*#__PURE__*/_react["default"].createElement(_colorRangeSelector["default"], {
|
|
188
|
+
selectedColorRange: colorSets[editing].selectedColor,
|
|
189
|
+
onSelectColorRange: this._onSelectColor,
|
|
190
|
+
setColorPaletteUI: this.props.setColorUI,
|
|
191
|
+
colorPaletteUI: colorUI
|
|
192
|
+
}) : /*#__PURE__*/_react["default"].createElement(SingleColorPalette, {
|
|
193
|
+
selectedColor: (0, _colorUtils.rgbToHex)(colorSets[editing].selectedColor),
|
|
194
|
+
onSelectColor: this._onSelectColor
|
|
195
|
+
})) : null);
|
|
196
|
+
}
|
|
197
|
+
}]);
|
|
198
|
+
return ColorSelector;
|
|
199
|
+
}(_react.Component);
|
|
200
|
+
|
|
201
|
+
(0, _defineProperty2["default"])(ColorSelector, "propTypes", {
|
|
202
|
+
colorSets: _propTypes["default"].arrayOf(_propTypes["default"].shape({
|
|
203
|
+
selectedColor: _propTypes["default"].oneOfType([_propTypes["default"].arrayOf(_propTypes["default"].any), _propTypes["default"].object]),
|
|
204
|
+
setColor: _propTypes["default"].func.isRequired,
|
|
205
|
+
isRange: _propTypes["default"].bool,
|
|
206
|
+
label: _propTypes["default"].string
|
|
207
|
+
})),
|
|
208
|
+
colorUI: _propTypes["default"].shape({
|
|
209
|
+
customPalette: _propTypes["default"].object,
|
|
210
|
+
showSketcher: _propTypes["default"].oneOfType([_propTypes["default"].bool, _propTypes["default"].number]),
|
|
211
|
+
showDropdown: _propTypes["default"].oneOfType([_propTypes["default"].bool, _propTypes["default"].number]),
|
|
212
|
+
colorRangeConfig: _propTypes["default"].object
|
|
213
|
+
}),
|
|
214
|
+
inputTheme: _propTypes["default"].string,
|
|
215
|
+
disabled: _propTypes["default"].bool,
|
|
216
|
+
setColorUI: _propTypes["default"].func
|
|
217
|
+
});
|
|
218
|
+
(0, _defineProperty2["default"])(ColorSelector, "defaultProps", {
|
|
219
|
+
colorSets: []
|
|
220
|
+
});
|
|
221
|
+
return (0, _reactOnclickoutside["default"])(ColorSelector);
|
|
222
|
+
}
|
|
223
|
+
|
|
224
|
+
var _default = ColorSelectorFactory;
|
|
222
225
|
exports["default"] = _default;
|
|
223
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL3NpZGUtcGFuZWwvbGF5ZXItcGFuZWwvY29sb3Itc2VsZWN0b3IuanMiXSwibmFtZXMiOlsiQ29sb3JCbG9jayIsInN0eWxlZCIsImRpdiIsInByb3BzIiwiY29sb3IiLCJzbGljZSIsImpvaW4iLCJDb2xvclNlbGVjdG9ySW5wdXQiLCJpbnB1dFRoZW1lIiwidGhlbWUiLCJzZWNvbmRhcnlJbnB1dCIsImlucHV0IiwiaW5wdXRCb3hIZWlnaHQiLCJpbnB1dFBsYWNlaG9sZGVyQ29sb3IiLCJJbnB1dEJveENvbnRhaW5lciIsIkNvbG9yU2VsZWN0b3IiLCJzaG93RHJvcGRvd24iLCJlIiwiY29sb3JVSSIsIk51bWJlciIsImlzSW50ZWdlciIsInNob3dTa2V0Y2hlciIsIl9jbG9zZVBhbmVsRHJvcGRvd24iLCJzdGF0ZSIsIl9nZXRFZGl0aW5nIiwic2V0Q29sb3JVSSIsInNldFN0YXRlIiwic3RvcFByb3BhZ2F0aW9uIiwiZWRpdGluZyIsImNvbG9yU2V0cyIsInNldENvbG9yIiwiaSIsInByZXZlbnREZWZhdWx0IiwiZGlzYWJsZWQiLCJjdXJyZW50RWRpdGluZyIsIm5vZGUiLCJtYXAiLCJjU2V0IiwiX3Nob3dEcm9wZG93biIsImlzUmFuZ2UiLCJzZWxlY3RlZENvbG9yIiwiY29sb3JzIiwibGFiZWwiLCJfb25TZWxlY3RDb2xvciIsIkNvbXBvbmVudCIsIlByb3BUeXBlcyIsImFycmF5T2YiLCJzaGFwZSIsIm9uZU9mVHlwZSIsImFueSIsIm9iamVjdCIsImZ1bmMiLCJpc1JlcXVpcmVkIiwiYm9vbCIsInN0cmluZyIsImN1c3RvbVBhbGV0dGUiLCJudW1iZXIiLCJjb2xvclJhbmdlQ29uZmlnIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQW9CQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7Ozs7Ozs7QUFFTyxJQUFNQSxVQUFVLEdBQUdDLDZCQUFPQyxHQUFWLDRLQUlELFVBQUFDLEtBQUs7QUFBQSx1QkFBV0EsS0FBSyxDQUFDQyxLQUFOLENBQVlDLEtBQVosQ0FBa0IsQ0FBbEIsRUFBcUIsQ0FBckIsRUFBd0JDLElBQXhCLENBQTZCLEdBQTdCLENBQVg7QUFBQSxDQUpKLENBQWhCOzs7O0FBT0EsSUFBTUMsa0JBQWtCLEdBQUdOLDZCQUFPQyxHQUFWLG9RQUMzQixVQUFBQyxLQUFLO0FBQUEsU0FBS0EsS0FBSyxDQUFDSyxVQUFOLEtBQXFCLFdBQXJCLEdBQW1DTCxLQUFLLENBQUNNLEtBQU4sQ0FBWUMsY0FBL0MsR0FBZ0VQLEtBQUssQ0FBQ00sS0FBTixDQUFZRSxLQUFqRjtBQUFBLENBRHNCLEVBRW5CLFVBQUFSLEtBQUs7QUFBQSxTQUFJQSxLQUFLLENBQUNNLEtBQU4sQ0FBWUcsY0FBaEI7QUFBQSxDQUZjLEVBUWxCLFVBQUFULEtBQUs7QUFBQSxTQUFJQSxLQUFLLENBQUNNLEtBQU4sQ0FBWUkscUJBQWhCO0FBQUEsQ0FSYSxDQUF4Qjs7OztBQVlBLElBQU1DLGlCQUFpQixHQUFHYiw2QkFBT0MsR0FBVixtUkFBdkI7Ozs7SUFZRGEsYTs7Ozs7Ozs7Ozs7Ozs7OzhGQXlCSTtBQUNOQyxNQUFBQSxZQUFZLEVBQUU7QUFEUixLOzBHQUlELHVCOzJHQUVjLFVBQUFDLENBQUMsRUFBSTtBQUN4QixVQUFJLE1BQUtkLEtBQUwsQ0FBV2UsT0FBWCxJQUFzQkMsTUFBTSxDQUFDQyxTQUFQLENBQWlCLE1BQUtqQixLQUFMLENBQVdlLE9BQVgsQ0FBbUJHLFlBQXBDLENBQTFCLEVBQTZFO0FBQzNFO0FBQ0E7QUFDRDs7QUFDRCxZQUFLQyxtQkFBTDtBQUNELEs7b0dBRWEsWUFBTTtBQUNsQixhQUFPLE1BQUtuQixLQUFMLENBQVdlLE9BQVgsR0FBcUIsTUFBS2YsS0FBTCxDQUFXZSxPQUFYLENBQW1CRixZQUF4QyxHQUF1RCxNQUFLTyxLQUFMLENBQVdQLFlBQXpFO0FBQ0QsSzs0R0FFcUIsWUFBTTtBQUMxQixVQUFJLE1BQUtRLFdBQUwsT0FBdUIsS0FBM0IsRUFBa0M7QUFDaEM7QUFDRDs7QUFDRCxVQUFJLE1BQUtyQixLQUFMLENBQVdzQixVQUFmLEVBQTJCO0FBQ3pCLGNBQUt0QixLQUFMLENBQVdzQixVQUFYLENBQXNCO0FBQUNULFVBQUFBLFlBQVksRUFBRSxLQUFmO0FBQXNCSyxVQUFBQSxZQUFZLEVBQUU7QUFBcEMsU0FBdEI7QUFDRCxPQUZELE1BRU87QUFDTCxjQUFLSyxRQUFMLENBQWM7QUFBQ1YsVUFBQUEsWUFBWSxFQUFFO0FBQWYsU0FBZDtBQUNEO0FBQ0YsSzt1R0FFZ0IsVUFBQ1osS0FBRCxFQUFRYSxDQUFSLEVBQWM7QUFDN0JBLE1BQUFBLENBQUMsQ0FBQ1UsZUFBRjs7QUFDQSxVQUFNQyxPQUFPLEdBQUcsTUFBS0osV0FBTCxFQUFoQjs7QUFDQSxVQUFJLE1BQUtyQixLQUFMLENBQVcwQixTQUFYLENBQXFCRCxPQUFyQixDQUFKLEVBQW1DO0FBQ2pDLGNBQUt6QixLQUFMLENBQVcwQixTQUFYLENBQXFCRCxPQUFyQixFQUE4QkUsUUFBOUIsQ0FBdUMxQixLQUF2QztBQUNEO0FBQ0YsSztzR0FFZSxVQUFDYSxDQUFELEVBQUljLENBQUosRUFBVTtBQUN4QmQsTUFBQUEsQ0FBQyxDQUFDVSxlQUFGO0FBQ0FWLE1BQUFBLENBQUMsQ0FBQ2UsY0FBRjs7QUFDQSxVQUFJLE1BQUs3QixLQUFMLENBQVdzQixVQUFmLEVBQTJCO0FBQ3pCLGNBQUt0QixLQUFMLENBQVdzQixVQUFYLENBQXNCO0FBQUNULFVBQUFBLFlBQVksRUFBRWU7QUFBZixTQUF0QjtBQUNELE9BRkQsTUFFTztBQUNMLGNBQUtMLFFBQUwsQ0FBYztBQUFDVixVQUFBQSxZQUFZLEVBQUVlO0FBQWYsU0FBZDtBQUNEO0FBQ0YsSzs7Ozs7O1dBRUQsa0JBQVM7QUFBQTs7QUFBQSx3QkFDNEMsS0FBSzVCLEtBRGpEO0FBQUEsVUFDQTBCLFNBREEsZUFDQUEsU0FEQTtBQUFBLFVBQ1dJLFFBRFgsZUFDV0EsUUFEWDtBQUFBLFVBQ3FCekIsVUFEckIsZUFDcUJBLFVBRHJCO0FBQUEsVUFDaUNVLE9BRGpDLGVBQ2lDQSxPQURqQzs7QUFHUCxVQUFNVSxPQUFPLEdBQUcsS0FBS0osV0FBTCxFQUFoQjs7QUFDQSxVQUFNVSxjQUFjLEdBQUdMLFNBQVMsQ0FBQ0QsT0FBRCxDQUFULElBQXNCLHlCQUFPQyxTQUFTLENBQUNELE9BQUQsQ0FBaEIsTUFBOEIsUUFBM0U7QUFFQSwwQkFDRTtBQUFLLFFBQUEsU0FBUyxFQUFDLGdCQUFmO0FBQWdDLFFBQUEsR0FBRyxFQUFFLEtBQUtPO0FBQTFDLHNCQUNFLGdDQUFDLGlCQUFELFFBQ0dOLFNBQVMsQ0FBQ08sR0FBVixDQUFjLFVBQUNDLElBQUQsRUFBT04sQ0FBUDtBQUFBLDRCQUNiO0FBQUssVUFBQSxTQUFTLEVBQUMsMkJBQWY7QUFBMkMsVUFBQSxHQUFHLEVBQUVBO0FBQWhELHdCQUNFLGdDQUFDLGtCQUFEO0FBQ0UsVUFBQSxTQUFTLEVBQUMsMEJBRFo7QUFFRSxVQUFBLE1BQU0sRUFBRUgsT0FBTyxLQUFLRyxDQUZ0QjtBQUdFLFVBQUEsUUFBUSxFQUFFRSxRQUhaO0FBSUUsVUFBQSxVQUFVLEVBQUV6QixVQUpkO0FBS0UsVUFBQSxXQUFXLEVBQUUscUJBQUFTLENBQUM7QUFBQSxtQkFBSSxNQUFJLENBQUNxQixhQUFMLENBQW1CckIsQ0FBbkIsRUFBc0JjLENBQXRCLENBQUo7QUFBQTtBQUxoQixXQU9HTSxJQUFJLENBQUNFLE9BQUwsZ0JBQ0MsZ0NBQUMsd0JBQUQ7QUFBYyxVQUFBLE1BQU0sRUFBRUYsSUFBSSxDQUFDRyxhQUFMLENBQW1CQztBQUF6QyxVQURELGdCQUdDLGdDQUFDLFVBQUQ7QUFDRSxVQUFBLFNBQVMsRUFBQyxpQ0FEWjtBQUVFLFVBQUEsS0FBSyxFQUFFSixJQUFJLENBQUNHO0FBRmQsVUFWSixFQWVHSCxJQUFJLENBQUNLLEtBQUwsZ0JBQ0M7QUFBSyxVQUFBLFNBQVMsRUFBQztBQUFmLFdBQWtETCxJQUFJLENBQUNLLEtBQXZELENBREQsR0FFRyxJQWpCTixDQURGLENBRGE7QUFBQSxPQUFkLENBREgsQ0FERixFQTBCR1IsY0FBYyxnQkFDYixnQ0FBQyxzQ0FBRDtBQUFxQixRQUFBLFNBQVMsRUFBQztBQUEvQixTQUNHTCxTQUFTLENBQUNELE9BQUQsQ0FBVCxDQUFtQlcsT0FBbkIsZ0JBQ0MsZ0NBQUMsOEJBQUQ7QUFDRSxRQUFBLGtCQUFrQixFQUFFVixTQUFTLENBQUNELE9BQUQsQ0FBVCxDQUFtQlksYUFEekM7QUFFRSxRQUFBLGtCQUFrQixFQUFFLEtBQUtHLGNBRjNCO0FBR0UsUUFBQSxpQkFBaUIsRUFBRSxLQUFLeEMsS0FBTCxDQUFXc0IsVUFIaEM7QUFJRSxRQUFBLGNBQWMsRUFBRVA7QUFKbEIsUUFERCxnQkFRQyxnQ0FBQyw4QkFBRDtBQUNFLFFBQUEsYUFBYSxFQUFFLDBCQUFTVyxTQUFTLENBQUNELE9BQUQsQ0FBVCxDQUFtQlksYUFBNUIsQ0FEakI7QUFFRSxRQUFBLGFBQWEsRUFBRSxLQUFLRztBQUZ0QixRQVRKLENBRGEsR0FnQlgsSUExQ04sQ0FERjtBQThDRDs7O0VBNUh5QkMsZ0I7O2lDQUF0QjdCLGEsZUFDZTtBQUNqQmMsRUFBQUEsU0FBUyxFQUFFZ0Isc0JBQVVDLE9BQVYsQ0FDVEQsc0JBQVVFLEtBQVYsQ0FBZ0I7QUFDZFAsSUFBQUEsYUFBYSxFQUFFSyxzQkFBVUcsU0FBVixDQUFvQixDQUFDSCxzQkFBVUMsT0FBVixDQUFrQkQsc0JBQVVJLEdBQTVCLENBQUQsRUFBbUNKLHNCQUFVSyxNQUE3QyxDQUFwQixDQUREO0FBRWRwQixJQUFBQSxRQUFRLEVBQUVlLHNCQUFVTSxJQUFWLENBQWVDLFVBRlg7QUFHZGIsSUFBQUEsT0FBTyxFQUFFTSxzQkFBVVEsSUFITDtBQUlkWCxJQUFBQSxLQUFLLEVBQUVHLHNCQUFVUztBQUpILEdBQWhCLENBRFMsQ0FETTtBQVNqQnBDLEVBQUFBLE9BQU8sRUFBRTJCLHNCQUFVRSxLQUFWLENBQWdCO0FBQ3ZCUSxJQUFBQSxhQUFhLEVBQUVWLHNCQUFVSyxNQURGO0FBRXZCN0IsSUFBQUEsWUFBWSxFQUFFd0Isc0JBQVVHLFNBQVYsQ0FBb0IsQ0FBQ0gsc0JBQVVRLElBQVgsRUFBaUJSLHNCQUFVVyxNQUEzQixDQUFwQixDQUZTO0FBR3ZCeEMsSUFBQUEsWUFBWSxFQUFFNkIsc0JBQVVHLFNBQVYsQ0FBb0IsQ0FBQ0gsc0JBQVVRLElBQVgsRUFBaUJSLHNCQUFVVyxNQUEzQixDQUFwQixDQUhTO0FBSXZCQyxJQUFBQSxnQkFBZ0IsRUFBRVosc0JBQVVLO0FBSkwsR0FBaEIsQ0FUUTtBQWVqQjFDLEVBQUFBLFVBQVUsRUFBRXFDLHNCQUFVUyxNQWZMO0FBZ0JqQnJCLEVBQUFBLFFBQVEsRUFBRVksc0JBQVVRLElBaEJIO0FBaUJqQjVCLEVBQUFBLFVBQVUsRUFBRW9CLHNCQUFVTTtBQWpCTCxDO2lDQURmcEMsYSxrQkFxQmtCO0FBQ3BCYyxFQUFBQSxTQUFTLEVBQUU7QUFEUyxDOztlQTBHVCxxQ0FBZWQsYUFBZixDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IChjKSAyMDIyIFViZXIgVGVjaG5vbG9naWVzLCBJbmMuXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuLy8gb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbFxuLy8gaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0c1xuLy8gdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuLy8gY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG4vLyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy9cbi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluXG4vLyBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vXG4vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4vLyBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbi8vIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuLy8gQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuLy8gTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbi8vIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU5cbi8vIFRIRSBTT0ZUV0FSRS5cblxuaW1wb3J0IFJlYWN0LCB7Q29tcG9uZW50LCBjcmVhdGVSZWZ9IGZyb20gJ3JlYWN0JztcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcyc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJ3N0eWxlZC1jb21wb25lbnRzJztcbmltcG9ydCB7cmdiVG9IZXh9IGZyb20gJ3V0aWxzL2NvbG9yLXV0aWxzJztcbmltcG9ydCBTaW5nbGVDb2xvclBhbGV0dGUgZnJvbSAnY29tcG9uZW50cy9zaWRlLXBhbmVsL2xheWVyLXBhbmVsL3NpbmdsZS1jb2xvci1wYWxldHRlJztcbmltcG9ydCBDb2xvclJhbmdlU2VsZWN0b3IgZnJvbSAnY29tcG9uZW50cy9zaWRlLXBhbmVsL2xheWVyLXBhbmVsL2NvbG9yLXJhbmdlLXNlbGVjdG9yJztcbmltcG9ydCBDb2xvclBhbGV0dGUgZnJvbSAnY29tcG9uZW50cy9zaWRlLXBhbmVsL2xheWVyLXBhbmVsL2NvbG9yLXBhbGV0dGUnO1xuaW1wb3J0IHtTdHlsZWRQYW5lbERyb3Bkb3dufSBmcm9tICdjb21wb25lbnRzL2NvbW1vbi9zdHlsZWQtY29tcG9uZW50cyc7XG5pbXBvcnQgb25DbGlja091dHNpZGUgZnJvbSAncmVhY3Qtb25jbGlja291dHNpZGUnO1xuXG5leHBvcnQgY29uc3QgQ29sb3JCbG9jayA9IHN0eWxlZC5kaXZgXG4gIHdpZHRoOiAzMnB4O1xuICBoZWlnaHQ6IDE4cHg7XG4gIGJvcmRlci1yYWRpdXM6IDFweDtcbiAgYmFja2dyb3VuZC1jb2xvcjogJHtwcm9wcyA9PiBgcmdiKCR7cHJvcHMuY29sb3Iuc2xpY2UoMCwgMykuam9pbignLCcpfSlgfTtcbmA7XG5cbmV4cG9ydCBjb25zdCBDb2xvclNlbGVjdG9ySW5wdXQgPSBzdHlsZWQuZGl2YFxuICAke3Byb3BzID0+IChwcm9wcy5pbnB1dFRoZW1lID09PSAnc2Vjb25kYXJ5JyA/IHByb3BzLnRoZW1lLnNlY29uZGFyeUlucHV0IDogcHJvcHMudGhlbWUuaW5wdXQpfTtcbiAgaGVpZ2h0OiAke3Byb3BzID0+IHByb3BzLnRoZW1lLmlucHV0Qm94SGVpZ2h0fTtcblxuICAuY29sb3Itc2VsZWN0b3JfX3NlbGVjdG9yX19sYWJlbCB7XG4gICAgdGV4dC10cmFuc2Zvcm06IGNhcGl0YWxpemU7XG4gICAgZm9udC1zaXplOiAxMnB4O1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICBjb2xvcjogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5pbnB1dFBsYWNlaG9sZGVyQ29sb3J9O1xuICB9XG5gO1xuXG5leHBvcnQgY29uc3QgSW5wdXRCb3hDb250YWluZXIgPSBzdHlsZWQuZGl2YFxuICBkaXNwbGF5OiBmbGV4O1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG5cbiAgLmNvbG9yLXNlbGVjdF9faW5wdXQtZ3JvdXAge1xuICAgIGZsZXgtZ3JvdzogMTtcbiAgfVxuICAuY29sb3Itc2VsZWN0X19pbnB1dC1ncm91cDpudGgtY2hpbGQoMikge1xuICAgIG1hcmdpbi1sZWZ0OiAxMnB4O1xuICB9XG5gO1xuXG5jbGFzcyBDb2xvclNlbGVjdG9yIGV4dGVuZHMgQ29tcG9uZW50IHtcbiAgc3RhdGljIHByb3BUeXBlcyA9IHtcbiAgICBjb2xvclNldHM6IFByb3BUeXBlcy5hcnJheU9mKFxuICAgICAgUHJvcFR5cGVzLnNoYXBlKHtcbiAgICAgICAgc2VsZWN0ZWRDb2xvcjogUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLmFycmF5T2YoUHJvcFR5cGVzLmFueSksIFByb3BUeXBlcy5vYmplY3RdKSxcbiAgICAgICAgc2V0Q29sb3I6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gICAgICAgIGlzUmFuZ2U6IFByb3BUeXBlcy5ib29sLFxuICAgICAgICBsYWJlbDogUHJvcFR5cGVzLnN0cmluZ1xuICAgICAgfSlcbiAgICApLFxuICAgIGNvbG9yVUk6IFByb3BUeXBlcy5zaGFwZSh7XG4gICAgICBjdXN0b21QYWxldHRlOiBQcm9wVHlwZXMub2JqZWN0LFxuICAgICAgc2hvd1NrZXRjaGVyOiBQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMuYm9vbCwgUHJvcFR5cGVzLm51bWJlcl0pLFxuICAgICAgc2hvd0Ryb3Bkb3duOiBQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMuYm9vbCwgUHJvcFR5cGVzLm51bWJlcl0pLFxuICAgICAgY29sb3JSYW5nZUNvbmZpZzogUHJvcFR5cGVzLm9iamVjdFxuICAgIH0pLFxuICAgIGlucHV0VGhlbWU6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgZGlzYWJsZWQ6IFByb3BUeXBlcy5ib29sLFxuICAgIHNldENvbG9yVUk6IFByb3BUeXBlcy5mdW5jXG4gIH07XG5cbiAgc3RhdGljIGRlZmF1bHRQcm9wcyA9IHtcbiAgICBjb2xvclNldHM6IFtdXG4gIH07XG5cbiAgc3RhdGUgPSB7XG4gICAgc2hvd0Ryb3Bkb3duOiBmYWxzZVxuICB9O1xuXG4gIG5vZGUgPSBjcmVhdGVSZWYoKTtcblxuICBoYW5kbGVDbGlja091dHNpZGUgPSBlID0+IHtcbiAgICBpZiAodGhpcy5wcm9wcy5jb2xvclVJICYmIE51bWJlci5pc0ludGVnZXIodGhpcy5wcm9wcy5jb2xvclVJLnNob3dTa2V0Y2hlcikpIHtcbiAgICAgIC8vIGlmIHNrZXRjaGVyIGlzIG9wZW4sIGxldCBza2V0Y2ggdG8gY2xvc2UgaXRzZWxmIGZpcnN0XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuX2Nsb3NlUGFuZWxEcm9wZG93bigpO1xuICB9O1xuXG4gIF9nZXRFZGl0aW5nID0gKCkgPT4ge1xuICAgIHJldHVybiB0aGlzLnByb3BzLmNvbG9yVUkgPyB0aGlzLnByb3BzLmNvbG9yVUkuc2hvd0Ryb3Bkb3duIDogdGhpcy5zdGF0ZS5zaG93RHJvcGRvd247XG4gIH07XG5cbiAgX2Nsb3NlUGFuZWxEcm9wZG93biA9ICgpID0+IHtcbiAgICBpZiAodGhpcy5fZ2V0RWRpdGluZygpID09PSBmYWxzZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAodGhpcy5wcm9wcy5zZXRDb2xvclVJKSB7XG4gICAgICB0aGlzLnByb3BzLnNldENvbG9yVUkoe3Nob3dEcm9wZG93bjogZmFsc2UsIHNob3dTa2V0Y2hlcjogZmFsc2V9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zZXRTdGF0ZSh7c2hvd0Ryb3Bkb3duOiBmYWxzZX0pO1xuICAgIH1cbiAgfTtcblxuICBfb25TZWxlY3RDb2xvciA9IChjb2xvciwgZSkgPT4ge1xuICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgY29uc3QgZWRpdGluZyA9IHRoaXMuX2dldEVkaXRpbmcoKTtcbiAgICBpZiAodGhpcy5wcm9wcy5jb2xvclNldHNbZWRpdGluZ10pIHtcbiAgICAgIHRoaXMucHJvcHMuY29sb3JTZXRzW2VkaXRpbmddLnNldENvbG9yKGNvbG9yKTtcbiAgICB9XG4gIH07XG5cbiAgX3Nob3dEcm9wZG93biA9IChlLCBpKSA9PiB7XG4gICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgaWYgKHRoaXMucHJvcHMuc2V0Q29sb3JVSSkge1xuICAgICAgdGhpcy5wcm9wcy5zZXRDb2xvclVJKHtzaG93RHJvcGRvd246IGl9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zZXRTdGF0ZSh7c2hvd0Ryb3Bkb3duOiBpfSk7XG4gICAgfVxuICB9O1xuXG4gIHJlbmRlcigpIHtcbiAgICBjb25zdCB7Y29sb3JTZXRzLCBkaXNhYmxlZCwgaW5wdXRUaGVtZSwgY29sb3JVSX0gPSB0aGlzLnByb3BzO1xuXG4gICAgY29uc3QgZWRpdGluZyA9IHRoaXMuX2dldEVkaXRpbmcoKTtcbiAgICBjb25zdCBjdXJyZW50RWRpdGluZyA9IGNvbG9yU2V0c1tlZGl0aW5nXSAmJiB0eXBlb2YgY29sb3JTZXRzW2VkaXRpbmddID09PSAnb2JqZWN0JztcblxuICAgIHJldHVybiAoXG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cImNvbG9yLXNlbGVjdG9yXCIgcmVmPXt0aGlzLm5vZGV9PlxuICAgICAgICA8SW5wdXRCb3hDb250YWluZXI+XG4gICAgICAgICAge2NvbG9yU2V0cy5tYXAoKGNTZXQsIGkpID0+IChcbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY29sb3Itc2VsZWN0X19pbnB1dC1ncm91cFwiIGtleT17aX0+XG4gICAgICAgICAgICAgIDxDb2xvclNlbGVjdG9ySW5wdXRcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJjb2xvci1zZWxlY3Rvcl9fc2VsZWN0b3JcIlxuICAgICAgICAgICAgICAgIGFjdGl2ZT17ZWRpdGluZyA9PT0gaX1cbiAgICAgICAgICAgICAgICBkaXNhYmxlZD17ZGlzYWJsZWR9XG4gICAgICAgICAgICAgICAgaW5wdXRUaGVtZT17aW5wdXRUaGVtZX1cbiAgICAgICAgICAgICAgICBvbk1vdXNlRG93bj17ZSA9PiB0aGlzLl9zaG93RHJvcGRvd24oZSwgaSl9XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7Y1NldC5pc1JhbmdlID8gKFxuICAgICAgICAgICAgICAgICAgPENvbG9yUGFsZXR0ZSBjb2xvcnM9e2NTZXQuc2VsZWN0ZWRDb2xvci5jb2xvcnN9IC8+XG4gICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgIDxDb2xvckJsb2NrXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImNvbG9yLXNlbGVjdG9yX19zZWxlY3Rvcl9fYmxvY2tcIlxuICAgICAgICAgICAgICAgICAgICBjb2xvcj17Y1NldC5zZWxlY3RlZENvbG9yfVxuICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgIHtjU2V0LmxhYmVsID8gKFxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJjb2xvci1zZWxlY3Rvcl9fc2VsZWN0b3JfX2xhYmVsXCI+e2NTZXQubGFiZWx9PC9kaXY+XG4gICAgICAgICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgICAgICAgIDwvQ29sb3JTZWxlY3RvcklucHV0PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgKSl9XG4gICAgICAgIDwvSW5wdXRCb3hDb250YWluZXI+XG4gICAgICAgIHtjdXJyZW50RWRpdGluZyA/IChcbiAgICAgICAgICA8U3R5bGVkUGFuZWxEcm9wZG93biBjbGFzc05hbWU9XCJjb2xvci1zZWxlY3Rvcl9fZHJvcGRvd25cIj5cbiAgICAgICAgICAgIHtjb2xvclNldHNbZWRpdGluZ10uaXNSYW5nZSA/IChcbiAgICAgICAgICAgICAgPENvbG9yUmFuZ2VTZWxlY3RvclxuICAgICAgICAgICAgICAgIHNlbGVjdGVkQ29sb3JSYW5nZT17Y29sb3JTZXRzW2VkaXRpbmddLnNlbGVjdGVkQ29sb3J9XG4gICAgICAgICAgICAgICAgb25TZWxlY3RDb2xvclJhbmdlPXt0aGlzLl9vblNlbGVjdENvbG9yfVxuICAgICAgICAgICAgICAgIHNldENvbG9yUGFsZXR0ZVVJPXt0aGlzLnByb3BzLnNldENvbG9yVUl9XG4gICAgICAgICAgICAgICAgY29sb3JQYWxldHRlVUk9e2NvbG9yVUl9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICA8U2luZ2xlQ29sb3JQYWxldHRlXG4gICAgICAgICAgICAgICAgc2VsZWN0ZWRDb2xvcj17cmdiVG9IZXgoY29sb3JTZXRzW2VkaXRpbmddLnNlbGVjdGVkQ29sb3IpfVxuICAgICAgICAgICAgICAgIG9uU2VsZWN0Q29sb3I9e3RoaXMuX29uU2VsZWN0Q29sb3J9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICApfVxuICAgICAgICAgIDwvU3R5bGVkUGFuZWxEcm9wZG93bj5cbiAgICAgICAgKSA6IG51bGx9XG4gICAgICA8L2Rpdj5cbiAgICApO1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IG9uQ2xpY2tPdXRzaWRlKENvbG9yU2VsZWN0b3IpO1xuIl19
|
|
226
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL3NpZGUtcGFuZWwvbGF5ZXItcGFuZWwvY29sb3Itc2VsZWN0b3IuanMiXSwibmFtZXMiOlsiQ29sb3JCbG9jayIsInN0eWxlZCIsImRpdiIsInByb3BzIiwiY29sb3IiLCJzbGljZSIsImpvaW4iLCJDb2xvclNlbGVjdG9ySW5wdXQiLCJpbnB1dFRoZW1lIiwidGhlbWUiLCJzZWNvbmRhcnlJbnB1dCIsImlucHV0IiwiaW5wdXRCb3hIZWlnaHQiLCJpbnB1dFBsYWNlaG9sZGVyQ29sb3IiLCJJbnB1dEJveENvbnRhaW5lciIsIkNvbG9yU2VsZWN0b3JGYWN0b3J5IiwiZGVwcyIsIlNpbmdsZUNvbG9yUGFsZXR0ZUZhY3RvcnkiLCJTaW5nbGVDb2xvclBhbGV0dGUiLCJDb2xvclNlbGVjdG9yIiwic2hvd0Ryb3Bkb3duIiwiZSIsImNvbG9yVUkiLCJOdW1iZXIiLCJpc0ludGVnZXIiLCJzaG93U2tldGNoZXIiLCJfY2xvc2VQYW5lbERyb3Bkb3duIiwic3RhdGUiLCJfZ2V0RWRpdGluZyIsInNldENvbG9yVUkiLCJzZXRTdGF0ZSIsInN0b3BQcm9wYWdhdGlvbiIsImVkaXRpbmciLCJjb2xvclNldHMiLCJzZXRDb2xvciIsImkiLCJwcmV2ZW50RGVmYXVsdCIsImRpc2FibGVkIiwiY3VycmVudEVkaXRpbmciLCJub2RlIiwibWFwIiwiY1NldCIsIl9zaG93RHJvcGRvd24iLCJpc1JhbmdlIiwic2VsZWN0ZWRDb2xvciIsImNvbG9ycyIsImxhYmVsIiwiX29uU2VsZWN0Q29sb3IiLCJDb21wb25lbnQiLCJQcm9wVHlwZXMiLCJhcnJheU9mIiwic2hhcGUiLCJvbmVPZlR5cGUiLCJhbnkiLCJvYmplY3QiLCJmdW5jIiwiaXNSZXF1aXJlZCIsImJvb2wiLCJzdHJpbmciLCJjdXN0b21QYWxldHRlIiwibnVtYmVyIiwiY29sb3JSYW5nZUNvbmZpZyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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LyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5XG4vLyBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLCB0byBkZWFsXG4vLyBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzXG4vLyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsXG4vLyBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXNcbi8vIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4vL1xuLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW5cbi8vIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuLy9cbi8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1Jcbi8vIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxuLy8gRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFXG4vLyBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSXG4vLyBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLFxuLy8gT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTlxuLy8gVEhFIFNPRlRXQVJFLlxuXG5pbXBvcnQgUmVhY3QsIHtDb21wb25lbnQsIGNyZWF0ZVJlZn0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJztcbmltcG9ydCBzdHlsZWQgZnJvbSAnc3R5bGVkLWNvbXBvbmVudHMnO1xuaW1wb3J0IHtyZ2JUb0hleH0gZnJvbSAndXRpbHMvY29sb3ItdXRpbHMnO1xuaW1wb3J0IENvbG9yUmFuZ2VTZWxlY3RvciBmcm9tICdjb21wb25lbnRzL3NpZGUtcGFuZWwvbGF5ZXItcGFuZWwvY29sb3ItcmFuZ2Utc2VsZWN0b3InO1xuaW1wb3J0IENvbG9yUGFsZXR0ZSBmcm9tICdjb21wb25lbnRzL3NpZGUtcGFuZWwvbGF5ZXItcGFuZWwvY29sb3ItcGFsZXR0ZSc7XG5pbXBvcnQge1N0eWxlZFBhbmVsRHJvcGRvd259IGZyb20gJ2NvbXBvbmVudHMvY29tbW9uL3N0eWxlZC1jb21wb25lbnRzJztcbmltcG9ydCBvbkNsaWNrT3V0c2lkZSBmcm9tICdyZWFjdC1vbmNsaWNrb3V0c2lkZSc7XG5pbXBvcnQgU2luZ2xlQ29sb3JQYWxldHRlRmFjdG9yeSBmcm9tICdjb21wb25lbnRzL3NpZGUtcGFuZWwvbGF5ZXItcGFuZWwvc2luZ2xlLWNvbG9yLXBhbGV0dGUnO1xuXG5leHBvcnQgY29uc3QgQ29sb3JCbG9jayA9IHN0eWxlZC5kaXZgXG4gIHdpZHRoOiAzMnB4O1xuICBoZWlnaHQ6IDE4cHg7XG4gIGJvcmRlci1yYWRpdXM6IDFweDtcbiAgYmFja2dyb3VuZC1jb2xvcjogJHtwcm9wcyA9PiBgcmdiKCR7cHJvcHMuY29sb3Iuc2xpY2UoMCwgMykuam9pbignLCcpfSlgfTtcbmA7XG5cbmV4cG9ydCBjb25zdCBDb2xvclNlbGVjdG9ySW5wdXQgPSBzdHlsZWQuZGl2YFxuICAke3Byb3BzID0+IChwcm9wcy5pbnB1dFRoZW1lID09PSAnc2Vjb25kYXJ5JyA/IHByb3BzLnRoZW1lLnNlY29uZGFyeUlucHV0IDogcHJvcHMudGhlbWUuaW5wdXQpfTtcbiAgaGVpZ2h0OiAke3Byb3BzID0+IHByb3BzLnRoZW1lLmlucHV0Qm94SGVpZ2h0fTtcblxuICAuY29sb3Itc2VsZWN0b3JfX3NlbGVjdG9yX19sYWJlbCB7XG4gICAgdGV4dC10cmFuc2Zvcm06IGNhcGl0YWxpemU7XG4gICAgZm9udC1zaXplOiAxMnB4O1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICBjb2xvcjogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5pbnB1dFBsYWNlaG9sZGVyQ29sb3J9O1xuICB9XG5gO1xuXG5leHBvcnQgY29uc3QgSW5wdXRCb3hDb250YWluZXIgPSBzdHlsZWQuZGl2YFxuICBkaXNwbGF5OiBmbGV4O1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG5cbiAgLmNvbG9yLXNlbGVjdF9faW5wdXQtZ3JvdXAge1xuICAgIGZsZXgtZ3JvdzogMTtcbiAgfVxuICAuY29sb3Itc2VsZWN0X19pbnB1dC1ncm91cDpudGgtY2hpbGQoMikge1xuICAgIG1hcmdpbi1sZWZ0OiAxMnB4O1xuICB9XG5gO1xuXG5Db2xvclNlbGVjdG9yRmFjdG9yeS5kZXBzID0gW1NpbmdsZUNvbG9yUGFsZXR0ZUZhY3RvcnldO1xuXG5mdW5jdGlvbiBDb2xvclNlbGVjdG9yRmFjdG9yeShTaW5nbGVDb2xvclBhbGV0dGUpIHtcbiAgY2xhc3MgQ29sb3JTZWxlY3RvciBleHRlbmRzIENvbXBvbmVudCB7XG4gICAgc3RhdGljIHByb3BUeXBlcyA9IHtcbiAgICAgIGNvbG9yU2V0czogUHJvcFR5cGVzLmFycmF5T2YoXG4gICAgICAgIFByb3BUeXBlcy5zaGFwZSh7XG4gICAgICAgICAgc2VsZWN0ZWRDb2xvcjogUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLmFycmF5T2YoUHJvcFR5cGVzLmFueSksIFByb3BUeXBlcy5vYmplY3RdKSxcbiAgICAgICAgICBzZXRDb2xvcjogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgICAgICAgICBpc1JhbmdlOiBQcm9wVHlwZXMuYm9vbCxcbiAgICAgICAgICBsYWJlbDogUHJvcFR5cGVzLnN0cmluZ1xuICAgICAgICB9KVxuICAgICAgKSxcbiAgICAgIGNvbG9yVUk6IFByb3BUeXBlcy5zaGFwZSh7XG4gICAgICAgIGN1c3RvbVBhbGV0dGU6IFByb3BUeXBlcy5vYmplY3QsXG4gICAgICAgIHNob3dTa2V0Y2hlcjogUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLmJvb2wsIFByb3BUeXBlcy5udW1iZXJdKSxcbiAgICAgICAgc2hvd0Ryb3Bkb3duOiBQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMuYm9vbCwgUHJvcFR5cGVzLm51bWJlcl0pLFxuICAgICAgICBjb2xvclJhbmdlQ29uZmlnOiBQcm9wVHlwZXMub2JqZWN0XG4gICAgICB9KSxcbiAgICAgIGlucHV0VGhlbWU6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgICBkaXNhYmxlZDogUHJvcFR5cGVzLmJvb2wsXG4gICAgICBzZXRDb2xvclVJOiBQcm9wVHlwZXMuZnVuY1xuICAgIH07XG5cbiAgICBzdGF0aWMgZGVmYXVsdFByb3BzID0ge1xuICAgICAgY29sb3JTZXRzOiBbXVxuICAgIH07XG5cbiAgICBzdGF0ZSA9IHtcbiAgICAgIHNob3dEcm9wZG93bjogZmFsc2VcbiAgICB9O1xuXG4gICAgbm9kZSA9IGNyZWF0ZVJlZigpO1xuXG4gICAgaGFuZGxlQ2xpY2tPdXRzaWRlID0gZSA9PiB7XG4gICAgICBpZiAodGhpcy5wcm9wcy5jb2xvclVJICYmIE51bWJlci5pc0ludGVnZXIodGhpcy5wcm9wcy5jb2xvclVJLnNob3dTa2V0Y2hlcikpIHtcbiAgICAgICAgLy8gaWYgc2tldGNoZXIgaXMgb3BlbiwgbGV0IHNrZXRjaCB0byBjbG9zZSBpdHNlbGYgZmlyc3RcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgdGhpcy5fY2xvc2VQYW5lbERyb3Bkb3duKCk7XG4gICAgfTtcblxuICAgIF9nZXRFZGl0aW5nID0gKCkgPT4ge1xuICAgICAgcmV0dXJuIHRoaXMucHJvcHMuY29sb3JVSSA/IHRoaXMucHJvcHMuY29sb3JVSS5zaG93RHJvcGRvd24gOiB0aGlzLnN0YXRlLnNob3dEcm9wZG93bjtcbiAgICB9O1xuXG4gICAgX2Nsb3NlUGFuZWxEcm9wZG93biA9ICgpID0+IHtcbiAgICAgIGlmICh0aGlzLl9nZXRFZGl0aW5nKCkgPT09IGZhbHNlKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLnByb3BzLnNldENvbG9yVUkpIHtcbiAgICAgICAgdGhpcy5wcm9wcy5zZXRDb2xvclVJKHtzaG93RHJvcGRvd246IGZhbHNlLCBzaG93U2tldGNoZXI6IGZhbHNlfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnNldFN0YXRlKHtzaG93RHJvcGRvd246IGZhbHNlfSk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIF9vblNlbGVjdENvbG9yID0gKGNvbG9yLCBlKSA9PiB7XG4gICAgICBlPy5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgIGNvbnN0IGVkaXRpbmcgPSB0aGlzLl9nZXRFZGl0aW5nKCk7XG4gICAgICBpZiAodGhpcy5wcm9wcy5jb2xvclNldHNbZWRpdGluZ10pIHtcbiAgICAgICAgdGhpcy5wcm9wcy5jb2xvclNldHNbZWRpdGluZ10uc2V0Q29sb3IoY29sb3IpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBfc2hvd0Ryb3Bkb3duID0gKGUsIGkpID0+IHtcbiAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICBpZiAodGhpcy5wcm9wcy5zZXRDb2xvclVJKSB7XG4gICAgICAgIHRoaXMucHJvcHMuc2V0Q29sb3JVSSh7c2hvd0Ryb3Bkb3duOiBpfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnNldFN0YXRlKHtzaG93RHJvcGRvd246IGl9KTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgcmVuZGVyKCkge1xuICAgICAgY29uc3Qge2NvbG9yU2V0cywgZGlzYWJsZWQsIGlucHV0VGhlbWUsIGNvbG9yVUl9ID0gdGhpcy5wcm9wcztcblxuICAgICAgY29uc3QgZWRpdGluZyA9IHRoaXMuX2dldEVkaXRpbmcoKTtcbiAgICAgIGNvbnN0IGN1cnJlbnRFZGl0aW5nID0gY29sb3JTZXRzW2VkaXRpbmddICYmIHR5cGVvZiBjb2xvclNldHNbZWRpdGluZ10gPT09ICdvYmplY3QnO1xuXG4gICAgICByZXR1cm4gKFxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImNvbG9yLXNlbGVjdG9yXCIgcmVmPXt0aGlzLm5vZGV9PlxuICAgICAgICAgIDxJbnB1dEJveENvbnRhaW5lcj5cbiAgICAgICAgICAgIHtjb2xvclNldHMubWFwKChjU2V0LCBpKSA9PiAoXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY29sb3Itc2VsZWN0X19pbnB1dC1ncm91cFwiIGtleT17aX0+XG4gICAgICAgICAgICAgICAgPENvbG9yU2VsZWN0b3JJbnB1dFxuICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiY29sb3Itc2VsZWN0b3JfX3NlbGVjdG9yXCJcbiAgICAgICAgICAgICAgICAgIGFjdGl2ZT17ZWRpdGluZyA9PT0gaX1cbiAgICAgICAgICAgICAgICAgIGRpc2FibGVkPXtkaXNhYmxlZH1cbiAgICAgICAgICAgICAgICAgIGlucHV0VGhlbWU9e2lucHV0VGhlbWV9XG4gICAgICAgICAgICAgICAgICBvbk1vdXNlRG93bj17ZSA9PiB0aGlzLl9zaG93RHJvcGRvd24oZSwgaSl9XG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAge2NTZXQuaXNSYW5nZSA/IChcbiAgICAgICAgICAgICAgICAgICAgPENvbG9yUGFsZXR0ZSBjb2xvcnM9e2NTZXQuc2VsZWN0ZWRDb2xvci5jb2xvcnN9IC8+XG4gICAgICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgICAgICA8Q29sb3JCbG9ja1xuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImNvbG9yLXNlbGVjdG9yX19zZWxlY3Rvcl9fYmxvY2tcIlxuICAgICAgICAgICAgICAgICAgICAgIGNvbG9yPXtjU2V0LnNlbGVjdGVkQ29sb3J9XG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAge2NTZXQubGFiZWwgPyAoXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY29sb3Itc2VsZWN0b3JfX3NlbGVjdG9yX19sYWJlbFwiPntjU2V0LmxhYmVsfTwvZGl2PlxuICAgICAgICAgICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgICAgICAgICAgPC9Db2xvclNlbGVjdG9ySW5wdXQ+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgKSl9XG4gICAgICAgICAgPC9JbnB1dEJveENvbnRhaW5lcj5cbiAgICAgICAgICB7Y3VycmVudEVkaXRpbmcgPyAoXG4gICAgICAgICAgICA8U3R5bGVkUGFuZWxEcm9wZG93biBjbGFzc05hbWU9XCJjb2xvci1zZWxlY3Rvcl9fZHJvcGRvd25cIj5cbiAgICAgICAgICAgICAge2NvbG9yU2V0c1tlZGl0aW5nXS5pc1JhbmdlID8gKFxuICAgICAgICAgICAgICAgIDxDb2xvclJhbmdlU2VsZWN0b3JcbiAgICAgICAgICAgICAgICAgIHNlbGVjdGVkQ29sb3JSYW5nZT17Y29sb3JTZXRzW2VkaXRpbmddLnNlbGVjdGVkQ29sb3J9XG4gICAgICAgICAgICAgICAgICBvblNlbGVjdENvbG9yUmFuZ2U9e3RoaXMuX29uU2VsZWN0Q29sb3J9XG4gICAgICAgICAgICAgICAgICBzZXRDb2xvclBhbGV0dGVVST17dGhpcy5wcm9wcy5zZXRDb2xvclVJfVxuICAgICAgICAgICAgICAgICAgY29sb3JQYWxldHRlVUk9e2NvbG9yVUl9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICA8U2luZ2xlQ29sb3JQYWxldHRlXG4gICAgICAgICAgICAgICAgICBzZWxlY3RlZENvbG9yPXtyZ2JUb0hleChjb2xvclNldHNbZWRpdGluZ10uc2VsZWN0ZWRDb2xvcil9XG4gICAgICAgICAgICAgICAgICBvblNlbGVjdENvbG9yPXt0aGlzLl9vblNlbGVjdENvbG9yfVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICl9XG4gICAgICAgICAgICA8L1N0eWxlZFBhbmVsRHJvcGRvd24+XG4gICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgIDwvZGl2PlxuICAgICAgKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIG9uQ2xpY2tPdXRzaWRlKENvbG9yU2VsZWN0b3IpO1xufVxuXG5leHBvcnQgZGVmYXVsdCBDb2xvclNlbGVjdG9yRmFjdG9yeTtcbiJdfQ==
|