highmark-cli 0.0.138 → 0.0.139

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (86) hide show
  1. package/bin/action/publish.js +2 -0
  2. package/bin/constants.js +3 -1
  3. package/bin/handler/liveReload.js +18 -0
  4. package/bin/operation/copyCheckmark.js +32 -0
  5. package/bin/operation/copyClient.js +5 -5
  6. package/bin/operation/markdownStylesCSS.js +2 -2
  7. package/bin/operation/server.js +7 -10
  8. package/bin/router/static.js +17 -0
  9. package/checkmark.svg +12 -0
  10. package/client.js +6216 -1574
  11. package/css/loading.css +32 -32
  12. package/lib/client.js +21 -6
  13. package/lib/constants.js +29 -9
  14. package/lib/createMethods.js +64 -0
  15. package/lib/customEventTypes.js +9 -1
  16. package/lib/eventTypes.js +5 -1
  17. package/lib/localStorage.js +56 -0
  18. package/lib/mixins/fullsrean.js +63 -0
  19. package/lib/mixins/touch.js +101 -32
  20. package/lib/selectors.js +9 -9
  21. package/lib/state.js +133 -0
  22. package/lib/styles.js +78 -0
  23. package/lib/utilities/fullScreen.js +16 -0
  24. package/lib/utilities/orientation.js +39 -0
  25. package/lib/view/button/closeMenu.js +121 -0
  26. package/lib/view/button/fullScreen.js +121 -0
  27. package/lib/view/button/zoomMenuIn.js +121 -0
  28. package/lib/view/button/zoomMenuOut.js +121 -0
  29. package/lib/view/button.js +160 -0
  30. package/lib/view/checkbox.js +193 -0
  31. package/lib/view/div/buttons.js +215 -0
  32. package/lib/view/div/checkbox/invertColours.js +151 -0
  33. package/lib/view/div/checkbox/restoreNativeGestures.js +147 -0
  34. package/lib/view/div/checkbox.js +220 -0
  35. package/lib/view/div/checkboxes.js +211 -0
  36. package/lib/view/div/leaf.js +12 -20
  37. package/lib/view/div/menu.js +122 -28
  38. package/lib/view/div/overlay.js +650 -0
  39. package/lib/view/div/preloader.js +204 -0
  40. package/lib/view/element.js +164 -0
  41. package/lib/view/span.js +182 -0
  42. package/lib/view/svg/closeMenu.js +138 -0
  43. package/lib/view/svg/fullScreen.js +138 -0
  44. package/lib/view/svg/zoomMenuIn.js +146 -0
  45. package/lib/view/svg/zoomMenuOut.js +141 -0
  46. package/lib/view/svg.js +184 -0
  47. package/lib/view.js +23 -396
  48. package/package.json +3 -2
  49. package/src/client.js +32 -8
  50. package/src/constants.js +7 -2
  51. package/src/createMethods.js +66 -0
  52. package/src/customEventTypes.js +2 -0
  53. package/src/eventTypes.js +1 -0
  54. package/src/localStorage.js +48 -0
  55. package/src/mixins/fullsrean.js +75 -0
  56. package/src/mixins/touch.js +98 -39
  57. package/src/selectors.js +2 -2
  58. package/src/state.js +130 -0
  59. package/src/styles.js +18 -0
  60. package/src/utilities/fullScreen.js +8 -0
  61. package/src/utilities/orientation.js +34 -0
  62. package/src/view/button/closeMenu.js +16 -0
  63. package/src/view/button/fullScreen.js +16 -0
  64. package/src/view/button/zoomMenuIn.js +16 -0
  65. package/src/view/button/zoomMenuOut.js +16 -0
  66. package/src/view/button.js +38 -0
  67. package/src/view/checkbox.js +68 -0
  68. package/src/view/div/buttons.js +39 -0
  69. package/src/view/div/checkbox/invertColours.js +33 -0
  70. package/src/view/div/checkbox/restoreNativeGestures.js +29 -0
  71. package/src/view/div/checkbox.js +45 -0
  72. package/src/view/div/checkboxes.js +36 -0
  73. package/src/view/div/leaf.js +10 -15
  74. package/src/view/div/menu.js +83 -26
  75. package/src/view/div/overlay.js +578 -0
  76. package/src/view/div/preloader.js +25 -0
  77. package/src/view/element.js +16 -0
  78. package/src/view/span.js +22 -0
  79. package/src/view/svg/closeMenu.js +19 -0
  80. package/src/view/svg/fullScreen.js +19 -0
  81. package/src/view/svg/zoomMenuIn.js +20 -0
  82. package/src/view/svg/zoomMenuOut.js +19 -0
  83. package/src/view/svg.js +24 -0
  84. package/src/view.js +20 -482
  85. package/lib/style.js +0 -13
  86. package/src/style.js +0 -3
