@pie-element/inline-dropdown 4.7.1-beta.0 → 4.7.1-beta.3

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.
@@ -1,74 +1,43 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
4
  var _typeof = require("@babel/runtime/helpers/typeof");
6
-
7
5
  Object.defineProperty(exports, "__esModule", {
8
6
  value: true
9
7
  });
10
8
  exports["default"] = exports.RespAreaToolbar = void 0;
11
-
12
9
  var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
13
-
14
10
  var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
15
-
16
11
  var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
17
-
18
12
  var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
19
-
20
13
  var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
21
-
22
14
  var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
23
-
24
15
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
25
-
26
16
  var _react = _interopRequireDefault(require("react"));
27
-
28
17
  var _reactDom = _interopRequireDefault(require("react-dom"));
29
-
30
18
  var _slateReact = require("slate-react");
31
-
32
19
  var _propTypes = _interopRequireDefault(require("prop-types"));
33
-
34
20
  var _editableHtml = _interopRequireWildcard(require("@pie-lib/editable-html"));
35
-
36
21
  var _mathRendering = require("@pie-lib/math-rendering");
37
-
38
22
  var _styles = require("@material-ui/core/styles");
39
-
40
23
  var _isEqual = _interopRequireDefault(require("lodash/isEqual"));
41
-
42
24
  var _isEmpty = _interopRequireDefault(require("lodash/isEmpty"));
43
-
44
25
  var _classnames2 = _interopRequireDefault(require("classnames"));
45
-
46
26
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
47
-
48
27
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
49
-
50
28
  function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
51
-
52
29
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
53
-
54
30
  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); }; }
55
-
56
31
  function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