@@ -9,9 +9,12 @@ Object.defineProperty(exports, "default", {
9
9
  }
10
10
  });
11
11
  var _easywithstyle = /*#__PURE__*/ _interop_require_default(require("easy-with-style"));
12
- var _easy = require("easy");
13
- var _touch = /*#__PURE__*/ _interop_require_default(require("../../mixins/touch"));
14
- var _style = require("../../style");
12
+ var _element = /*#__PURE__*/ _interop_require_default(require("../element"));
13
+ var _buttons = /*#__PURE__*/ _interop_require_default(require("../div/buttons"));
14
+ var _checkboxes = /*#__PURE__*/ _interop_require_default(require("../div/checkboxes"));
15
+ var _constants = require("../../constants");
16
+ var _styles = require("../../styles");
17
+ var _state = require("../../state");
15
18
  function _assert_this_initialized(self) {
16
19
  if (self === void 0) {
17
20
  throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
@@ -94,6 +97,45 @@ function _interop_require_default(obj) {
94
97
  function _is_native_function(fn) {
95
98
  return Function.toString.call(fn).indexOf("[native code]") !== -1;
96
99
  }
100
+ function _object_spread(target) {
101
+ for(var i = 1; i < arguments.length; i++){
102
+ var source = arguments[i] != null ? arguments[i] : {};
103
+ var ownKeys = Object.keys(source);
104
+ if (typeof Object.getOwnPropertySymbols === "function") {
105
+ ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {
106
+ return Object.getOwnPropertyDescriptor(source, sym).enumerable;
107
+ }));
108
+ }
109
+ ownKeys.forEach(function(key) {
110
+ _define_property(target, key, source[key]);
111
+ });
112
+ }
113
+ return target;
114
+ }
115
+ function ownKeys(object, enumerableOnly) {
116
+ var keys = Object.keys(object);
117
+ if (Object.getOwnPropertySymbols) {
118
+ var symbols = Object.getOwnPropertySymbols(object);
119
+ if (enumerableOnly) {
120
+ symbols = symbols.filter(function(sym) {
121
+ return Object.getOwnPropertyDescriptor(object, sym).enumerable;
122
+ });
123
+ }
124
+ keys.push.apply(keys, symbols);
125
+ }
126
+ return keys;
127
+ }
128
+ function _object_spread_props(target, source) {
129
+ source = source != null ? source : {};
130
+ if (Object.getOwnPropertyDescriptors) {
131
+ Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
132
+ } else {
133
+ ownKeys(Object(source)).forEach(function(key) {
134
+ Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
135
+ });
136
+ }
137
+ return target;
138
+ }
97
139
  function _possible_constructor_return(self, call) {
98
140
  if (call && (_type_of(call) === "object" || typeof call === "function")) {
99
141
  return call;
@@ -173,8 +215,10 @@ function _create_super(Derived) {
173
215
  }
174
216
  function _templateObject() {
175
217
  var data = _tagged_template_literal([
176
- "\n\n left: 0;\n width: 100%;\n height: ",
177
- ";\n bottom: 0;\n position: fixed;\n background-color: black;\n \n"
218
+ "\n\n left: 0;\n bottom: 0;\n display: grid;\n padding: ",
219
+ ";\n position: fixed;\n border-top: 1px solid ",
220
+ ";\n background-color: ",
221
+ ";\n transform-origin: bottom left;\n grid-template-rows: auto;\n grid-template-columns: auto min-content;\n \n"
178
222
  ]);
179
223
  _templateObject = function _templateObject() {
180
224
  return data;
@@ -186,53 +230,103 @@ var MenuDiv = /*#__PURE__*/ function(Element) {
186
230
  var _super = _create_super(MenuDiv);
187
231
  function MenuDiv() {
188
232
  _class_call_check(this, MenuDiv);
189
- var _this;
190
- _this = _super.apply(this, arguments);
191
- _define_property(_assert_this_initialized(_this), "customTapHandler", function(event, element) {
192
- alert("MENU DIV TAP!");
193
- });
194
- return _this;
233
+ return _super.apply(this, arguments);
195
234
  }
196
235
  _create_class(MenuDiv, [
236
+ {
237
+ key: "zoomMenuOut",
238
+ value: function zoomMenuOut() {
239
+ var zoom = (0, _state.getMenuDivZoom)();
240
+ zoom /= _constants.ZOOM_RATIO;
241
+ (0, _state.setMenuDivZoom)(zoom);
242
+ this.updateZoom();
243
+ }
244
+ },
245
+ {
246
+ key: "zoomMenuIn",
247
+ value: function zoomMenuIn() {
248
+ var zoom = (0, _state.getMenuDivZoom)();
249
+ zoom *= _constants.ZOOM_RATIO;
250
+ (0, _state.setMenuDivZoom)(zoom);
251
+ this.updateZoom();
252
+ }
253
+ },
254
+ {
255
+ key: "updateZoom",
256
+ value: function updateZoom() {
257
+ var zoom = (0, _state.getMenuDivZoom)(), width = "".concat(100 / zoom, "%"), transform = "scale(".concat(zoom, ")"), css = {
258
+ width: width,
259
+ transform: transform
260
+ };
261
+ this.css(css);
262
+ }
263
+ },
264
+ {
265
+ key: "show",
266
+ value: function show() {
267
+ var display = _constants.GRID;
268
+ this.display(display);
269
+ }
270
+ },
271
+ {
272
+ key: "openMenu",
273
+ value: function openMenu() {
274
+ this.show();
275
+ }
276
+ },
277
+ {
278
+ key: "closeMenu",
279
+ value: function closeMenu() {
280
+ this.hide();
281
+ }
282
+ },
197
283
  {
198
284
  key: "didMount",
199
285
  value: function didMount() {
200
- this.enableTouch();
201
- this.onCustomTap(this.customTapHandler);
286
+ this.updateZoom();
202
287
  }
203
288
  },
204
289
  {
205
290
  key: "willUnmount",
206
291
  value: function willUnmount() {
207
- this.disableTouch();
208
- this.offCustomTap(this.customTapHandler);
292
+ ///
209
293
  }
210
294
  },
211
295
  {
212
- key: "initialise",
213
- value: function initialise() {
214
- this.hide();
296
+ key: "childElements",
297
+ value: function childElements() {
298
+ return [
299
+ /*#__PURE__*/ React.createElement(_checkboxes.default, null),
300
+ /*#__PURE__*/ React.createElement(_buttons.default, null)
301
+ ];
215
302
  }
216
303
  },
217
304
  {
218
305
  key: "parentContext",
219
306
  value: function parentContext() {
220
- var showMenuDiv = this.show.bind(this), hideMenuDiv = this.hide.bind(this), isMenuDivDisplayed = this.isDisplayed.bind(this); ///
221
- return {
222
- showMenuDiv: showMenuDiv,
223
- hideMenuDiv: hideMenuDiv,
224
- isMenuDivDisplayed: isMenuDivDisplayed
225
- };
307
+ var context = this.getContext(), openMenu = this.openMenu.bind(this), closeMenu = this.closeMenu.bind(this), zoomMenuIn = this.zoomMenuIn.bind(this), zoomMenuOut = this.zoomMenuOut.bind(this), updateMenuDivZoom = this.updateZoom.bind(this); ///
308
+ return _object_spread_props(_object_spread({}, context), {
309
+ openMenu: openMenu,
310
+ closeMenu: closeMenu,
311
+ zoomMenuIn: zoomMenuIn,
312
+ zoomMenuOut: zoomMenuOut,
313
+ updateMenuDivZoom: updateMenuDivZoom
314
+ });
315
+ }
316
+ },
317
+ {
318
+ key: "initialise",
319
+ value: function initialise() {
320
+ this.hide();
226
321
  }
227
322
  }
228
323
  ]);
229
324
  return MenuDiv;
230
- }(_wrap_native_super(_easy.Element));
325
+ }(_wrap_native_super(_element.default));
231
326
  _define_property(MenuDiv, "tagName", "div");
232
327
  _define_property(MenuDiv, "defaultProperties", {
233
328
  className: "menu"
234
329
  });
235
- Object.assign(MenuDiv.prototype, _touch.default);
236
- var _default = (0, _easywithstyle.default)(MenuDiv)(_templateObject(), _style.menuDivHeight);
330
+ var _default = (0, _easywithstyle.default)(MenuDiv)(_templateObject(), _styles.menuDivPadding, _styles.borderColour, _styles.backgroundColour);
237
331
 
238
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy92aWV3L2Rpdi9tZW51LmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgd2l0aFN0eWxlIGZyb20gXCJlYXN5LXdpdGgtc3R5bGVcIjtcblxuaW1wb3J0IHsgRWxlbWVudCB9IGZyb20gXCJlYXN5XCI7XG5cbmltcG9ydCB0b3VjaE1peGlucyBmcm9tIFwiLi4vLi4vbWl4aW5zL3RvdWNoXCI7XG5cbmltcG9ydCB7IG1lbnVEaXZIZWlnaHQgfSBmcm9tIFwiLi4vLi4vc3R5bGVcIjtcblxuY2xhc3MgTWVudURpdiBleHRlbmRzIEVsZW1lbnQge1xuICBjdXN0b21UYXBIYW5kbGVyID0gKGV2ZW50LCBlbGVtZW50KSA9PiB7XG4gICAgYWxlcnQoXCJNRU5VIERJViBUQVAhXCIpXG4gIH1cblxuICBkaWRNb3VudCgpIHtcbiAgICB0aGlzLmVuYWJsZVRvdWNoKCk7XG5cbiAgICB0aGlzLm9uQ3VzdG9tVGFwKHRoaXMuY3VzdG9tVGFwSGFuZGxlcik7XG4gIH1cblxuICB3aWxsVW5tb3VudCgpIHtcbiAgICB0aGlzLmRpc2FibGVUb3VjaCgpO1xuXG4gICAgdGhpcy5vZmZDdXN0b21UYXAodGhpcy5jdXN0b21UYXBIYW5kbGVyKTtcbiAgfVxuXG4gIGluaXRpYWxpc2UoKSB7XG4gICAgdGhpcy5oaWRlKCk7XG4gIH1cblxuICBwYXJlbnRDb250ZXh0KCkge1xuICAgIGNvbnN0IHNob3dNZW51RGl2ID0gdGhpcy5zaG93LmJpbmQodGhpcyksICAvLy9cbiAgICAgICAgICBoaWRlTWVudURpdiA9IHRoaXMuaGlkZS5iaW5kKHRoaXMpLCAgLy8vXG4gICAgICAgICAgaXNNZW51RGl2RGlzcGxheWVkID0gdGhpcy5pc0Rpc3BsYXllZC5iaW5kKHRoaXMpOyAgLy8vXG5cbiAgICByZXR1cm4gKHtcbiAgICAgIHNob3dNZW51RGl2LFxuICAgICAgaGlkZU1lbnVEaXYsXG4gICAgICBpc01lbnVEaXZEaXNwbGF5ZWRcbiAgICB9KTtcbiAgfVxuXG4gIHN0YXRpYyB0YWdOYW1lID0gXCJkaXZcIjtcblxuICBzdGF0aWMgZGVmYXVsdFByb3BlcnRpZXMgPSB7XG4gICAgY2xhc3NOYW1lOiBcIm1lbnVcIlxuICB9O1xufVxuXG5PYmplY3QuYXNzaWduKE1lbnVEaXYucHJvdG90eXBlLCB0b3VjaE1peGlucyk7XG5cbmV4cG9ydCBkZWZhdWx0IHdpdGhTdHlsZShNZW51RGl2KWBcblxuICBsZWZ0OiAwO1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiAke21lbnVEaXZIZWlnaHR9O1xuICBib3R0b206IDA7XG4gIHBvc2l0aW9uOiBmaXhlZDtcbiAgYmFja2dyb3VuZC1jb2xvcjogYmxhY2s7XG4gIFxuYDtcbiJdLCJuYW1lcyI6WyJNZW51RGl2IiwiY3VzdG9tVGFwSGFuZGxlciIsImV2ZW50IiwiZWxlbWVudCIsImFsZXJ0IiwiZGlkTW91bnQiLCJlbmFibGVUb3VjaCIsIm9uQ3VzdG9tVGFwIiwid2lsbFVubW91bnQiLCJkaXNhYmxlVG91Y2giLCJvZmZDdXN0b21UYXAiLCJpbml0aWFsaXNlIiwiaGlkZSIsInBhcmVudENvbnRleHQiLCJzaG93TWVudURpdiIsInNob3ciLCJiaW5kIiwiaGlkZU1lbnVEaXYiLCJpc01lbnVEaXZEaXNwbGF5ZWQiLCJpc0Rpc3BsYXllZCIsIkVsZW1lbnQiLCJ0YWdOYW1lIiwiZGVmYXVsdFByb3BlcnRpZXMiLCJjbGFzc05hbWUiLCJPYmplY3QiLCJhc3NpZ24iLCJwcm90b3R5cGUiLCJ0b3VjaE1peGlucyIsIndpdGhTdHlsZSIsIm1lbnVEaXZIZWlnaHQiXSwicmFuZ2VNYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzsiLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBb0RBOzs7ZUFBQTs7O29FQWxEc0I7b0JBRUU7NERBRUE7cUJBRU07Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRTlCLElBQUEsQUFBTUEsd0JBQUQsQUFBTDtjQUFNQTsrQkFBQUE7YUFBQUE7Z0NBQUFBOzs7UUFDSkMsa0RBQUFBLG9CQUFtQixTQUFDQyxPQUFPQztZQUN6QkMsTUFBTTtRQUNSOzs7a0JBSElKOztZQUtKSyxLQUFBQTttQkFBQUEsU0FBQUE7Z0JBQ0UsSUFBSSxDQUFDQyxXQUFXO2dCQUVoQixJQUFJLENBQUNDLFdBQVcsQ0FBQyxJQUFJLENBQUNOLGdCQUFnQjtZQUN4Qzs7O1lBRUFPLEtBQUFBO21CQUFBQSxTQUFBQTtnQkFDRSxJQUFJLENBQUNDLFlBQVk7Z0JBRWpCLElBQUksQ0FBQ0MsWUFBWSxDQUFDLElBQUksQ0FBQ1QsZ0JBQWdCO1lBQ3pDOzs7WUFFQVUsS0FBQUE7bUJBQUFBLFNBQUFBO2dCQUNFLElBQUksQ0FBQ0MsSUFBSTtZQUNYOzs7WUFFQUMsS0FBQUE7bUJBQUFBLFNBQUFBO2dCQUNFLElBQU1DLGNBQWMsSUFBSSxDQUFDQyxJQUFJLENBQUNDLElBQUksQ0FBQyxJQUFJLEdBQ2pDQyxjQUFjLElBQUksQ0FBQ0wsSUFBSSxDQUFDSSxJQUFJLENBQUMsSUFBSSxHQUNqQ0UscUJBQXFCLElBQUksQ0FBQ0MsV0FBVyxDQUFDSCxJQUFJLENBQUMsSUFBSSxHQUFJLEdBQUc7Z0JBRTVELE9BQVE7b0JBQ05GLGFBQUFBO29CQUNBRyxhQUFBQTtvQkFDQUMsb0JBQUFBO2dCQUNGO1lBQ0Y7OztXQS9CSWxCO3FCQUFnQm9CLGFBQU87QUFpQzNCLGlCQWpDSXBCLFNBaUNHcUIsV0FBVTtBQUVqQixpQkFuQ0lyQixTQW1DR3NCLHFCQUFvQjtJQUN6QkMsV0FBVztBQUNiO0FBR0ZDLE9BQU9DLE1BQU0sQ0FBQ3pCLFFBQVEwQixTQUFTLEVBQUVDLGNBQVc7SUFFNUMsV0FBZUMsSUFBQUEsc0JBQVMsRUFBQzVCLDRCQUliNkIsb0JBQWEifQ==
332
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy92aWV3L2Rpdi9tZW51LmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgd2l0aFN0eWxlIGZyb20gXCJlYXN5LXdpdGgtc3R5bGVcIjsgIC8vL1xuXG5pbXBvcnQgRWxlbWVudCBmcm9tIFwiLi4vZWxlbWVudFwiO1xuaW1wb3J0IEJ1dHRvbnNEaXYgZnJvbSBcIi4uL2Rpdi9idXR0b25zXCI7XG5pbXBvcnQgQ2hlY2tib3hlc0RpdiBmcm9tIFwiLi4vZGl2L2NoZWNrYm94ZXNcIjtcblxuaW1wb3J0IHsgR1JJRCwgWk9PTV9SQVRJTyB9IGZyb20gXCIuLi8uLi9jb25zdGFudHNcIjtcbmltcG9ydCB7IGJvcmRlckNvbG91ciwgbWVudURpdlBhZGRpbmcsIGJhY2tncm91bmRDb2xvdXIgfSBmcm9tIFwiLi4vLi4vc3R5bGVzXCI7XG5pbXBvcnQgeyBnZXRNZW51RGl2Wm9vbSBhcyBnZXRab29tLCBzZXRNZW51RGl2Wm9vbSBhcyBzZXRab29tIH0gZnJvbSBcIi4uLy4uL3N0YXRlXCI7XG5cbmNsYXNzIE1lbnVEaXYgZXh0ZW5kcyBFbGVtZW50IHtcbiAgem9vbU1lbnVPdXQoKSB7XG4gICAgbGV0IHpvb20gPSBnZXRab29tKCk7XG5cbiAgICB6b29tIC89IFpPT01fUkFUSU87XG5cbiAgICBzZXRab29tKHpvb20pO1xuXG4gICAgdGhpcy51cGRhdGVab29tKCk7XG4gIH1cblxuICB6b29tTWVudUluKCkge1xuICAgIGxldCB6b29tID0gZ2V0Wm9vbSgpO1xuXG4gICAgem9vbSAqPSBaT09NX1JBVElPO1xuXG4gICAgc2V0Wm9vbSh6b29tKTtcblxuICAgIHRoaXMudXBkYXRlWm9vbSgpO1xuICB9XG5cbiAgdXBkYXRlWm9vbSgpIHtcbiAgICBjb25zdCB6b29tID0gZ2V0Wm9vbSgpLFxuICAgICAgICAgIHdpZHRoID0gYCR7MTAwL3pvb219JWAsXG4gICAgICAgICAgdHJhbnNmb3JtID0gYHNjYWxlKCR7em9vbX0pYCxcbiAgICAgICAgICBjc3MgPSB7XG4gICAgICAgICAgICB3aWR0aCxcbiAgICAgICAgICAgIHRyYW5zZm9ybVxuICAgICAgICAgIH07XG5cbiAgICB0aGlzLmNzcyhjc3MpO1xuICB9XG5cbiAgc2hvdygpIHtcbiAgICBjb25zdCBkaXNwbGF5ID0gR1JJRDtcblxuICAgIHRoaXMuZGlzcGxheShkaXNwbGF5KTtcbiAgfVxuXG4gIG9wZW5NZW51KCkge1xuICAgIHRoaXMuc2hvdygpO1xuICB9XG5cbiAgY2xvc2VNZW51KCkge1xuICAgIHRoaXMuaGlkZSgpO1xuICB9XG5cbiAgZGlkTW91bnQoKSB7XG4gICAgdGhpcy51cGRhdGVab29tKCk7XG4gIH1cblxuICB3aWxsVW5tb3VudCgpIHtcbiAgICAvLy9cbiAgfVxuXG4gIGNoaWxkRWxlbWVudHMoKSB7XG4gICAgcmV0dXJuIChbXG5cbiAgICAgIDxDaGVja2JveGVzRGl2Lz4sXG4gICAgICA8QnV0dG9uc0Rpdi8+XG5cbiAgICBdKTtcbiAgfVxuXG4gIHBhcmVudENvbnRleHQoKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpLFxuICAgICAgICAgIG9wZW5NZW51ID0gdGhpcy5vcGVuTWVudS5iaW5kKHRoaXMpLFxuICAgICAgICAgIGNsb3NlTWVudSA9IHRoaXMuY2xvc2VNZW51LmJpbmQodGhpcyksXG4gICAgICAgICAgem9vbU1lbnVJbiA9IHRoaXMuem9vbU1lbnVJbi5iaW5kKHRoaXMpLFxuICAgICAgICAgIHpvb21NZW51T3V0ID0gdGhpcy56b29tTWVudU91dC5iaW5kKHRoaXMpLFxuICAgICAgICAgIHVwZGF0ZU1lbnVEaXZab29tID0gdGhpcy51cGRhdGVab29tLmJpbmQodGhpcyk7IC8vL1xuXG4gICAgcmV0dXJuICh7XG4gICAgICAuLi5jb250ZXh0LFxuICAgICAgb3Blbk1lbnUsXG4gICAgICBjbG9zZU1lbnUsXG4gICAgICB6b29tTWVudUluLFxuICAgICAgem9vbU1lbnVPdXQsXG4gICAgICB1cGRhdGVNZW51RGl2Wm9vbVxuICAgIH0pO1xuICB9XG5cbiAgaW5pdGlhbGlzZSgpIHtcbiAgICB0aGlzLmhpZGUoKTtcbiAgfVxuXG4gIHN0YXRpYyB0YWdOYW1lID0gXCJkaXZcIjtcblxuICBzdGF0aWMgZGVmYXVsdFByb3BlcnRpZXMgPSB7XG4gICAgY2xhc3NOYW1lOiBcIm1lbnVcIlxuICB9O1xufVxuXG5leHBvcnQgZGVmYXVsdCB3aXRoU3R5bGUoTWVudURpdilgXG5cbiAgbGVmdDogMDtcbiAgYm90dG9tOiAwO1xuICBkaXNwbGF5OiBncmlkO1xuICBwYWRkaW5nOiAke21lbnVEaXZQYWRkaW5nfTtcbiAgcG9zaXRpb246IGZpeGVkO1xuICBib3JkZXItdG9wOiAxcHggc29saWQgJHtib3JkZXJDb2xvdXJ9O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAke2JhY2tncm91bmRDb2xvdXJ9O1xuICB0cmFuc2Zvcm0tb3JpZ2luOiBib3R0b20gbGVmdDtcbiAgZ3JpZC10ZW1wbGF0ZS1yb3dzOiBhdXRvO1xuICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IGF1dG8gbWluLWNvbnRlbnQ7XG4gICAgXG5gO1xuIl0sIm5hbWVzIjpbIk1lbnVEaXYiLCJ6b29tTWVudU91dCIsInpvb20iLCJnZXRab29tIiwiWk9PTV9SQVRJTyIsInNldFpvb20iLCJ1cGRhdGVab29tIiwiem9vbU1lbnVJbiIsIndpZHRoIiwidHJhbnNmb3JtIiwiY3NzIiwic2hvdyIsImRpc3BsYXkiLCJHUklEIiwib3Blbk1lbnUiLCJjbG9zZU1lbnUiLCJoaWRlIiwiZGlkTW91bnQiLCJ3aWxsVW5tb3VudCIsImNoaWxkRWxlbWVudHMiLCJDaGVja2JveGVzRGl2IiwiQnV0dG9uc0RpdiIsInBhcmVudENvbnRleHQiLCJjb250ZXh0IiwiZ2V0Q29udGV4dCIsImJpbmQiLCJ1cGRhdGVNZW51RGl2Wm9vbSIsImluaXRpYWxpc2UiLCJFbGVtZW50IiwidGFnTmFtZSIsImRlZmF1bHRQcm9wZXJ0aWVzIiwiY2xhc3NOYW1lIiwid2l0aFN0eWxlIiwibWVudURpdlBhZGRpbmciLCJib3JkZXJDb2xvdXIiLCJiYWNrZ3JvdW5kQ29sb3VyIl0sInJhbmdlTWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OyIsIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkF5R0E7OztlQUFBOzs7b0VBdkdzQjs4REFFRjs4REFDRztpRUFDRzt5QkFFTztzQkFDOEI7cUJBQ007Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFckUsSUFBQSxBQUFNQSx3QkFBRCxBQUFMO2NBQU1BOytCQUFBQTthQUFBQTtnQ0FBQUE7OztrQkFBQUE7O1lBQ0pDLEtBQUFBO21CQUFBQSxTQUFBQTtnQkFDRSxJQUFJQyxPQUFPQyxJQUFBQSxxQkFBTztnQkFFbEJELFFBQVFFLHFCQUFVO2dCQUVsQkMsSUFBQUEscUJBQU8sRUFBQ0g7Z0JBRVIsSUFBSSxDQUFDSSxVQUFVO1lBQ2pCOzs7WUFFQUMsS0FBQUE7bUJBQUFBLFNBQUFBO2dCQUNFLElBQUlMLE9BQU9DLElBQUFBLHFCQUFPO2dCQUVsQkQsUUFBUUUscUJBQVU7Z0JBRWxCQyxJQUFBQSxxQkFBTyxFQUFDSDtnQkFFUixJQUFJLENBQUNJLFVBQVU7WUFDakI7OztZQUVBQSxLQUFBQTttQkFBQUEsU0FBQUE7Z0JBQ0UsSUFBTUosT0FBT0MsSUFBQUEscUJBQU8sS0FDZEssUUFBUSxBQUFDLEdBQVcsT0FBVCxNQUFJTixNQUFLLE1BQ3BCTyxZQUFZLEFBQUMsU0FBYSxPQUFMUCxNQUFLLE1BQzFCUSxNQUFNO29CQUNKRixPQUFBQTtvQkFDQUMsV0FBQUE7Z0JBQ0Y7Z0JBRU4sSUFBSSxDQUFDQyxHQUFHLENBQUNBO1lBQ1g7OztZQUVBQyxLQUFBQTttQkFBQUEsU0FBQUE7Z0JBQ0UsSUFBTUMsVUFBVUMsZUFBSTtnQkFFcEIsSUFBSSxDQUFDRCxPQUFPLENBQUNBO1lBQ2Y7OztZQUVBRSxLQUFBQTttQkFBQUEsU0FBQUE7Z0JBQ0UsSUFBSSxDQUFDSCxJQUFJO1lBQ1g7OztZQUVBSSxLQUFBQTttQkFBQUEsU0FBQUE7Z0JBQ0UsSUFBSSxDQUFDQyxJQUFJO1lBQ1g7OztZQUVBQyxLQUFBQTttQkFBQUEsU0FBQUE7Z0JBQ0UsSUFBSSxDQUFDWCxVQUFVO1lBQ2pCOzs7WUFFQVksS0FBQUE7bUJBQUFBLFNBQUFBO1lBQ0UsR0FBRztZQUNMOzs7WUFFQUMsS0FBQUE7bUJBQUFBLFNBQUFBO2dCQUNFLE9BQVE7a0NBRU4sb0JBQUNDLG1CQUFhO2tDQUNkLG9CQUFDQyxnQkFBVTtpQkFFWjtZQUNIOzs7WUFFQUMsS0FBQUE7bUJBQUFBLFNBQUFBO2dCQUNFLElBQU1DLFVBQVUsSUFBSSxDQUFDQyxVQUFVLElBQ3pCVixXQUFXLElBQUksQ0FBQ0EsUUFBUSxDQUFDVyxJQUFJLENBQUMsSUFBSSxHQUNsQ1YsWUFBWSxJQUFJLENBQUNBLFNBQVMsQ0FBQ1UsSUFBSSxDQUFDLElBQUksR0FDcENsQixhQUFhLElBQUksQ0FBQ0EsVUFBVSxDQUFDa0IsSUFBSSxDQUFDLElBQUksR0FDdEN4QixjQUFjLElBQUksQ0FBQ0EsV0FBVyxDQUFDd0IsSUFBSSxDQUFDLElBQUksR0FDeENDLG9CQUFvQixJQUFJLENBQUNwQixVQUFVLENBQUNtQixJQUFJLENBQUMsSUFBSSxHQUFHLEdBQUc7Z0JBRXpELE9BQVEsd0NBQ0hGO29CQUNIVCxVQUFBQTtvQkFDQUMsV0FBQUE7b0JBQ0FSLFlBQUFBO29CQUNBTixhQUFBQTtvQkFDQXlCLG1CQUFBQTs7WUFFSjs7O1lBRUFDLEtBQUFBO21CQUFBQSxTQUFBQTtnQkFDRSxJQUFJLENBQUNYLElBQUk7WUFDWDs7O1dBcEZJaEI7cUJBQWdCNEIsZ0JBQU87QUFzRjNCLGlCQXRGSTVCLFNBc0ZHNkIsV0FBVTtBQUVqQixpQkF4Rkk3QixTQXdGRzhCLHFCQUFvQjtJQUN6QkMsV0FBVztBQUNiO0lBR0YsV0FBZUMsSUFBQUEsc0JBQVMsRUFBQ2hDLDRCQUtaaUMsc0JBQWMsRUFFREMsb0JBQVksRUFDaEJDLHdCQUFnQiJ9