57
-
58
32
  var MenuItemComp = /*#__PURE__*/function (_React$Component) {
59
33
  (0, _inherits2["default"])(MenuItemComp, _React$Component);
60
-
61
34
  var _super = _createSuper(MenuItemComp);
62
-
63
35
  function MenuItemComp() {
64
36
  var _this;
65
-
66
37
  (0, _classCallCheck2["default"])(this, MenuItemComp);
67
-
68
38
  for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
69
39
  args[_key] = arguments[_key];
70
40
  }
71
-
72
41
  _this = _super.call.apply(_super, [this].concat(args));
73
42
  (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "onRemoveClick", function (e) {
74
43
  var onRemoveChoice = _this.props.onRemoveChoice;
@@ -78,15 +47,14 @@ var MenuItemComp = /*#__PURE__*/function (_React$Component) {
78
47
  });
79
48
  return _this;
80
49
  }
81
-
82
50
  (0, _createClass2["default"])(MenuItemComp, [{
83
51
  key: "render",
84
52
  value: function render() {
85
53
  var _this$props = this.props,
86
- classes = _this$props.classes,
87
- correct = _this$props.correct,
88
- onClick = _this$props.onClick,
89
- value = _this$props.value;
54
+ classes = _this$props.classes,
55
+ correct = _this$props.correct,
56
+ onClick = _this$props.onClick,
57
+ value = _this$props.value;
90
58
  return /*#__PURE__*/_react["default"].createElement("div", {
91
59
  className: (0, _classnames2["default"])(classes.wrapper, (0, _defineProperty2["default"])({}, classes.correct, correct)),
92
60
  onClick: onClick
@@ -103,7 +71,6 @@ var MenuItemComp = /*#__PURE__*/function (_React$Component) {
103
71
  }]);
104
72
  return MenuItemComp;
105
73
  }(_react["default"].Component);
106
-
107
74
  (0, _defineProperty2["default"])(MenuItemComp, "propTypes", {
108
75
  classes: _propTypes["default"].object.isRequired,
109
76
  correct: _propTypes["default"].bool.isRequired,
@@ -139,27 +106,20 @@ var MenuItem = (0, _styles.withStyles)({
139
106
  wordBreak: 'break-all'
140
107
  }
141
108
  })(MenuItemComp);
142
-
143
109
  var createElementFromHTML = function createElementFromHTML(htmlString) {
144
110
  var div = document.createElement('div');
145
111
  div.innerHTML = (htmlString || '').trim();
146
112
  return div;
147
113
  };
148
-
149
114
  var RespAreaToolbar = /*#__PURE__*/function (_React$Component2) {
150
115
  (0, _inherits2["default"])(RespAreaToolbar, _React$Component2);
151
-
152
116
  var _super2 = _createSuper(RespAreaToolbar);
153
-
154
117
  function RespAreaToolbar() {
155
118
  var _this2;
156
-
157
119
  (0, _classCallCheck2["default"])(this, RespAreaToolbar);
158
-
159
120
  for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
160
121
  args[_key2] = arguments[_key2];
161
122
  }
162
-
163
123
  _this2 = _super2.call.apply(_super2, [this].concat(args));
164
124
  (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this2), "state", {
165
125
  respAreaMarkup: ''
@@ -176,26 +136,23 @@ var RespAreaToolbar = /*#__PURE__*/function (_React$Component2) {
176
136
  });
177
137
  (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this2), "onDone", function (val) {
178
138
  var _this2$props = _this2.props,
179
- node = _this2$props.node,
180
- onAddChoice = _this2$props.onAddChoice;
139
+ node = _this2$props.node,
140
+ onAddChoice = _this2$props.onAddChoice;
181
141
  var onlyText = createElementFromHTML(val).textContent.trim();
182
-
183
142
  if (!(0, _isEmpty["default"])(onlyText)) {
184
143
  onAddChoice(node.data.index, val);
185
144
  }
186
145
  });
187
146
  (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this2), "onSelectChoice", function (newValue, index) {
188
147
  var _this2$props2 = _this2.props,
189
- node = _this2$props2.node,
190
- nodePath = _this2$props2.nodePath,
191
- editor = _this2$props2.editor,
192
- onToolbarDone = _this2$props2.onToolbarDone,
193
- onSelectChoice = _this2$props2.onSelectChoice;
194
-
148
+ node = _this2$props2.node,
149
+ nodePath = _this2$props2.nodePath,
150
+ editor = _this2$props2.editor,
151
+ onToolbarDone = _this2$props2.onToolbarDone,
152
+ onSelectChoice = _this2$props2.onSelectChoice;
195
153
  var update = _objectSpread(_objectSpread({}, node.data), {}, {
196
154
  value: newValue
197
155
  });
198
-
199
156
  editor.apply({
200
157
  type: 'set_node',
201
158
  path: nodePath,
@@ -211,17 +168,15 @@ var RespAreaToolbar = /*#__PURE__*/function (_React$Component2) {
211
168
  });
212
169
  (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this2), "onRemoveChoice", function (val, index) {
213
170
  var _this2$props3 = _this2.props,
214
- node = _this2$props3.node,
215
- nodePath = _this2$props3.nodePath,
216
- editor = _this2$props3.editor,
217
- onToolbarDone = _this2$props3.onToolbarDone,
218
- onRemoveChoice = _this2$props3.onRemoveChoice;
219
-
171
+ node = _this2$props3.node,
172
+ nodePath = _this2$props3.nodePath,
173
+ editor = _this2$props3.editor,
174
+ onToolbarDone = _this2$props3.onToolbarDone,
175
+ onRemoveChoice = _this2$props3.onRemoveChoice;
220
176
  if ((0, _isEqual["default"])(val, node.data.value)) {
221
177
  var update = _objectSpread(_objectSpread({}, node.data), {}, {
222
178
  value: null
223
179
  });
224
-
225
180
  editor.apply({
226
181
  type: 'set_node',
227
182
  path: nodePath,
@@ -234,14 +189,12 @@ var RespAreaToolbar = /*#__PURE__*/function (_React$Component2) {
234
189
  });
235
190
  onToolbarDone(false);
236
191
  }
237
-
238
192
  onRemoveChoice(index);
239
193
  });
240
194
  (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this2), "onKeyDown", function (event) {
241
195
  if (event.key === 'Enter') {
242
- _this2.onAddChoice(); // Cancelling event
243
-
244
-
196
+ _this2.onAddChoice();
197
+ // Cancelling event
245
198
  return false;
246
199
  }
247
200
  });
@@ -250,19 +203,16 @@ var RespAreaToolbar = /*#__PURE__*/function (_React$Component2) {
250
203
  _this2.clickedInside = false;
251
204
  return;
252
205
  }
253
-
254
206
  var _this2$props4 = _this2.props,
255
- nodePath = _this2$props4.nodePath,
256
- choices = _this2$props4.choices,
257
- onCheck = _this2$props4.onCheck,
258
- onToolbarDone = _this2$props4.onToolbarDone,
259
- editor = _this2$props4.editor;
207
+ nodePath = _this2$props4.nodePath,
208
+ choices = _this2$props4.choices,
209
+ onCheck = _this2$props4.onCheck,
210
+ onToolbarDone = _this2$props4.onToolbarDone,
211
+ editor = _this2$props4.editor;
260
212
  var correctResponse = (choices || []).find(function (choice) {
261
213
  return choice.correct;
262
214
  });
263
-
264
215
  _this2.onAddChoice();
265
-
266
216
  if (!choices || choices && choices.length < 2 || !correctResponse) {
267
217
  onCheck(function () {
268
218
  editor.apply({
@@ -280,31 +230,24 @@ var RespAreaToolbar = /*#__PURE__*/function (_React$Component2) {
280
230
  // we need to focus the input so that math is saved even without pressing the green checkmark
281
231
  var slateEditorRef = _this2.editorRef && _this2.editorRef.rootRef && _this2.editorRef.rootRef.slateEditor;
282
232
  var inputRef = slateEditorRef && slateEditorRef.editorRef && slateEditorRef.editorRef.element;
283
-
284
233
  if (inputRef) {
285
234
  inputRef.focus();
286
235
  }
287
236
  });
288
237
  return _this2;
289
238
  }
290
-
291
239
  (0, _createClass2["default"])(RespAreaToolbar, [{
292
240
  key: "componentDidMount",
293
241
  value: function componentDidMount() {
294
242
  var _this$props2 = this.props,
295
- node = _this$props2.node,
296
- editor = _this$props2.editor;
297
-
243
+ node = _this$props2.node,
244
+ editor = _this$props2.editor;
298
245
  var domNode = _slateReact.ReactEditor.toDOMNode(editor, node);
299
-
300
246
  if (domNode) {
301
247
  //eslint-disable-next-line
302
248
  var domNodeRect = domNode.getBoundingClientRect();
303
-
304
249
  var _editor = domNode.closest('[data-slate-editor]');
305
-
306
250
  var editorRect = _editor.getBoundingClientRect();
307
-
308
251
  var top = domNodeRect.top - editorRect.top;
309
252
  var left = domNodeRect.left - editorRect.left;
310
253
  this.setState({
@@ -322,22 +265,20 @@ var RespAreaToolbar = /*#__PURE__*/function (_React$Component2) {
322
265
  value: function componentDidUpdate() {
323
266
  //eslint-disable-next-line
324
267
  var domNode = _reactDom["default"].findDOMNode(this);
325
-
326
268
  (0, _mathRendering.renderMath)(domNode);
327
269
  }
328
270
  }, {
329
271
  key: "render",
330
272
  value: function render() {
331
273
  var _this3 = this;
332
-
333
274
  var _this$props3 = this.props,
334
- classes = _this$props3.classes,
335
- choices = _this$props3.choices,
336
- spellCheck = _this$props3.spellCheck,
337
- uploadSoundSupport = _this$props3.uploadSoundSupport;
275
+ classes = _this$props3.classes,
276
+ choices = _this$props3.choices,
277
+ spellCheck = _this$props3.spellCheck,
278
+ uploadSoundSupport = _this$props3.uploadSoundSupport;
338
279
  var _this$state = this.state,
339
- respAreaMarkup = _this$state.respAreaMarkup,
340
- toolbarStyle = _this$state.toolbarStyle;
280
+ respAreaMarkup = _this$state.respAreaMarkup,
281
+ toolbarStyle = _this$state.toolbarStyle;
341
282
  var filteredDefaultPlugins = (_editableHtml.DEFAULT_PLUGINS || []).filter(function (p) {
342
283
  return p !== 'table' && p !== 'bulleted-list' && p !== 'numbered-list';
343
284
  });
@@ -349,11 +290,9 @@ var RespAreaToolbar = /*#__PURE__*/function (_React$Component2) {
349
290
  disabled: true
350
291
  }
351
292
  };
352
-
353
293
  if (!toolbarStyle) {
354
294
  return null;
355
295
  }
356
-
357
296
  return /*#__PURE__*/_react["default"].createElement("div", {
358
297
  style: _objectSpread(_objectSpread({}, toolbarStyle), {}, {
359
298
  backgroundColor: '#E0E1E6'
@@ -407,7 +346,7 @@ var RespAreaToolbar = /*#__PURE__*/function (_React$Component2) {
407
346
  className: classes.choicesHolder
408
347
  }, choices.map(function (_ref2, index) {
409
348
  var label = _ref2.label,
410
- correct = _ref2.correct;
349
+ correct = _ref2.correct;
411
350
  return /*#__PURE__*/_react["default"].createElement(MenuItem, {
412
351
  key: index,
413
352
  onClick: function onClick() {
@@ -424,7 +363,6 @@ var RespAreaToolbar = /*#__PURE__*/function (_React$Component2) {
424
363
  }]);
425
364
  return RespAreaToolbar;
426
365
  }(_react["default"].Component);
427
-
428
366
  exports.RespAreaToolbar = RespAreaToolbar;
429
367
  (0, _defineProperty2["default"])(RespAreaToolbar, "propTypes", {
430
368
  classes: _propTypes["default"].object,
@@ -460,4 +398,4 @@ var StyledRespAreaToolbar = (0, _styles.withStyles)({
460
398
  })(RespAreaToolbar);
461
399
  var _default = StyledRespAreaToolbar;
462
400
  exports["default"] = _default;
463
- //# sourceMappingURL=inline-dropdown-toolbar.js.map
401
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9yZWFjdERvbSIsIl9zbGF0ZVJlYWN0IiwiX3Byb3BUeXBlcyIsIl9lZGl0YWJsZUh0bWwiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsIl9tYXRoUmVuZGVyaW5nIiwiX3N0eWxlcyIsIl9pc0VxdWFsIiwiX2lzRW1wdHkiLCJfY2xhc3NuYW1lczIiLCJfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUiLCJub2RlSW50ZXJvcCIsIldlYWtNYXAiLCJjYWNoZUJhYmVsSW50ZXJvcCIsImNhY2hlTm9kZUludGVyb3AiLCJvYmoiLCJfX2VzTW9kdWxlIiwiX3R5cGVvZiIsImNhY2hlIiwiaGFzIiwiZ2V0IiwibmV3T2JqIiwiaGFzUHJvcGVydHlEZXNjcmlwdG9yIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJrZXkiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJkZXNjIiwic2V0Iiwib3duS2V5cyIsIm9iamVjdCIsImVudW1lcmFibGVPbmx5Iiwia2V5cyIsImdldE93blByb3BlcnR5U3ltYm9scyIsInN5bWJvbHMiLCJmaWx0ZXIiLCJzeW0iLCJlbnVtZXJhYmxlIiwicHVzaCIsImFwcGx5IiwiX29iamVjdFNwcmVhZCIsInRhcmdldCIsImkiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJzb3VyY2UiLCJmb3JFYWNoIiwiX2RlZmluZVByb3BlcnR5MiIsImdldE93blByb3BlcnR5RGVzY3JpcHRvcnMiLCJkZWZpbmVQcm9wZXJ0aWVzIiwiX2NyZWF0ZVN1cGVyIiwiRGVyaXZlZCIsImhhc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QiLCJfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0IiwiX2NyZWF0ZVN1cGVySW50ZXJuYWwiLCJTdXBlciIsIl9nZXRQcm90b3R5cGVPZjIiLCJyZXN1bHQiLCJOZXdUYXJnZXQiLCJjb25zdHJ1Y3RvciIsIlJlZmxlY3QiLCJjb25zdHJ1Y3QiLCJfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybjIiLCJzaGFtIiwiUHJveHkiLCJCb29sZWFuIiwidmFsdWVPZiIsImUiLCJNZW51SXRlbUNvbXAiLCJfUmVhY3QkQ29tcG9uZW50IiwiX2luaGVyaXRzMiIsIl9zdXBlciIsIl90aGlzIiwiX2NsYXNzQ2FsbENoZWNrMiIsIl9sZW4iLCJhcmdzIiwiQXJyYXkiLCJfa2V5IiwiY29uY2F0IiwiX2Fzc2VydFRoaXNJbml0aWFsaXplZDIiLCJvblJlbW92ZUNob2ljZSIsInByb3BzIiwicHJldmVudERlZmF1bHQiLCJzdG9wUHJvcGFnYXRpb24iLCJfY3JlYXRlQ2xhc3MyIiwidmFsdWUiLCJyZW5kZXIiLCJfdGhpcyRwcm9wcyIsImNsYXNzZXMiLCJjb3JyZWN0Iiwib25DbGljayIsImNyZWF0ZUVsZW1lbnQiLCJjbGFzc05hbWUiLCJjbGFzc25hbWVzIiwid3JhcHBlciIsInZhbHVlSG9sZGVyIiwiZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwiLCJfX2h0bWwiLCJyZW1vdmVJY29uIiwib25SZW1vdmVDbGljayIsIlJlYWN0IiwiQ29tcG9uZW50IiwiUHJvcFR5cGVzIiwiaXNSZXF1aXJlZCIsImJvb2wiLCJmdW5jIiwic3RyaW5nIiwiTWVudUl0ZW0iLCJ3aXRoU3R5bGVzIiwiYmFja2dyb3VuZCIsImJvcmRlckJvdHRvbSIsImJveFNpemluZyIsImRpc3BsYXkiLCJjdXJzb3IiLCJsaW5lSGVpZ2h0IiwicGFkZGluZyIsInBvc2l0aW9uIiwiZm9udFNpemUiLCJmb250U3R5bGUiLCJ0cmFuc2Zvcm0iLCJ0b3AiLCJyaWdodCIsInpJbmRleCIsIndvcmRCcmVhayIsImNyZWF0ZUVsZW1lbnRGcm9tSFRNTCIsImh0bWxTdHJpbmciLCJkaXYiLCJkb2N1bWVudCIsImlubmVySFRNTCIsInRyaW0iLCJSZXNwQXJlYVRvb2xiYXIiLCJfUmVhY3QkQ29tcG9uZW50MiIsIl9zdXBlcjIiLCJfdGhpczIiLCJfbGVuMiIsIl9rZXkyIiwicmVzcEFyZWFNYXJrdXAiLCJzZXRTdGF0ZSIsImVkaXRvclJlZiIsImZpbmlzaEVkaXRpbmciLCJ2YWwiLCJfdGhpczIkcHJvcHMiLCJub2RlIiwib25BZGRDaG9pY2UiLCJvbmx5VGV4dCIsInRleHRDb250ZW50IiwiaXNFbXB0eSIsImRhdGEiLCJpbmRleCIsIm5ld1ZhbHVlIiwiX3RoaXMyJHByb3BzMiIsIm5vZGVQYXRoIiwiZWRpdG9yIiwib25Ub29sYmFyRG9uZSIsIm9uU2VsZWN0Q2hvaWNlIiwidXBkYXRlIiwidHlwZSIsInBhdGgiLCJwcm9wZXJ0aWVzIiwibmV3UHJvcGVydGllcyIsIl90aGlzMiRwcm9wczMiLCJpc0VxdWFsIiwiZXZlbnQiLCJjbGlja2VkSW5zaWRlIiwiX3RoaXMyJHByb3BzNCIsImNob2ljZXMiLCJvbkNoZWNrIiwiY29ycmVjdFJlc3BvbnNlIiwiZmluZCIsImNob2ljZSIsInNsYXRlRWRpdG9yUmVmIiwicm9vdFJlZiIsInNsYXRlRWRpdG9yIiwiaW5wdXRSZWYiLCJlbGVtZW50IiwiZm9jdXMiLCJjb21wb25lbnREaWRNb3VudCIsIl90aGlzJHByb3BzMiIsImRvbU5vZGUiLCJSZWFjdEVkaXRvciIsInRvRE9NTm9kZSIsImRvbU5vZGVSZWN0IiwiZ2V0Qm91bmRpbmdDbGllbnRSZWN0IiwiY2xvc2VzdCIsImVkaXRvclJlY3QiLCJsZWZ0IiwidG9vbGJhclN0eWxlIiwiaGVpZ2h0Iiwid2lkdGgiLCJjb21wb25lbnREaWRVcGRhdGUiLCJSZWFjdERPTSIsImZpbmRET01Ob2RlIiwicmVuZGVyTWF0aCIsIl90aGlzMyIsIl90aGlzJHByb3BzMyIsInNwZWxsQ2hlY2siLCJ1cGxvYWRTb3VuZFN1cHBvcnQiLCJfdGhpcyRzdGF0ZSIsInN0YXRlIiwiZmlsdGVyZWREZWZhdWx0UGx1Z2lucyIsIkRFRkFVTFRfUExVR0lOUyIsInAiLCJsYWJlbFBsdWdpbnMiLCJhdWRpbyIsImRpc2FibGVkIiwidmlkZW8iLCJzdHlsZSIsImJhY2tncm91bmRDb2xvciIsIm9uTW91c2VEb3duIiwib25DbGlja0luc2lkZSIsIml0ZW1CdWlsZGVyIiwicmVmIiwiYXV0b0ZvY3VzIiwiYXV0b1NhdmUiLCJyZXNwQXJlYSIsInRvb2xiYXJPcHRzIiwiYWx3YXlzVmlzaWJsZSIsInNob3dEb25lIiwiZG9uZU9uIiwibWFya3VwIiwib25LZXlEb3duIiwib25DaGFuZ2UiLCJvblJlc3BBcmVhQ2hhbmdlIiwib25Eb25lIiwicGxhY2Vob2xkZXIiLCJhY3RpdmVQbHVnaW5zIiwicGx1Z2luUHJvcHMiLCJvbkJsdXIiLCJjb250ZW50RWRpdGFibGUiLCJmb2N1c0lucHV0IiwiY2hvaWNlc0hvbGRlciIsIm1hcCIsIl9yZWYyIiwibGFiZWwiLCJleHBvcnRzIiwiYXJyYXkiLCJTdHlsZWRSZXNwQXJlYVRvb2xiYXIiLCJtaW5IZWlnaHQiLCJmbGV4RGlyZWN0aW9uIiwiYm9yZGVyIiwiX2RlZmF1bHQiXSwic291cmNlcyI6WyIuLi9zcmMvaW5saW5lLWRyb3Bkb3duLXRvb2xiYXIuanN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgUmVhY3RET00gZnJvbSAncmVhY3QtZG9tJztcbmltcG9ydCB7IFJlYWN0RWRpdG9yIH0gZnJvbSAnc2xhdGUtcmVhY3QnO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJztcbmltcG9ydCBFZGl0YWJsZUh0bWwgZnJvbSAnQHBpZS1saWIvZWRpdGFibGUtaHRtbCc7XG5pbXBvcnQgeyByZW5kZXJNYXRoIH0gZnJvbSAnQHBpZS1saWIvbWF0aC1yZW5kZXJpbmcnO1xuaW1wb3J0IHsgd2l0aFN0eWxlcyB9IGZyb20gJ0BtYXRlcmlhbC11aS9jb3JlL3N0eWxlcyc7XG5pbXBvcnQgaXNFcXVhbCBmcm9tICdsb2Rhc2gvaXNFcXVhbCc7XG5pbXBvcnQgaXNFbXB0eSBmcm9tICdsb2Rhc2gvaXNFbXB0eSc7XG5pbXBvcnQgY2xhc3NuYW1lcyBmcm9tICdjbGFzc25hbWVzJztcbmltcG9ydCB7IERFRkFVTFRfUExVR0lOUyB9IGZyb20gJ0BwaWUtbGliL2VkaXRhYmxlLWh0bWwnO1xuXG5jbGFzcyBNZW51SXRlbUNvbXAgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQge1xuICBzdGF0aWMgcHJvcFR5cGVzID0ge1xuICAgIGNsYXNzZXM6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgICBjb3JyZWN0OiBQcm9wVHlwZXMuYm9vbC5pc1JlcXVpcmVkLFxuICAgIG9uQ2xpY2s6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gICAgb25SZW1vdmVDaG9pY2U6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gICAgdmFsdWU6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgfTtcblxuICBvblJlbW92ZUNsaWNrID0gKGUpID0+IHtcbiAgICBjb25zdCB7IG9uUmVtb3ZlQ2hvaWNlIH0gPSB0aGlzLnByb3BzO1xuXG4gICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG5cbiAgICBvblJlbW92ZUNob2ljZSgpO1xuICB9O1xuXG4gIHJlbmRlcigpIHtcbiAgICBjb25zdCB7IGNsYXNzZXMsIGNvcnJlY3QsIG9uQ2xpY2ssIHZhbHVlIH0gPSB0aGlzLnByb3BzO1xuXG4gICAgcmV0dXJuIChcbiAgICAgIDxkaXYgY2xhc3NOYW1lPXtjbGFzc25hbWVzKGNsYXNzZXMud3JhcHBlciwgeyBbY2xhc3Nlcy5jb3JyZWN0XTogY29ycmVjdCB9KX0gb25DbGljaz17b25DbGlja30+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzc05hbWU9e2NsYXNzZXMudmFsdWVIb2xkZXJ9XG4gICAgICAgICAgZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUw9e3tcbiAgICAgICAgICAgIF9faHRtbDogdmFsdWUsXG4gICAgICAgICAgfX1cbiAgICAgICAgLz5cbiAgICAgICAgPGkgY2xhc3NOYW1lPXtjbGFzc2VzLnJlbW92ZUljb259IG9uQ2xpY2s9e3RoaXMub25SZW1vdmVDbGlja30+XG4gICAgICAgICAgeFxuICAgICAgICA8L2k+XG4gICAgICA8L2Rpdj5cbiAgICApO1xuICB9XG59XG5cbmNvbnN0IE1lbnVJdGVtID0gd2l0aFN0eWxlcyh7XG4gIHdyYXBwZXI6IHtcbiAgICBiYWNrZ3JvdW5kOiAnI2ZmZicsXG4gICAgYm9yZGVyQm90dG9tOiAnMXB4IHNvbGlkIGJsYWNrJyxcbiAgICBib3hTaXppbmc6ICdib3JkZXItYm94JyxcbiAgICBkaXNwbGF5OiAnYmxvY2snLFxuICAgIGN1cnNvcjogJ3BvaW50ZXInLFxuICAgIGxpbmVIZWlnaHQ6ICczMHB4JyxcbiAgICBwYWRkaW5nOiAnMTBweCAyNXB4IDEwcHggMTBweCcsXG4gICAgcG9zaXRpb246ICdyZWxhdGl2ZScsXG4gIH0sXG4gIGNvcnJlY3Q6IHtcbiAgICBiYWNrZ3JvdW5kOiAnI0M0RENGQScsXG4gIH0sXG4gIHJlbW92ZUljb246IHtcbiAgICBjdXJzb3I6ICdwb2ludGVyJyxcbiAgICBmb250U2l6ZTogJzIwcHgnLFxuICAgIGZvbnRTdHlsZTogJ25vcm1hbCcsXG4gICAgcG9zaXRpb246ICdhYnNvbHV0ZScsXG4gICAgdHJhbnNmb3JtOiAndHJhbnNsYXRlKDAsIC01MCUpJyxcbiAgICB0b3A6ICc1MCUnLFxuICAgIHJpZ2h0OiAnNXB4JyxcbiAgICB6SW5kZXg6IDMsXG4gIH0sXG4gIHZhbHVlSG9sZGVyOiB7XG4gICAgd29yZEJyZWFrOiAnYnJlYWstYWxsJyxcbiAgfSxcbn0pKE1lbnVJdGVtQ29tcCk7XG5cbmNvbnN0IGNyZWF0ZUVsZW1lbnRGcm9tSFRNTCA9IChodG1sU3RyaW5nKSA9PiB7XG4gIGNvbnN0IGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuXG4gIGRpdi5pbm5lckhUTUwgPSAoaHRtbFN0cmluZyB8fCAnJykudHJpbSgpO1xuXG4gIHJldHVybiBkaXY7XG59O1xuXG5leHBvcnQgY2xhc3MgUmVzcEFyZWFUb29sYmFyIGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50IHtcbiAgc3RhdGljIHByb3BUeXBlcyA9IHtcbiAgICBjbGFzc2VzOiBQcm9wVHlwZXMub2JqZWN0LFxuICAgIG5vZGU6IFByb3BUeXBlcy5vYmplY3QsXG4gICAgdXBsb2FkU291bmRTdXBwb3J0OiBQcm9wVHlwZXMub2JqZWN0LFxuICAgIG9uRG9uZTogUHJvcFR5cGVzLmZ1bmMsXG4gICAgY2hvaWNlczogUHJvcFR5cGVzLmFycmF5LFxuICAgIG9uQWRkQ2hvaWNlOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICAgIG9uUmVtb3ZlQ2hvaWNlOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICAgIG9uU2VsZWN0Q2hvaWNlOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICAgIG9uVG9vbGJhckRvbmU6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gICAgZWRpdG9yOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gICAgbm9kZVBhdGg6IFByb3BUeXBlcy5hcnJheS5pc1JlcXVpcmVkLFxuICB9O1xuXG4gIHN0YXRlID0ge1xuICAgIHJlc3BBcmVhTWFya3VwOiAnJyxcbiAgfTtcblxuICBjb21wb25lbnREaWRNb3VudCgpIHtcbiAgICBjb25zdCB7IG5vZGUsIGVkaXRvciB9ID0gdGhpcy5wcm9wcztcbiAgICBjb25zdCBkb21Ob2RlID0gUmVhY3RFZGl0b3IudG9ET01Ob2RlKGVkaXRvciwgbm9kZSk7XG5cbiAgICBpZiAoZG9tTm9kZSkge1xuICAgICAgLy9lc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmVcbiAgICAgIGNvbnN0IGRvbU5vZGVSZWN0ID0gZG9tTm9kZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgIGNvbnN0IGVkaXRvciA9IGRvbU5vZGUuY2xvc2VzdCgnW2RhdGEtc2xhdGUtZWRpdG9yXScpO1xuICAgICAgY29uc3QgZWRpdG9yUmVjdCA9IGVkaXRvci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgIGNvbnN0IHRvcCA9IGRvbU5vZGVSZWN0LnRvcCAtIGVkaXRvclJlY3QudG9wO1xuICAgICAgY29uc3QgbGVmdCA9IGRvbU5vZGVSZWN0LmxlZnQgLSBlZGl0b3JSZWN0LmxlZnQ7XG5cbiAgICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgICB0b29sYmFyU3R5bGU6IHtcbiAgICAgICAgICBwb3NpdGlvbjogJ2Fic29sdXRlJyxcbiAgICAgICAgICB0b3A6IGAke3RvcCArIGRvbU5vZGVSZWN0LmhlaWdodCArIDYwfXB4YCxcbiAgICAgICAgICBsZWZ0OiBgJHtsZWZ0ICsgMjV9cHhgLFxuICAgICAgICAgIHdpZHRoOiBkb21Ob2RlUmVjdC53aWR0aCxcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIGNvbXBvbmVudERpZFVwZGF0ZSgpIHtcbiAgICAvL2VzbGludC1kaXNhYmxlLW5leHQtbGluZVxuICAgIGNvbnN0IGRvbU5vZGUgPSBSZWFjdERPTS5maW5kRE9NTm9kZSh0aGlzKTtcblxuICAgIHJlbmRlck1hdGgoZG9tTm9kZSk7XG4gIH1cblxuICBvblJlc3BBcmVhQ2hhbmdlID0gKHJlc3BBcmVhTWFya3VwKSA9PiB7XG4gICAgdGhpcy5zZXRTdGF0ZSh7IHJlc3BBcmVhTWFya3VwIH0pO1xuICB9O1xuXG4gIG9uQWRkQ2hvaWNlID0gKCkgPT4ge1xuICAgIGlmICh0aGlzLmVkaXRvclJlZikge1xuICAgICAgdGhpcy5lZGl0b3JSZWYuZmluaXNoRWRpdGluZygpO1xuICAgIH1cbiAgfTtcblxuICBvbkRvbmUgPSAodmFsKSA9PiB7XG4gICAgY29uc3QgeyBub2RlLCBvbkFkZENob2ljZSB9ID0gdGhpcy5wcm9wcztcbiAgICBjb25zdCBvbmx5VGV4dCA9IGNyZWF0ZUVsZW1lbnRGcm9tSFRNTCh2YWwpLnRleHRDb250ZW50LnRyaW0oKTtcblxuICAgIGlmICghaXNFbXB0eShvbmx5VGV4dCkpIHtcbiAgICAgIG9uQWRkQ2hvaWNlKG5vZGUuZGF0YS5pbmRleCwgdmFsKTtcbiAgICB9XG4gIH07XG5cbiAgb25TZWxlY3RDaG9pY2UgPSAobmV3VmFsdWUsIGluZGV4KSA9PiB7XG4gICAgY29uc3QgeyBub2RlLCBub2RlUGF0aCwgZWRpdG9yLCBvblRvb2xiYXJEb25lLCBvblNlbGVjdENob2ljZSB9ID0gdGhpcy5wcm9wcztcbiAgICBjb25zdCB1cGRhdGUgPSB7IC4uLm5vZGUuZGF0YSwgdmFsdWU6IG5ld1ZhbHVlIH07XG5cbiAgICBlZGl0b3IuYXBwbHkoe1xuICAgICAgdHlwZTogJ3NldF9ub2RlJyxcbiAgICAgIHBhdGg6IG5vZGVQYXRoLFxuICAgICAgcHJvcGVydGllczoge1xuICAgICAgICBkYXRhOiBub2RlLmRhdGFcbiAgICAgIH0sXG4gICAgICBuZXdQcm9wZXJ0aWVzOiB7IGRhdGE6IHVwZGF0ZSB9XG4gICAgfSk7XG5cbiAgICBvblRvb2xiYXJEb25lKGZhbHNlKTtcbiAgICBvblNlbGVjdENob2ljZShpbmRleCk7XG4gIH07XG5cbiAgb25SZW1vdmVDaG9pY2UgPSAodmFsLCBpbmRleCkgPT4ge1xuICAgIGNvbnN0IHsgbm9kZSwgbm9kZVBhdGgsIGVkaXRvciwgb25Ub29sYmFyRG9uZSwgb25SZW1vdmVDaG9pY2UgfSA9IHRoaXMucHJvcHM7XG5cbiAgICBpZiAoaXNFcXVhbCh2YWwsIG5vZGUuZGF0YS52YWx1ZSkpIHtcbiAgICAgIGNvbnN0IHVwZGF0ZSA9IHsgLi4ubm9kZS5kYXRhLCB2YWx1ZTogbnVsbCB9O1xuXG4gICAgICBlZGl0b3IuYXBwbHkoe1xuICAgICAgICB0eXBlOiAnc2V0X25vZGUnLFxuICAgICAgICBwYXRoOiBub2RlUGF0aCxcbiAgICAgICAgcHJvcGVydGllczoge1xuICAgICAgICAgIGRhdGE6IG5vZGUuZGF0YVxuICAgICAgICB9LFxuICAgICAgICBuZXdQcm9wZXJ0aWVzOiB7IGRhdGE6IHVwZGF0ZSB9XG4gICAgICB9KTtcblxuICAgICAgb25Ub29sYmFyRG9uZShmYWxzZSk7XG4gICAgfVxuXG4gICAgb25SZW1vdmVDaG9pY2UoaW5kZXgpO1xuICB9O1xuXG4gIG9uS2V5RG93biA9IChldmVudCkgPT4ge1xuICAgIGlmIChldmVudC5rZXkgPT09ICdFbnRlcicpIHtcbiAgICAgIHRoaXMub25BZGRDaG9pY2UoKTtcbiAgICAgIC8vIENhbmNlbGxpbmcgZXZlbnRcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH07XG5cbiAgb25CbHVyID0gKCkgPT4ge1xuICAgIGlmICh0aGlzLmNsaWNrZWRJbnNpZGUpIHtcbiAgICAgIHRoaXMuY2xpY2tlZEluc2lkZSA9IGZhbHNlO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHsgbm9kZVBhdGgsIGNob2ljZXMsIG9uQ2hlY2ssIG9uVG9vbGJhckRvbmUsIGVkaXRvciB9ID0gdGhpcy5wcm9wcztcbiAgICBjb25zdCBjb3JyZWN0UmVzcG9uc2UgPSAoY2hvaWNlcyB8fCBbXSkuZmluZCgoY2hvaWNlKSA9PiBjaG9pY2UuY29ycmVjdCk7XG5cbiAgICB0aGlzLm9uQWRkQ2hvaWNlKCk7XG5cbiAgICBpZiAoIWNob2ljZXMgfHwgKGNob2ljZXMgJiYgY2hvaWNlcy5sZW5ndGggPCAyKSB8fCAhY29ycmVjdFJlc3BvbnNlKSB7XG4gICAgICBvbkNoZWNrKCgpID0+IHtcbiAgICAgICAgZWRpdG9yLmFwcGx5KHtcbiAgICAgICAgICB0eXBlOiAncmVtb3ZlX25vZGUnLFxuICAgICAgICAgIHBhdGg6IG5vZGVQYXRoXG4gICAgICAgIH0pO1xuXG4gICAgICAgIG9uVG9vbGJhckRvbmUoZmFsc2UpO1xuICAgICAgfSk7XG4gICAgfVxuICB9O1xuXG4gIG9uQ2xpY2tJbnNpZGUgPSAoKSA9PiB7XG4gICAgdGhpcy5jbGlja2VkSW5zaWRlID0gdHJ1ZTtcbiAgfTtcblxuICBmb2N1c0lucHV0ID0gKCkgPT4ge1xuICAgIC8vIHdlIG5lZWQgdG8gZm9jdXMgdGhlIGlucHV0IHNvIHRoYXQgbWF0aCBpcyBzYXZlZCBldmVuIHdpdGhvdXQgcHJlc3NpbmcgdGhlIGdyZWVuIGNoZWNrbWFya1xuICAgIGNvbnN0IHNsYXRlRWRpdG9yUmVmID0gdGhpcy5lZGl0b3JSZWYgJiYgdGhpcy5lZGl0b3JSZWYucm9vdFJlZiAmJiB0aGlzLmVkaXRvclJlZi5yb290UmVmLnNsYXRlRWRpdG9yO1xuICAgIGNvbnN0IGlucHV0UmVmID0gc2xhdGVFZGl0b3JSZWYgJiYgc2xhdGVFZGl0b3JSZWYuZWRpdG9yUmVmICYmIHNsYXRlRWRpdG9yUmVmLmVkaXRvclJlZi5lbGVtZW50O1xuXG4gICAgaWYgKGlucHV0UmVmKSB7XG4gICAgICBpbnB1dFJlZi5mb2N1cygpO1xuICAgIH1cbiAgfTtcblxuICByZW5kZXIoKSB7XG4gICAgY29uc3QgeyBjbGFzc2VzLCBjaG9pY2VzLCBzcGVsbENoZWNrLCB1cGxvYWRTb3VuZFN1cHBvcnQgfSA9IHRoaXMucHJvcHM7XG4gICAgY29uc3QgeyByZXNwQXJlYU1hcmt1cCwgdG9vbGJhclN0eWxlIH0gPSB0aGlzLnN0YXRlO1xuXG4gICAgY29uc3QgZmlsdGVyZWREZWZhdWx0UGx1Z2lucyA9IChERUZBVUxUX1BMVUdJTlMgfHwgW10pLmZpbHRlcihcbiAgICAgIChwKSA9PiBwICE9PSAndGFibGUnICYmIHAgIT09ICdidWxsZXRlZC1saXN0JyAmJiBwICE9PSAnbnVtYmVyZWQtbGlzdCcsXG4gICAgKTtcbiAgICBjb25zdCBsYWJlbFBsdWdpbnMgPSB7XG4gICAgICBhdWRpbzogeyBkaXNhYmxlZDogdHJ1ZSB9LFxuICAgICAgdmlkZW86IHsgZGlzYWJsZWQ6IHRydWUgfSxcbiAgICB9O1xuXG4gICAgaWYgKCF0b29sYmFyU3R5bGUpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHJldHVybiAoXG4gICAgICA8ZGl2XG4gICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgLi4udG9vbGJhclN0eWxlLFxuICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogJyNFMEUxRTYnLFxuICAgICAgICB9fVxuICAgICAgICBvbk1vdXNlRG93bj17dGhpcy5vbkNsaWNrSW5zaWRlfVxuICAgICAgPlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Y2xhc3Nlcy5pdGVtQnVpbGRlcn0+XG4gICAgICAgICAgPEVkaXRhYmxlSHRtbFxuICAgICAgICAgICAgcmVmPXsocmVmKSA9PiB7XG4gICAgICAgICAgICAgIGlmIChyZWYpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmVkaXRvclJlZiA9IHJlZjtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIGF1dG9Gb2N1cz17dHJ1ZX1cbiAgICAgICAgICAgIGF1dG9TYXZlXG4gICAgICAgICAgICBjbGFzc05hbWU9e2NsYXNzZXMucmVzcEFyZWF9XG4gICAgICAgICAgICB0b29sYmFyT3B0cz17e1xuICAgICAgICAgICAgICBwb3NpdGlvbjogJ3RvcCcsXG4gICAgICAgICAgICAgIGFsd2F5c1Zpc2libGU6IGZhbHNlLFxuICAgICAgICAgICAgICBzaG93RG9uZTogZmFsc2UsXG4gICAgICAgICAgICAgIGRvbmVPbjogJ2JsdXInLFxuICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIG1hcmt1cD17cmVzcEFyZWFNYXJrdXB9XG4gICAgICAgICAgICBvbktleURvd249e3RoaXMub25LZXlEb3dufVxuICAgICAgICAgICAgb25DaGFuZ2U9e3RoaXMub25SZXNwQXJlYUNoYW5nZX1cbiAgICAgICAgICAgIG9uRG9uZT17dGhpcy5vbkRvbmV9XG4gICAgICAgICAgICBwbGFjZWhvbGRlcj1cIkFkZCBDaG9pY2VcIlxuICAgICAgICAgICAgYWN0aXZlUGx1Z2lucz17ZmlsdGVyZWREZWZhdWx0UGx1Z2luc31cbiAgICAgICAgICAgIHBsdWdpblByb3BzPXtsYWJlbFBsdWdpbnN9XG4gICAgICAgICAgICBvbkJsdXI9e3RoaXMub25CbHVyfVxuICAgICAgICAgICAgc3BlbGxDaGVjaz17c3BlbGxDaGVja31cbiAgICAgICAgICAgIHVwbG9hZFNvdW5kU3VwcG9ydD17dXBsb2FkU291bmRTdXBwb3J0fVxuICAgICAgICAgIC8+XG4gICAgICAgICAgPGlcbiAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgIGN1cnNvcjogJ3BvaW50ZXInLFxuICAgICAgICAgICAgICBmb250U2l6ZTogJzIwcHgnLFxuICAgICAgICAgICAgICBmb250U3R5bGU6ICdub3JtYWwnLFxuICAgICAgICAgICAgICBwb3NpdGlvbjogJ2Fic29sdXRlJyxcbiAgICAgICAgICAgICAgdG9wOiAnNTAlJyxcbiAgICAgICAgICAgICAgcmlnaHQ6ICcxNXB4JyxcbiAgICAgICAgICAgICAgdHJhbnNmb3JtOiAndHJhbnNsYXRlKDAsIC01MCUpJyxcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgICBjb250ZW50RWRpdGFibGU9e2ZhbHNlfVxuICAgICAgICAgICAgb25Nb3VzZURvd249eygpID0+IHRoaXMuZm9jdXNJbnB1dCgpfVxuICAgICAgICAgICAgb25DbGljaz17KCkgPT4gdGhpcy5vbkFkZENob2ljZSgpfVxuICAgICAgICAgID5cbiAgICAgICAgICAgICtcbiAgICAgICAgICA8L2k+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICB7Y2hvaWNlcyAmJiAoXG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2NsYXNzZXMuY2hvaWNlc0hvbGRlcn0+XG4gICAgICAgICAgICB7Y2hvaWNlcy5tYXAoKHsgbGFiZWwsIGNvcnJlY3QgfSwgaW5kZXgpID0+IChcbiAgICAgICAgICAgICAgPE1lbnVJdGVtXG4gICAgICAgICAgICAgICAga2V5PXtpbmRleH1cbiAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB0aGlzLm9uU2VsZWN0Q2hvaWNlKGxhYmVsLCBpbmRleCl9XG4gICAgICAgICAgICAgICAgb25SZW1vdmVDaG9pY2U9eygpID0+IHRoaXMub25SZW1vdmVDaG9pY2UobGFiZWwsIGluZGV4KX1cbiAgICAgICAgICAgICAgICB2YWx1ZT17bGFiZWx9XG4gICAgICAgICAgICAgICAgY29ycmVjdD17Y29ycmVjdH1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICkpfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICApfVxuICAgICAgPC9kaXY+XG4gICAgKTtcbiAgfVxufVxuXG5jb25zdCBTdHlsZWRSZXNwQXJlYVRvb2xiYXIgPSB3aXRoU3R5bGVzKHtcbiAgcmVzcEFyZWE6IHtcbiAgICBiYWNrZ3JvdW5kQ29sb3I6ICcjZmZmJyxcbiAgICAnJiBbZGF0YS1zbGF0ZS1lZGl0b3I9XCJ0cnVlXCJdJzoge1xuICAgICAgbWluSGVpZ2h0OiAnaW5pdGlhbCAhaW1wb3J0YW50JyxcbiAgICB9LFxuICB9LFxuICBjaG9pY2VzSG9sZGVyOiB7XG4gICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgIGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLFxuICAgICcmID4gZGl2Omxhc3QtY2hpbGQnOiB7XG4gICAgICBib3JkZXI6ICdub25lJyxcbiAgICB9LFxuICB9LFxuICBpdGVtQnVpbGRlcjoge1xuICAgIHBhZGRpbmc6ICc4cHgnLFxuICAgIHBvc2l0aW9uOiAncmVsYXRpdmUnLFxuICB9LFxufSkoUmVzcEFyZWFUb29sYmFyKTtcblxuZXhwb3J0IGRlZmF1bHQgU3R5bGVkUmVzcEFyZWFUb29sYmFyO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7QUFBQSxJQUFBQSxNQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxTQUFBLEdBQUFGLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBRSxXQUFBLEdBQUFGLE9BQUE7QUFDQSxJQUFBRyxVQUFBLEdBQUFKLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBSSxhQUFBLEdBQUFDLHVCQUFBLENBQUFMLE9BQUE7QUFDQSxJQUFBTSxjQUFBLEdBQUFOLE9BQUE7QUFDQSxJQUFBTyxPQUFBLEdBQUFQLE9BQUE7QUFDQSxJQUFBUSxRQUFBLEdBQUFULHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBUyxR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