highmark-cli 0.0.166 → 0.0.168

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.
@@ -31,7 +31,7 @@ function _define_property(obj, key, value) {
31
31
  return obj;
32
32
  }
33
33
  var _obj, _obj1, _obj2;
34
- var menuZoom = (_obj = {}, _define_property(_obj, _constants.PORTRAIT_ORIENTATION, 1), _define_property(_obj, _constants.LANDSCAPE_ORIENTATION, 1), _obj), overlayZoom = (_obj1 = {}, _define_property(_obj1, _constants.PORTRAIT_ORIENTATION, 1), _define_property(_obj1, _constants.LANDSCAPE_ORIENTATION, 1), _obj1), fullScreenOverlayZoom = (_obj2 = {}, _define_property(_obj2, _constants.PORTRAIT_ORIENTATION, 1), _define_property(_obj2, _constants.LANDSCAPE_ORIENTATION, 1), _obj2), coloursInverted = false, nativeGesturesRestored = false, defaultPersistentState = {
34
+ var menuZoom = (_obj = {}, _define_property(_obj, _constants.PORTRAIT_ORIENTATION, 1), _define_property(_obj, _constants.LANDSCAPE_ORIENTATION, 0.5), _obj), overlayZoom = (_obj1 = {}, _define_property(_obj1, _constants.PORTRAIT_ORIENTATION, 1), _define_property(_obj1, _constants.LANDSCAPE_ORIENTATION, 1), _obj1), fullScreenOverlayZoom = (_obj2 = {}, _define_property(_obj2, _constants.PORTRAIT_ORIENTATION, 1), _define_property(_obj2, _constants.LANDSCAPE_ORIENTATION, 1), _obj2), coloursInverted = false, nativeGesturesRestored = false, defaultPersistentState = {
35
35
  menuZoom: menuZoom,
36
36
  overlayZoom: overlayZoom,
37
37
  fullScreenOverlayZoom: fullScreenOverlayZoom,
@@ -54,4 +54,4 @@ function setPersistentState(persistentState) {
54
54
  localStorage.setItem(key, value);
55
55
  }
56
56
 
57
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9sb2NhbFN0b3JhZ2UuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IFNUQVRFX0tFWSwgTEFORFNDQVBFX09SSUVOVEFUSU9OLCBQT1JUUkFJVF9PUklFTlRBVElPTiB9IGZyb20gXCIuL2NvbnN0YW50c1wiO1xuXG5jb25zdCBtZW51Wm9vbSA9IHtcbiAgICAgICAgW1BPUlRSQUlUX09SSUVOVEFUSU9OXTogMSxcbiAgICAgICAgW0xBTkRTQ0FQRV9PUklFTlRBVElPTl06IDFcbiAgICAgIH0sXG4gICAgICBvdmVybGF5Wm9vbSA9IHtcbiAgICAgICAgW1BPUlRSQUlUX09SSUVOVEFUSU9OXTogMSxcbiAgICAgICAgW0xBTkRTQ0FQRV9PUklFTlRBVElPTl06IDFcbiAgICAgIH0sXG4gICAgICBmdWxsU2NyZWVuT3ZlcmxheVpvb20gPSB7XG4gICAgICAgIFtQT1JUUkFJVF9PUklFTlRBVElPTl06IDEsXG4gICAgICAgIFtMQU5EU0NBUEVfT1JJRU5UQVRJT05dOiAxXG4gICAgICB9LFxuICAgICAgY29sb3Vyc0ludmVydGVkID0gZmFsc2UsXG4gICAgICBuYXRpdmVHZXN0dXJlc1Jlc3RvcmVkID0gZmFsc2UsXG4gICAgICBkZWZhdWx0UGVyc2lzdGVudFN0YXRlID0ge1xuICAgICAgICBtZW51Wm9vbSxcbiAgICAgICAgb3ZlcmxheVpvb20sXG4gICAgICAgIGZ1bGxTY3JlZW5PdmVybGF5Wm9vbSxcbiAgICAgICAgbmF0aXZlR2VzdHVyZXNSZXN0b3JlZCxcbiAgICAgICAgY29sb3Vyc0ludmVydGVkXG4gICAgICB9O1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0UGVyc2lzdGVudFN0YXRlKCkge1xuICBsZXQgcGVyc2lzdGVudFN0YXRlO1xuXG4gIGNvbnN0IGtleSA9IFNUQVRFX0tFWSxcbiAgICAgICAgdmFsdWUgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShrZXkpO1xuXG4gIGlmICh2YWx1ZSA9PT0gbnVsbCkge1xuICAgIHBlcnNpc3RlbnRTdGF0ZSA9IGRlZmF1bHRQZXJzaXN0ZW50U3RhdGU7IC8vL1xuICB9IGVsc2Uge1xuICAgIGNvbnN0IHBlcnNpc3RlbnRTdGF0ZVN0cmluZyA9IHZhbHVlOyAgLy8vXG5cbiAgICBwZXJzaXN0ZW50U3RhdGUgPSBKU09OLnBhcnNlKHBlcnNpc3RlbnRTdGF0ZVN0cmluZyk7XG4gIH1cblxuICByZXR1cm4gcGVyc2lzdGVudFN0YXRlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc2V0UGVyc2lzdGVudFN0YXRlKHBlcnNpc3RlbnRTdGF0ZSkge1xuICBjb25zdCBwZXJzaXN0ZW50U3RhdGVTdHJpbmcgPSBKU09OLnN0cmluZ2lmeShwZXJzaXN0ZW50U3RhdGUpLFxuICAgICAgICBrZXkgPSBTVEFURV9LRVksXG4gICAgICAgIHZhbHVlID0gcGVyc2lzdGVudFN0YXRlU3RyaW5nOyAgLy8vXG5cbiAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oa2V5LCB2YWx1ZSk7XG59XG5cbiJdLCJuYW1lcyI6WyJnZXRQZXJzaXN0ZW50U3RhdGUiLCJzZXRQZXJzaXN0ZW50U3RhdGUiLCJtZW51Wm9vbSIsIlBPUlRSQUlUX09SSUVOVEFUSU9OIiwiTEFORFNDQVBFX09SSUVOVEFUSU9OIiwib3ZlcmxheVpvb20iLCJmdWxsU2NyZWVuT3ZlcmxheVpvb20iLCJjb2xvdXJzSW52ZXJ0ZWQiLCJuYXRpdmVHZXN0dXJlc1Jlc3RvcmVkIiwiZGVmYXVsdFBlcnNpc3RlbnRTdGF0ZSIsInBlcnNpc3RlbnRTdGF0ZSIsImtleSIsIlNUQVRFX0tFWSIsInZhbHVlIiwibG9jYWxTdG9yYWdlIiwiZ2V0SXRlbSIsInBlcnNpc3RlbnRTdGF0ZVN0cmluZyIsIkpTT04iLCJwYXJzZSIsInN0cmluZ2lmeSIsInNldEl0ZW0iXSwicmFuZ2VNYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OyIsIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7SUEwQmdCQSxrQkFBa0I7ZUFBbEJBOztJQWlCQUMsa0JBQWtCO2VBQWxCQTs7O3lCQXpDdUQ7Ozs7Ozs7Ozs7Ozs7O0lBRXRELE1BSUcsT0FJVTtBQVI5QixJQUFNQyxZQUFXLFdBQ1QsaUJBRFMsTUFDUkMsK0JBQW9CLEVBQUcsSUFDeEIsaUJBRlMsTUFFUkMsZ0NBQXFCLEVBQUcsSUFGaEIsT0FJWEMsZUFBYyxZQUNaLGlCQURZLE9BQ1hGLCtCQUFvQixFQUFHLElBQ3hCLGlCQUZZLE9BRVhDLGdDQUFxQixFQUFHLElBRmIsUUFJZEUseUJBQXdCLFlBQ3RCLGlCQURzQixPQUNyQkgsK0JBQW9CLEVBQUcsSUFDeEIsaUJBRnNCLE9BRXJCQyxnQ0FBcUIsRUFBRyxJQUZILFFBSXhCRyxrQkFBa0IsT0FDbEJDLHlCQUF5QixPQUN6QkMseUJBQXlCO0lBQ3ZCUCxVQUFBQTtJQUNBRyxhQUFBQTtJQUNBQyx1QkFBQUE7SUFDQUUsd0JBQUFBO0lBQ0FELGlCQUFBQTtBQUNGO0FBRUMsU0FBU1A7SUFDZCxJQUFJVTtJQUVKLElBQU1DLE1BQU1DLG9CQUFTLEVBQ2ZDLFFBQVFDLGFBQWFDLE9BQU8sQ0FBQ0o7SUFFbkMsSUFBSUUsVUFBVSxNQUFNO1FBQ2xCSCxrQkFBa0JELHdCQUF3QixHQUFHO0lBQy9DLE9BQU87UUFDTCxJQUFNTyx3QkFBd0JILE9BQVEsR0FBRztRQUV6Q0gsa0JBQWtCTyxLQUFLQyxLQUFLLENBQUNGO0lBQy9CO0lBRUEsT0FBT047QUFDVDtBQUVPLFNBQVNULG1CQUFtQlMsZUFBZTtJQUNoRCxJQUFNTSx3QkFBd0JDLEtBQUtFLFNBQVMsQ0FBQ1Qsa0JBQ3ZDQyxNQUFNQyxvQkFBUyxFQUNmQyxRQUFRRyx1QkFBd0IsR0FBRztJQUV6Q0YsYUFBYU0sT0FBTyxDQUFDVCxLQUFLRTtBQUM1QiJ9
57
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9sb2NhbFN0b3JhZ2UuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IFNUQVRFX0tFWSwgTEFORFNDQVBFX09SSUVOVEFUSU9OLCBQT1JUUkFJVF9PUklFTlRBVElPTiB9IGZyb20gXCIuL2NvbnN0YW50c1wiO1xuXG5jb25zdCBtZW51Wm9vbSA9IHtcbiAgICAgICAgW1BPUlRSQUlUX09SSUVOVEFUSU9OXTogMSxcbiAgICAgICAgW0xBTkRTQ0FQRV9PUklFTlRBVElPTl06IDAuNVxuICAgICAgfSxcbiAgICAgIG92ZXJsYXlab29tID0ge1xuICAgICAgICBbUE9SVFJBSVRfT1JJRU5UQVRJT05dOiAxLFxuICAgICAgICBbTEFORFNDQVBFX09SSUVOVEFUSU9OXTogMVxuICAgICAgfSxcbiAgICAgIGZ1bGxTY3JlZW5PdmVybGF5Wm9vbSA9IHtcbiAgICAgICAgW1BPUlRSQUlUX09SSUVOVEFUSU9OXTogMSxcbiAgICAgICAgW0xBTkRTQ0FQRV9PUklFTlRBVElPTl06IDFcbiAgICAgIH0sXG4gICAgICBjb2xvdXJzSW52ZXJ0ZWQgPSBmYWxzZSxcbiAgICAgIG5hdGl2ZUdlc3R1cmVzUmVzdG9yZWQgPSBmYWxzZSxcbiAgICAgIGRlZmF1bHRQZXJzaXN0ZW50U3RhdGUgPSB7XG4gICAgICAgIG1lbnVab29tLFxuICAgICAgICBvdmVybGF5Wm9vbSxcbiAgICAgICAgZnVsbFNjcmVlbk92ZXJsYXlab29tLFxuICAgICAgICBuYXRpdmVHZXN0dXJlc1Jlc3RvcmVkLFxuICAgICAgICBjb2xvdXJzSW52ZXJ0ZWRcbiAgICAgIH07XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRQZXJzaXN0ZW50U3RhdGUoKSB7XG4gIGxldCBwZXJzaXN0ZW50U3RhdGU7XG5cbiAgY29uc3Qga2V5ID0gU1RBVEVfS0VZLFxuICAgICAgICB2YWx1ZSA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKGtleSk7XG5cbiAgaWYgKHZhbHVlID09PSBudWxsKSB7XG4gICAgcGVyc2lzdGVudFN0YXRlID0gZGVmYXVsdFBlcnNpc3RlbnRTdGF0ZTsgLy8vXG4gIH0gZWxzZSB7XG4gICAgY29uc3QgcGVyc2lzdGVudFN0YXRlU3RyaW5nID0gdmFsdWU7ICAvLy9cblxuICAgIHBlcnNpc3RlbnRTdGF0ZSA9IEpTT04ucGFyc2UocGVyc2lzdGVudFN0YXRlU3RyaW5nKTtcbiAgfVxuXG4gIHJldHVybiBwZXJzaXN0ZW50U3RhdGU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzZXRQZXJzaXN0ZW50U3RhdGUocGVyc2lzdGVudFN0YXRlKSB7XG4gIGNvbnN0IHBlcnNpc3RlbnRTdGF0ZVN0cmluZyA9IEpTT04uc3RyaW5naWZ5KHBlcnNpc3RlbnRTdGF0ZSksXG4gICAgICAgIGtleSA9IFNUQVRFX0tFWSxcbiAgICAgICAgdmFsdWUgPSBwZXJzaXN0ZW50U3RhdGVTdHJpbmc7ICAvLy9cblxuICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShrZXksIHZhbHVlKTtcbn1cblxuIl0sIm5hbWVzIjpbImdldFBlcnNpc3RlbnRTdGF0ZSIsInNldFBlcnNpc3RlbnRTdGF0ZSIsIm1lbnVab29tIiwiUE9SVFJBSVRfT1JJRU5UQVRJT04iLCJMQU5EU0NBUEVfT1JJRU5UQVRJT04iLCJvdmVybGF5Wm9vbSIsImZ1bGxTY3JlZW5PdmVybGF5Wm9vbSIsImNvbG91cnNJbnZlcnRlZCIsIm5hdGl2ZUdlc3R1cmVzUmVzdG9yZWQiLCJkZWZhdWx0UGVyc2lzdGVudFN0YXRlIiwicGVyc2lzdGVudFN0YXRlIiwia2V5IiwiU1RBVEVfS0VZIiwidmFsdWUiLCJsb2NhbFN0b3JhZ2UiLCJnZXRJdGVtIiwicGVyc2lzdGVudFN0YXRlU3RyaW5nIiwiSlNPTiIsInBhcnNlIiwic3RyaW5naWZ5Iiwic2V0SXRlbSJdLCJyYW5nZU1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7IiwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7OztJQTBCZ0JBLGtCQUFrQjtlQUFsQkE7O0lBaUJBQyxrQkFBa0I7ZUFBbEJBOzs7eUJBekN1RDs7Ozs7Ozs7Ozs7Ozs7SUFFdEQsTUFJRyxPQUlVO0FBUjlCLElBQU1DLFlBQVcsV0FDVCxpQkFEUyxNQUNSQywrQkFBb0IsRUFBRyxJQUN4QixpQkFGUyxNQUVSQyxnQ0FBcUIsRUFBRyxNQUZoQixPQUlYQyxlQUFjLFlBQ1osaUJBRFksT0FDWEYsK0JBQW9CLEVBQUcsSUFDeEIsaUJBRlksT0FFWEMsZ0NBQXFCLEVBQUcsSUFGYixRQUlkRSx5QkFBd0IsWUFDdEIsaUJBRHNCLE9BQ3JCSCwrQkFBb0IsRUFBRyxJQUN4QixpQkFGc0IsT0FFckJDLGdDQUFxQixFQUFHLElBRkgsUUFJeEJHLGtCQUFrQixPQUNsQkMseUJBQXlCLE9BQ3pCQyx5QkFBeUI7SUFDdkJQLFVBQUFBO0lBQ0FHLGFBQUFBO0lBQ0FDLHVCQUFBQTtJQUNBRSx3QkFBQUE7SUFDQUQsaUJBQUFBO0FBQ0Y7QUFFQyxTQUFTUDtJQUNkLElBQUlVO0lBRUosSUFBTUMsTUFBTUMsb0JBQVMsRUFDZkMsUUFBUUMsYUFBYUMsT0FBTyxDQUFDSjtJQUVuQyxJQUFJRSxVQUFVLE1BQU07UUFDbEJILGtCQUFrQkQsd0JBQXdCLEdBQUc7SUFDL0MsT0FBTztRQUNMLElBQU1PLHdCQUF3QkgsT0FBUSxHQUFHO1FBRXpDSCxrQkFBa0JPLEtBQUtDLEtBQUssQ0FBQ0Y7SUFDL0I7SUFFQSxPQUFPTjtBQUNUO0FBRU8sU0FBU1QsbUJBQW1CUyxlQUFlO0lBQ2hELElBQU1NLHdCQUF3QkMsS0FBS0UsU0FBUyxDQUFDVCxrQkFDdkNDLE1BQU1DLG9CQUFTLEVBQ2ZDLFFBQVFHLHVCQUF3QixHQUFHO0lBRXpDRixhQUFhTSxPQUFPLENBQUNULEtBQUtFO0FBQzVCIn0=
package/lib/styles.js CHANGED
@@ -45,6 +45,9 @@ _export(exports, {
45
45
  fontSizeButtonBorderColour: function() {
46
46
  return fontSizeButtonBorderColour;
47
47
  },
48
+ menuDivGap: function() {
49
+ return menuDivGap;
50
+ },
48
51
  menuDivPadding: function() {
49
52
  return menuDivPadding;
50
53
  },
@@ -61,6 +64,7 @@ _export(exports, {
61
64
  var svgFill = "#fff";
62
65
  var buttonSize = "64px";
63
66
  var spanColour = "#fff";
67
+ var menuDivGap = "32px";
64
68
  var borderWidth = "4px";
65
69
  var borderRadius = "8px";
66
70
  var borderColour = "#fff";
@@ -75,4 +79,4 @@ var backgroundColour = "#222";
75
79
  var checkboxBackgroundColour = "#000";
76
80
  var fontSizeButtonBorderColour = "#fff";
77
81
 
78
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9zdHlsZXMuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmV4cG9ydCBjb25zdCBzdmdGaWxsID0gXCIjZmZmXCI7XG5leHBvcnQgY29uc3QgYnV0dG9uU2l6ZSA9IFwiNjRweFwiO1xuZXhwb3J0IGNvbnN0IHNwYW5Db2xvdXIgPSBcIiNmZmZcIjtcbmV4cG9ydCBjb25zdCBib3JkZXJXaWR0aCA9IFwiNHB4XCI7XG5leHBvcnQgY29uc3QgYm9yZGVyUmFkaXVzID0gXCI4cHhcIlxuZXhwb3J0IGNvbnN0IGJvcmRlckNvbG91ciA9IFwiI2ZmZlwiO1xuZXhwb3J0IGNvbnN0IGNoZWNrYm94U2l6ZSA9IFwiNDhweFwiO1xuZXhwb3J0IGNvbnN0IHNwYW5Gb250U2l6ZSA9IGNoZWNrYm94U2l6ZTsgLy8vXG5leHBvcnQgY29uc3QgYnV0dG9uUGFkZGluZyA9IFwiOHB4XCI7XG5leHBvcnQgY29uc3QgYnV0dG9uc0RpdkdhcCA9IFwiMzJweFwiO1xuZXhwb3J0IGNvbnN0IG1lbnVEaXZQYWRkaW5nID0gXCI2NHB4XCI7XG5leHBvcnQgY29uc3QgY2hlY2tib3hEaXZHYXAgPSBcIjMycHhcIjtcbmV4cG9ydCBjb25zdCBjaGVja2JveGVzRGl2R2FwID0gXCI0OHB4XCI7XG5leHBvcnQgY29uc3QgYmFja2dyb3VuZENvbG91ciA9IFwiIzIyMlwiO1xuZXhwb3J0IGNvbnN0IGNoZWNrYm94QmFja2dyb3VuZENvbG91ciA9IFwiIzAwMFwiO1xuZXhwb3J0IGNvbnN0IGZvbnRTaXplQnV0dG9uQm9yZGVyQ29sb3VyID0gXCIjZmZmXCI7XG4iXSwibmFtZXMiOlsiYmFja2dyb3VuZENvbG91ciIsImJvcmRlckNvbG91ciIsImJvcmRlclJhZGl1cyIsImJvcmRlcldpZHRoIiwiYnV0dG9uUGFkZGluZyIsImJ1dHRvblNpemUiLCJidXR0b25zRGl2R2FwIiwiY2hlY2tib3hCYWNrZ3JvdW5kQ29sb3VyIiwiY2hlY2tib3hEaXZHYXAiLCJjaGVja2JveFNpemUiLCJjaGVja2JveGVzRGl2R2FwIiwiZm9udFNpemVCdXR0b25Cb3JkZXJDb2xvdXIiLCJtZW51RGl2UGFkZGluZyIsInNwYW5Db2xvdXIiLCJzcGFuRm9udFNpemUiLCJzdmdGaWxsIl0sInJhbmdlTWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzsiLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7O0lBZWFBLGdCQUFnQjtlQUFoQkE7O0lBUkFDLFlBQVk7ZUFBWkE7O0lBREFDLFlBQVk7ZUFBWkE7O0lBREFDLFdBQVc7ZUFBWEE7O0lBS0FDLGFBQWE7ZUFBYkE7O0lBUEFDLFVBQVU7ZUFBVkE7O0lBUUFDLGFBQWE7ZUFBYkE7O0lBS0FDLHdCQUF3QjtlQUF4QkE7O0lBSEFDLGNBQWM7ZUFBZEE7O0lBTEFDLFlBQVk7ZUFBWkE7O0lBTUFDLGdCQUFnQjtlQUFoQkE7O0lBR0FDLDBCQUEwQjtlQUExQkE7O0lBTEFDLGNBQWM7ZUFBZEE7O0lBUkFDLFVBQVU7ZUFBVkE7O0lBS0FDLFlBQVk7ZUFBWkE7O0lBUEFDLE9BQU87ZUFBUEE7OztBQUFOLElBQU1BLFVBQVU7QUFDaEIsSUFBTVYsYUFBYTtBQUNuQixJQUFNUSxhQUFhO0FBQ25CLElBQU1WLGNBQWM7QUFDcEIsSUFBTUQsZUFBZTtBQUNyQixJQUFNRCxlQUFlO0FBQ3JCLElBQU1RLGVBQWU7QUFDckIsSUFBTUssZUFBZUwsY0FBYyxHQUFHO0FBQ3RDLElBQU1MLGdCQUFnQjtBQUN0QixJQUFNRSxnQkFBZ0I7QUFDdEIsSUFBTU0saUJBQWlCO0FBQ3ZCLElBQU1KLGlCQUFpQjtBQUN2QixJQUFNRSxtQkFBbUI7QUFDekIsSUFBTVYsbUJBQW1CO0FBQ3pCLElBQU1PLDJCQUEyQjtBQUNqQyxJQUFNSSw2QkFBNkIifQ==
82
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9zdHlsZXMuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmV4cG9ydCBjb25zdCBzdmdGaWxsID0gXCIjZmZmXCI7XG5leHBvcnQgY29uc3QgYnV0dG9uU2l6ZSA9IFwiNjRweFwiO1xuZXhwb3J0IGNvbnN0IHNwYW5Db2xvdXIgPSBcIiNmZmZcIjtcbmV4cG9ydCBjb25zdCBtZW51RGl2R2FwID0gXCIzMnB4XCI7XG5leHBvcnQgY29uc3QgYm9yZGVyV2lkdGggPSBcIjRweFwiO1xuZXhwb3J0IGNvbnN0IGJvcmRlclJhZGl1cyA9IFwiOHB4XCJcbmV4cG9ydCBjb25zdCBib3JkZXJDb2xvdXIgPSBcIiNmZmZcIjtcbmV4cG9ydCBjb25zdCBjaGVja2JveFNpemUgPSBcIjQ4cHhcIjtcbmV4cG9ydCBjb25zdCBzcGFuRm9udFNpemUgPSBjaGVja2JveFNpemU7IC8vL1xuZXhwb3J0IGNvbnN0IGJ1dHRvblBhZGRpbmcgPSBcIjhweFwiO1xuZXhwb3J0IGNvbnN0IGJ1dHRvbnNEaXZHYXAgPSBcIjMycHhcIjtcbmV4cG9ydCBjb25zdCBtZW51RGl2UGFkZGluZyA9IFwiNjRweFwiO1xuZXhwb3J0IGNvbnN0IGNoZWNrYm94RGl2R2FwID0gXCIzMnB4XCI7XG5leHBvcnQgY29uc3QgY2hlY2tib3hlc0RpdkdhcCA9IFwiNDhweFwiO1xuZXhwb3J0IGNvbnN0IGJhY2tncm91bmRDb2xvdXIgPSBcIiMyMjJcIjtcbmV4cG9ydCBjb25zdCBjaGVja2JveEJhY2tncm91bmRDb2xvdXIgPSBcIiMwMDBcIjtcbmV4cG9ydCBjb25zdCBmb250U2l6ZUJ1dHRvbkJvcmRlckNvbG91ciA9IFwiI2ZmZlwiO1xuIl0sIm5hbWVzIjpbImJhY2tncm91bmRDb2xvdXIiLCJib3JkZXJDb2xvdXIiLCJib3JkZXJSYWRpdXMiLCJib3JkZXJXaWR0aCIsImJ1dHRvblBhZGRpbmciLCJidXR0b25TaXplIiwiYnV0dG9uc0RpdkdhcCIsImNoZWNrYm94QmFja2dyb3VuZENvbG91ciIsImNoZWNrYm94RGl2R2FwIiwiY2hlY2tib3hTaXplIiwiY2hlY2tib3hlc0RpdkdhcCIsImZvbnRTaXplQnV0dG9uQm9yZGVyQ29sb3VyIiwibWVudURpdkdhcCIsIm1lbnVEaXZQYWRkaW5nIiwic3BhbkNvbG91ciIsInNwYW5Gb250U2l6ZSIsInN2Z0ZpbGwiXSwicmFuZ2VNYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzsiLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7O0lBZ0JhQSxnQkFBZ0I7ZUFBaEJBOztJQVJBQyxZQUFZO2VBQVpBOztJQURBQyxZQUFZO2VBQVpBOztJQURBQyxXQUFXO2VBQVhBOztJQUtBQyxhQUFhO2VBQWJBOztJQVJBQyxVQUFVO2VBQVZBOztJQVNBQyxhQUFhO2VBQWJBOztJQUtBQyx3QkFBd0I7ZUFBeEJBOztJQUhBQyxjQUFjO2VBQWRBOztJQUxBQyxZQUFZO2VBQVpBOztJQU1BQyxnQkFBZ0I7ZUFBaEJBOztJQUdBQywwQkFBMEI7ZUFBMUJBOztJQWJBQyxVQUFVO2VBQVZBOztJQVFBQyxjQUFjO2VBQWRBOztJQVRBQyxVQUFVO2VBQVZBOztJQU1BQyxZQUFZO2VBQVpBOztJQVJBQyxPQUFPO2VBQVBBOzs7QUFBTixJQUFNQSxVQUFVO0FBQ2hCLElBQU1YLGFBQWE7QUFDbkIsSUFBTVMsYUFBYTtBQUNuQixJQUFNRixhQUFhO0FBQ25CLElBQU1ULGNBQWM7QUFDcEIsSUFBTUQsZUFBZTtBQUNyQixJQUFNRCxlQUFlO0FBQ3JCLElBQU1RLGVBQWU7QUFDckIsSUFBTU0sZUFBZU4sY0FBYyxHQUFHO0FBQ3RDLElBQU1MLGdCQUFnQjtBQUN0QixJQUFNRSxnQkFBZ0I7QUFDdEIsSUFBTU8saUJBQWlCO0FBQ3ZCLElBQU1MLGlCQUFpQjtBQUN2QixJQUFNRSxtQkFBbUI7QUFDekIsSUFBTVYsbUJBQW1CO0FBQ3pCLElBQU1PLDJCQUEyQjtBQUNqQyxJQUFNSSw2QkFBNkIifQ==
@@ -215,7 +215,8 @@ function _create_super(Derived) {
215
215
  }
216
216
  function _templateObject() {
217
217
  var data = _tagged_template_literal([
218
- "\n\n left: 0;\n bottom: 0;\n display: grid;\n padding: ",
218
+ "\n\n gap: ",
219
+ ";\n left: 0;\n bottom: 0;\n display: grid;\n padding: ",
219
220
  ";\n position: fixed;\n border-top: 1px solid ",
220
221
  ";\n background-color: ",
221
222
  ";\n transform-origin: bottom left;\n grid-template-rows: auto;\n grid-template-columns: auto min-content;\n \n"
@@ -295,6 +296,6 @@ _define_property(MenuDiv, "tagName", "div");
295
296
  _define_property(MenuDiv, "defaultProperties", {
296
297
  className: "menu"
297
298
  });
298
- var _default = (0, _easywithstyle.default)(MenuDiv)(_templateObject(), _styles.menuDivPadding, _styles.borderColour, _styles.backgroundColour);
299
+ var _default = (0, _easywithstyle.default)(MenuDiv)(_templateObject(), _styles.menuDivGap, _styles.menuDivPadding, _styles.borderColour, _styles.backgroundColour);
299
300
 
300
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy92aWV3L2Rpdi9tZW51LmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgd2l0aFN0eWxlIGZyb20gXCJlYXN5LXdpdGgtc3R5bGVcIjsgIC8vL1xuXG5pbXBvcnQgRWxlbWVudCBmcm9tIFwiLi4vZWxlbWVudFwiO1xuaW1wb3J0IEJ1dHRvbnNEaXYgZnJvbSBcIi4uL2Rpdi9idXR0b25zXCI7XG5pbXBvcnQgQ2hlY2tib3hlc0RpdiBmcm9tIFwiLi4vZGl2L2NoZWNrYm94ZXNcIjtcblxuaW1wb3J0IHsgR1JJRCB9IGZyb20gXCIuLi8uLi9jb25zdGFudHNcIjtcbmltcG9ydCB7IGdldE1lbnVab29tIGFzIGdldFpvb20gfSBmcm9tIFwiLi4vLi4vc3RhdGVcIjtcbmltcG9ydCB7IGJvcmRlckNvbG91ciwgbWVudURpdlBhZGRpbmcsIGJhY2tncm91bmRDb2xvdXIgfSBmcm9tIFwiLi4vLi4vc3R5bGVzXCI7XG5cbmNsYXNzIE1lbnVEaXYgZXh0ZW5kcyBFbGVtZW50IHtcbiAgc2hvdygpIHtcbiAgICBjb25zdCBkaXNwbGF5ID0gR1JJRDtcblxuICAgIHRoaXMuZGlzcGxheShkaXNwbGF5KTtcbiAgfVxuXG4gIG9wZW5NZW51KCkge1xuICAgIHRoaXMuc2hvdygpO1xuICB9XG5cbiAgY2xvc2VNZW51KCkge1xuICAgIHRoaXMuaGlkZSgpO1xuICB9XG5cbiAgdXBkYXRlTWVudVpvb20oKSB7XG4gICAgY29uc3Qgem9vbSA9IGdldFpvb20oKSxcbiAgICAgICAgICB3aWR0aCA9IGAkezEwMC96b29tfSVgLFxuICAgICAgICAgIHRyYW5zZm9ybSA9IGBzY2FsZSgke3pvb219KWAsXG4gICAgICAgICAgY3NzID0ge1xuICAgICAgICAgICAgd2lkdGgsXG4gICAgICAgICAgICB0cmFuc2Zvcm1cbiAgICAgICAgICB9O1xuXG4gICAgdGhpcy5jc3MoY3NzKTtcbiAgfVxuXG4gIGNoaWxkRWxlbWVudHMoKSB7XG4gICAgcmV0dXJuIChbXG5cbiAgICAgIDxDaGVja2JveGVzRGl2Lz4sXG4gICAgICA8QnV0dG9uc0Rpdi8+XG5cbiAgICBdKTtcbiAgfVxuXG4gIHBhcmVudENvbnRleHQoKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpLFxuICAgICAgICAgIG9wZW5NZW51ID0gdGhpcy5vcGVuTWVudS5iaW5kKHRoaXMpLFxuICAgICAgICAgIGNsb3NlTWVudSA9IHRoaXMuY2xvc2VNZW51LmJpbmQodGhpcyksXG4gICAgICAgICAgdXBkYXRlTWVudVpvb20gPSB0aGlzLnVwZGF0ZU1lbnVab29tLmJpbmQodGhpcyk7XG5cbiAgICByZXR1cm4gKHtcbiAgICAgIC4uLmNvbnRleHQsXG4gICAgICBvcGVuTWVudSxcbiAgICAgIGNsb3NlTWVudSxcbiAgICAgIHVwZGF0ZU1lbnVab29tXG4gICAgfSk7XG4gIH1cblxuICBpbml0aWFsaXNlKCkge1xuICAgIHRoaXMuaGlkZSgpO1xuICB9XG5cbiAgc3RhdGljIHRhZ05hbWUgPSBcImRpdlwiO1xuXG4gIHN0YXRpYyBkZWZhdWx0UHJvcGVydGllcyA9IHtcbiAgICBjbGFzc05hbWU6IFwibWVudVwiXG4gIH07XG59XG5cbmV4cG9ydCBkZWZhdWx0IHdpdGhTdHlsZShNZW51RGl2KWBcblxuICBsZWZ0OiAwO1xuICBib3R0b206IDA7XG4gIGRpc3BsYXk6IGdyaWQ7XG4gIHBhZGRpbmc6ICR7bWVudURpdlBhZGRpbmd9O1xuICBwb3NpdGlvbjogZml4ZWQ7XG4gIGJvcmRlci10b3A6IDFweCBzb2xpZCAke2JvcmRlckNvbG91cn07XG4gIGJhY2tncm91bmQtY29sb3I6ICR7YmFja2dyb3VuZENvbG91cn07XG4gIHRyYW5zZm9ybS1vcmlnaW46IGJvdHRvbSBsZWZ0O1xuICBncmlkLXRlbXBsYXRlLXJvd3M6IGF1dG87XG4gIGdyaWQtdGVtcGxhdGUtY29sdW1uczogYXV0byBtaW4tY29udGVudDtcbiAgICBcbmA7XG4iXSwibmFtZXMiOlsiTWVudURpdiIsInNob3ciLCJkaXNwbGF5IiwiR1JJRCIsIm9wZW5NZW51IiwiY2xvc2VNZW51IiwiaGlkZSIsInVwZGF0ZU1lbnVab29tIiwiem9vbSIsImdldFpvb20iLCJ3aWR0aCIsInRyYW5zZm9ybSIsImNzcyIsImNoaWxkRWxlbWVudHMiLCJDaGVja2JveGVzRGl2IiwiQnV0dG9uc0RpdiIsInBhcmVudENvbnRleHQiLCJjb250ZXh0IiwiZ2V0Q29udGV4dCIsImJpbmQiLCJpbml0aWFsaXNlIiwiRWxlbWVudCIsInRhZ05hbWUiLCJkZWZhdWx0UHJvcGVydGllcyIsImNsYXNzTmFtZSIsIndpdGhTdHlsZSIsIm1lbnVEaXZQYWRkaW5nIiwiYm9yZGVyQ29sb3VyIiwiYmFja2dyb3VuZENvbG91ciJdLCJyYW5nZU1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7IiwibWFwcGluZ3MiOiJBQUFBOzs7OytCQXlFQTs7O2VBQUE7OztvRUF2RXNCOzhEQUVGOzhEQUNHO2lFQUNHO3lCQUVMO3FCQUNrQjtzQkFDd0I7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFL0QsSUFBQSxBQUFNQSx3QkFBRCxBQUFMO2NBQU1BOytCQUFBQTthQUFBQTtnQ0FBQUE7OztrQkFBQUE7O1lBQ0pDLEtBQUFBO21CQUFBQSxTQUFBQTtnQkFDRSxJQUFNQyxVQUFVQyxlQUFJO2dCQUVwQixJQUFJLENBQUNELE9BQU8sQ0FBQ0E7WUFDZjs7O1lBRUFFLEtBQUFBO21CQUFBQSxTQUFBQTtnQkFDRSxJQUFJLENBQUNILElBQUk7WUFDWDs7O1lBRUFJLEtBQUFBO21CQUFBQSxTQUFBQTtnQkFDRSxJQUFJLENBQUNDLElBQUk7WUFDWDs7O1lBRUFDLEtBQUFBO21CQUFBQSxTQUFBQTtnQkFDRSxJQUFNQyxPQUFPQyxJQUFBQSxrQkFBTyxLQUNkQyxRQUFRLEFBQUMsR0FBVyxPQUFULE1BQUlGLE1BQUssTUFDcEJHLFlBQVksQUFBQyxTQUFhLE9BQUxILE1BQUssTUFDMUJJLE1BQU07b0JBQ0pGLE9BQUFBO29CQUNBQyxXQUFBQTtnQkFDRjtnQkFFTixJQUFJLENBQUNDLEdBQUcsQ0FBQ0E7WUFDWDs7O1lBRUFDLEtBQUFBO21CQUFBQSxTQUFBQTtnQkFDRSxPQUFRO2tDQUVOLG9CQUFDQyxtQkFBYTtrQ0FDZCxvQkFBQ0MsZ0JBQVU7aUJBRVo7WUFDSDs7O1lBRUFDLEtBQUFBO21CQUFBQSxTQUFBQTtnQkFDRSxJQUFNQyxVQUFVLElBQUksQ0FBQ0MsVUFBVSxJQUN6QmQsV0FBVyxJQUFJLENBQUNBLFFBQVEsQ0FBQ2UsSUFBSSxDQUFDLElBQUksR0FDbENkLFlBQVksSUFBSSxDQUFDQSxTQUFTLENBQUNjLElBQUksQ0FBQyxJQUFJLEdBQ3BDWixpQkFBaUIsSUFBSSxDQUFDQSxjQUFjLENBQUNZLElBQUksQ0FBQyxJQUFJO2dCQUVwRCxPQUFRLHdDQUNIRjtvQkFDSGIsVUFBQUE7b0JBQ0FDLFdBQUFBO29CQUNBRSxnQkFBQUE7O1lBRUo7OztZQUVBYSxLQUFBQTttQkFBQUEsU0FBQUE7Z0JBQ0UsSUFBSSxDQUFDZCxJQUFJO1lBQ1g7OztXQXBESU47cUJBQWdCcUIsZ0JBQU87QUFzRDNCLGlCQXRESXJCLFNBc0RHc0IsV0FBVTtBQUVqQixpQkF4REl0QixTQXdER3VCLHFCQUFvQjtJQUN6QkMsV0FBVztBQUNiO0lBR0YsV0FBZUMsSUFBQUEsc0JBQVMsRUFBQ3pCLDRCQUtaMEIsc0JBQWMsRUFFREMsb0JBQVksRUFDaEJDLHdCQUFnQiJ9
301
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy92aWV3L2Rpdi9tZW51LmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgd2l0aFN0eWxlIGZyb20gXCJlYXN5LXdpdGgtc3R5bGVcIjsgIC8vL1xuXG5pbXBvcnQgRWxlbWVudCBmcm9tIFwiLi4vZWxlbWVudFwiO1xuaW1wb3J0IEJ1dHRvbnNEaXYgZnJvbSBcIi4uL2Rpdi9idXR0b25zXCI7XG5pbXBvcnQgQ2hlY2tib3hlc0RpdiBmcm9tIFwiLi4vZGl2L2NoZWNrYm94ZXNcIjtcblxuaW1wb3J0IHsgR1JJRCB9IGZyb20gXCIuLi8uLi9jb25zdGFudHNcIjtcbmltcG9ydCB7IGdldE1lbnVab29tIGFzIGdldFpvb20gfSBmcm9tIFwiLi4vLi4vc3RhdGVcIjtcbmltcG9ydCB7IG1lbnVEaXZHYXAsIGJvcmRlckNvbG91ciwgbWVudURpdlBhZGRpbmcsIGJhY2tncm91bmRDb2xvdXIgfSBmcm9tIFwiLi4vLi4vc3R5bGVzXCI7XG5cbmNsYXNzIE1lbnVEaXYgZXh0ZW5kcyBFbGVtZW50IHtcbiAgc2hvdygpIHtcbiAgICBjb25zdCBkaXNwbGF5ID0gR1JJRDtcblxuICAgIHRoaXMuZGlzcGxheShkaXNwbGF5KTtcbiAgfVxuXG4gIG9wZW5NZW51KCkge1xuICAgIHRoaXMuc2hvdygpO1xuICB9XG5cbiAgY2xvc2VNZW51KCkge1xuICAgIHRoaXMuaGlkZSgpO1xuICB9XG5cbiAgdXBkYXRlTWVudVpvb20oKSB7XG4gICAgY29uc3Qgem9vbSA9IGdldFpvb20oKSxcbiAgICAgICAgICB3aWR0aCA9IGAkezEwMC96b29tfSVgLFxuICAgICAgICAgIHRyYW5zZm9ybSA9IGBzY2FsZSgke3pvb219KWAsXG4gICAgICAgICAgY3NzID0ge1xuICAgICAgICAgICAgd2lkdGgsXG4gICAgICAgICAgICB0cmFuc2Zvcm1cbiAgICAgICAgICB9O1xuXG4gICAgdGhpcy5jc3MoY3NzKTtcbiAgfVxuXG4gIGNoaWxkRWxlbWVudHMoKSB7XG4gICAgcmV0dXJuIChbXG5cbiAgICAgIDxDaGVja2JveGVzRGl2Lz4sXG4gICAgICA8QnV0dG9uc0Rpdi8+XG5cbiAgICBdKTtcbiAgfVxuXG4gIHBhcmVudENvbnRleHQoKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpLFxuICAgICAgICAgIG9wZW5NZW51ID0gdGhpcy5vcGVuTWVudS5iaW5kKHRoaXMpLFxuICAgICAgICAgIGNsb3NlTWVudSA9IHRoaXMuY2xvc2VNZW51LmJpbmQodGhpcyksXG4gICAgICAgICAgdXBkYXRlTWVudVpvb20gPSB0aGlzLnVwZGF0ZU1lbnVab29tLmJpbmQodGhpcyk7XG5cbiAgICByZXR1cm4gKHtcbiAgICAgIC4uLmNvbnRleHQsXG4gICAgICBvcGVuTWVudSxcbiAgICAgIGNsb3NlTWVudSxcbiAgICAgIHVwZGF0ZU1lbnVab29tXG4gICAgfSk7XG4gIH1cblxuICBpbml0aWFsaXNlKCkge1xuICAgIHRoaXMuaGlkZSgpO1xuICB9XG5cbiAgc3RhdGljIHRhZ05hbWUgPSBcImRpdlwiO1xuXG4gIHN0YXRpYyBkZWZhdWx0UHJvcGVydGllcyA9IHtcbiAgICBjbGFzc05hbWU6IFwibWVudVwiXG4gIH07XG59XG5cbmV4cG9ydCBkZWZhdWx0IHdpdGhTdHlsZShNZW51RGl2KWBcblxuICBnYXA6ICR7bWVudURpdkdhcH07XG4gIGxlZnQ6IDA7XG4gIGJvdHRvbTogMDtcbiAgZGlzcGxheTogZ3JpZDtcbiAgcGFkZGluZzogJHttZW51RGl2UGFkZGluZ307XG4gIHBvc2l0aW9uOiBmaXhlZDtcbiAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICR7Ym9yZGVyQ29sb3VyfTtcbiAgYmFja2dyb3VuZC1jb2xvcjogJHtiYWNrZ3JvdW5kQ29sb3VyfTtcbiAgdHJhbnNmb3JtLW9yaWdpbjogYm90dG9tIGxlZnQ7XG4gIGdyaWQtdGVtcGxhdGUtcm93czogYXV0bztcbiAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiBhdXRvIG1pbi1jb250ZW50O1xuICAgIFxuYDtcbiJdLCJuYW1lcyI6WyJNZW51RGl2Iiwic2hvdyIsImRpc3BsYXkiLCJHUklEIiwib3Blbk1lbnUiLCJjbG9zZU1lbnUiLCJoaWRlIiwidXBkYXRlTWVudVpvb20iLCJ6b29tIiwiZ2V0Wm9vbSIsIndpZHRoIiwidHJhbnNmb3JtIiwiY3NzIiwiY2hpbGRFbGVtZW50cyIsIkNoZWNrYm94ZXNEaXYiLCJCdXR0b25zRGl2IiwicGFyZW50Q29udGV4dCIsImNvbnRleHQiLCJnZXRDb250ZXh0IiwiYmluZCIsImluaXRpYWxpc2UiLCJFbGVtZW50IiwidGFnTmFtZSIsImRlZmF1bHRQcm9wZXJ0aWVzIiwiY2xhc3NOYW1lIiwid2l0aFN0eWxlIiwibWVudURpdkdhcCIsIm1lbnVEaXZQYWRkaW5nIiwiYm9yZGVyQ29sb3VyIiwiYmFja2dyb3VuZENvbG91ciJdLCJyYW5nZU1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OyIsIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkF5RUE7OztlQUFBOzs7b0VBdkVzQjs4REFFRjs4REFDRztpRUFDRzt5QkFFTDtxQkFDa0I7c0JBQ29DOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUUzRSxJQUFBLEFBQU1BLHdCQUFELEFBQUw7Y0FBTUE7K0JBQUFBO2FBQUFBO2dDQUFBQTs7O2tCQUFBQTs7WUFDSkMsS0FBQUE7bUJBQUFBLFNBQUFBO2dCQUNFLElBQU1DLFVBQVVDLGVBQUk7Z0JBRXBCLElBQUksQ0FBQ0QsT0FBTyxDQUFDQTtZQUNmOzs7WUFFQUUsS0FBQUE7bUJBQUFBLFNBQUFBO2dCQUNFLElBQUksQ0FBQ0gsSUFBSTtZQUNYOzs7WUFFQUksS0FBQUE7bUJBQUFBLFNBQUFBO2dCQUNFLElBQUksQ0FBQ0MsSUFBSTtZQUNYOzs7WUFFQUMsS0FBQUE7bUJBQUFBLFNBQUFBO2dCQUNFLElBQU1DLE9BQU9DLElBQUFBLGtCQUFPLEtBQ2RDLFFBQVEsQUFBQyxHQUFXLE9BQVQsTUFBSUYsTUFBSyxNQUNwQkcsWUFBWSxBQUFDLFNBQWEsT0FBTEgsTUFBSyxNQUMxQkksTUFBTTtvQkFDSkYsT0FBQUE7b0JBQ0FDLFdBQUFBO2dCQUNGO2dCQUVOLElBQUksQ0FBQ0MsR0FBRyxDQUFDQTtZQUNYOzs7WUFFQUMsS0FBQUE7bUJBQUFBLFNBQUFBO2dCQUNFLE9BQVE7a0NBRU4sb0JBQUNDLG1CQUFhO2tDQUNkLG9CQUFDQyxnQkFBVTtpQkFFWjtZQUNIOzs7WUFFQUMsS0FBQUE7bUJBQUFBLFNBQUFBO2dCQUNFLElBQU1DLFVBQVUsSUFBSSxDQUFDQyxVQUFVLElBQ3pCZCxXQUFXLElBQUksQ0FBQ0EsUUFBUSxDQUFDZSxJQUFJLENBQUMsSUFBSSxHQUNsQ2QsWUFBWSxJQUFJLENBQUNBLFNBQVMsQ0FBQ2MsSUFBSSxDQUFDLElBQUksR0FDcENaLGlCQUFpQixJQUFJLENBQUNBLGNBQWMsQ0FBQ1ksSUFBSSxDQUFDLElBQUk7Z0JBRXBELE9BQVEsd0NBQ0hGO29CQUNIYixVQUFBQTtvQkFDQUMsV0FBQUE7b0JBQ0FFLGdCQUFBQTs7WUFFSjs7O1lBRUFhLEtBQUFBO21CQUFBQSxTQUFBQTtnQkFDRSxJQUFJLENBQUNkLElBQUk7WUFDWDs7O1dBcERJTjtxQkFBZ0JxQixnQkFBTztBQXNEM0IsaUJBdERJckIsU0FzREdzQixXQUFVO0FBRWpCLGlCQXhESXRCLFNBd0RHdUIscUJBQW9CO0lBQ3pCQyxXQUFXO0FBQ2I7SUFHRixXQUFlQyxJQUFBQSxzQkFBUyxFQUFDekIsNEJBRWhCMEIsa0JBQVUsRUFJTkMsc0JBQWMsRUFFREMsb0JBQVksRUFDaEJDLHdCQUFnQiJ9
@@ -404,6 +404,48 @@ var OverlayDiv = /*#__PURE__*/ function(Element) {
404
404
  nativeGesturesRestored ? this.disableCustomGestures() : this.enableCustomGestures();
405
405
  }
406
406
  },
407
+ {
408
+ key: "enableCustomGestures",
409
+ value: function enableCustomGestures() {
410
+ var nativeGesturedEnabled = this.areNativeGesturesEnabled();
411
+ if (nativeGesturedEnabled) {
412
+ return;
413
+ }
414
+ this.onCustomDragUp(this.dragUpCustomHandler);
415
+ this.onCustomDragDown(this.dragDownCustomHandler);
416
+ this.onCustomDragStart(this.dragStartCustomHandler);
417
+ this.onCustomSwipeUp(this.swipeUpCustomHandler);
418
+ this.onCustomSwipeDown(this.swipeDownCustomHandler);
419
+ this.onCustomSwipeLeft(this.swipeLeftCustomHandler);
420
+ this.onCustomSwipeRight(this.swipeRightCustomHandler);
421
+ this.onCustomPinchMove(this.pinchMoveCustomHandler);
422
+ this.onCustomPinchStart(this.pinchStartCustomHandler);
423
+ this.onCustomDoubleTap(this.doubleTapCustomHandler);
424
+ nativeGesturedEnabled = true;
425
+ this.setNativeGesturesEnabled(nativeGesturedEnabled);
426
+ }
427
+ },
428
+ {
429
+ key: "disableCustomGestures",
430
+ value: function disableCustomGestures() {
431
+ var nativeGesturedEnabled = this.areNativeGesturesEnabled();
432
+ if (!nativeGesturedEnabled) {
433
+ return;
434
+ }
435
+ this.offCustomDragUp(this.dragUpCustomHandler);
436
+ this.offCustomDragDown(this.dragDownCustomHandler);
437
+ this.offCustomDragStart(this.dragStartCustomHandler);
438
+ this.offCustomSwipeUp(this.swipeUpCustomHandler);
439
+ this.offCustomSwipeDown(this.swipeDownCustomHandler);
440
+ this.offCustomSwipeLeft(this.swipeLeftCustomHandler);
441
+ this.offCustomSwipeRight(this.swipeRightCustomHandler);
442
+ this.offCustomPinchMove(this.pinchMoveCustomHandler);
443
+ this.offCustomPinchStart(this.pinchStartCustomHandler);
444
+ this.offCustomDoubleTap(this.doubleTapCustomHandler);
445
+ nativeGesturedEnabled = false;
446
+ this.setNativeGesturesEnabled(nativeGesturedEnabled);
447
+ }
448
+ },
407
449
  {
408
450
  key: "areNativeGesturesRestored",
409
451
  value: function areNativeGesturesRestored() {
@@ -547,14 +589,30 @@ var OverlayDiv = /*#__PURE__*/ function(Element) {
547
589
  });
548
590
  }
549
591
  },
592
+ {
593
+ key: "areNativeGesturesEnabled",
594
+ value: function areNativeGesturesEnabled() {
595
+ var nativeGesturesEnabled = this.getState().nativeGesturesEnabled;
596
+ return nativeGesturesEnabled;
597
+ }
598
+ },
599
+ {
600
+ key: "setNativeGesturesEnabled",
601
+ value: function setNativeGesturesEnabled(nativeGesturesEnabled) {
602
+ this.updateState({
603
+ nativeGesturesEnabled: nativeGesturesEnabled
604
+ });
605
+ }
606
+ },
550
607
  {
551
608
  key: "setInitialState",
552
609
  value: function setInitialState() {
553
- var interval = null, startZoom = null, startScrollTop = null;
610
+ var interval = null, startZoom = null, startScrollTop = null, nativeGesturesEnabled = false;
554
611
  this.setState({
555
612
  interval: interval,
556
613
  startZoom: startZoom,
557
- startScrollTop: startScrollTop
614
+ startScrollTop: startScrollTop,
615
+ nativeGesturesEnabled: nativeGesturesEnabled
558
616
  });
559
617
  }
560
618
  },
@@ -562,17 +620,7 @@ var OverlayDiv = /*#__PURE__*/ function(Element) {
562
620
  key: "didMount",
563
621
  value: function didMount() {
564
622
  _easy.window.onKeyDown(this.keyDownHandler);
565
- this.onCustomDragUp(this.dragUpCustomHandler);
566
- this.onCustomDragDown(this.dragDownCustomHandler);
567
- this.onCustomDragStart(this.dragStartCustomHandler);
568
- this.onCustomSwipeUp(this.swipeUpCustomHandler);
569
- this.onCustomSwipeDown(this.swipeDownCustomHandler);
570
- this.onCustomSwipeLeft(this.swipeLeftCustomHandler);
571
- this.onCustomSwipeRight(this.swipeRightCustomHandler);
572
- this.onCustomPinchMove(this.pinchMoveCustomHandler);
573
- this.onCustomPinchStart(this.pinchStartCustomHandler);
574
623
  this.onCustomSingleTap(this.singleTapCustomHandler);
575
- this.onCustomDoubleTap(this.doubleTapCustomHandler);
576
624
  this.onCustomFullScreenChange(this.fullScreenChangeCustomHandler);
577
625
  this.enableFullScreen();
578
626
  this.enableTouch();
@@ -583,18 +631,8 @@ var OverlayDiv = /*#__PURE__*/ function(Element) {
583
631
  value: function willUnmount() {
584
632
  this.disableTouch();
585
633
  this.disableFullScreen();
586
- this.offCustomDragUp(this.dragUpCustomHandler);
587
- this.offCustomDragDown(this.dragDownCustomHandler);
588
- this.offCustomDragStart(this.dragStartCustomHandler);
589
- this.offCustomSwipeUp(this.swipeUpCustomHandler);
590
- this.offCustomSwipeDown(this.swipeDownCustomHandler);
591
- this.offCustomSwipeLeft(this.swipeLeftCustomHandler);
592
- this.offCustomSwipeRight(this.swipeRightCustomHandler);
593
- this.offCustomPinchMove(this.pinchMoveCustomHandler);
594
- this.offCustomPinchStart(this.pinchStartCustomHandler);
595
- this.offCustomDoubleTap(this.doubleTapCustomHandler);
596
- this.offCustomSingleTap(this.singleTapCustomHandler);
597
634
  this.offCustomFullScreenChange(this.fullScreenChangeCustomHandler);
635
+ this.offCustomSingleTap(this.singleTapCustomHandler);
598
636
  _easy.window.offKeyDown(this.keyDownHandler);
599
637
  }
600
638
  },
@@ -644,4 +682,4 @@ function defer(func) {
644
682
  setTimeout(func, 0);
645
683
  }
646
684
 
647
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy92aWV3L2Rpdi9vdmVybGF5LmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgd2l0aFN0eWxlIGZyb20gXCJlYXN5LXdpdGgtc3R5bGVcIjsgIC8vL1xuXG5pbXBvcnQgeyB3aW5kb3cgfSBmcm9tIFwiZWFzeVwiO1xuaW1wb3J0IHsga2V5Q29kZXMgfSBmcm9tIFwibmVjZXNzYXJ5XCI7XG5pbXBvcnQgeyB0b3VjaE1peGlucywgZnVsbFNjcmVlbk1peGlucywgZnVsbFNjcmVlblV0aWxpdGllcyB9IGZyb20gXCJlYXN5LW1vYmlsZVwiO1xuXG5pbXBvcnQgRGl2IGZyb20gXCIuLi9kaXZcIjtcbmltcG9ydCBFbGVtZW50IGZyb20gXCIuLi9lbGVtZW50XCI7XG5cbmltcG9ydCB7IHJlc2V0RnJhZ21lbnQgfSBmcm9tIFwiLi4vLi4vdXRpbGl0aWVzL2ZyYWdtZW50XCI7XG5pbXBvcnQgeyBlbGVtZW50c0Zyb21ET01FbGVtZW50cyB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvZWxlbWVudFwiO1xuaW1wb3J0IHsgc2Nyb2xsVG9BbmNob3IsIGZpbmREaXZCeUFuY2hvcklkIH0gZnJvbSBcIi4uLy4uL3V0aWxpdGllcy9lbGVtZW50XCI7XG5pbXBvcnQgeyBnZXRPdmVybGF5Wm9vbSBhcyBnZXRab29tLCBhcmVDb2xvdXJzSW52ZXJ0ZWQsIGFyZU5hdGl2ZUdlc3R1cmVzUmVzdG9yZWQgfSBmcm9tIFwiLi4vLi4vc3RhdGVcIjtcbmltcG9ydCB7IFNDUk9MTF9ERUxBWSwgVVBfRElSRUNUSU9OLCBERUNFTEVSQVRJT04sIERPV05fRElSRUNUSU9OLCBPUEVOX01FTlVfVEFQX0FSRUFfSEVJR0hUIH0gZnJvbSBcIi4uLy4uL2NvbnN0YW50c1wiO1xuXG5jb25zdCB7IGlzRnVsbFNjcmVlbiB9ID0gZnVsbFNjcmVlblV0aWxpdGllcyxcbiAgICAgIHsgRU5URVJfS0VZX0NPREUsXG4gICAgICAgIEVTQ0FQRV9LRVlfQ09ERSxcbiAgICAgICAgQkFDS1NQQUNFX0tFWV9DT0RFLFxuICAgICAgICBBUlJPV19VUF9LRVlfQ09ERSxcbiAgICAgICAgQVJST1dfRE9XTl9LRVlfQ09ERSxcbiAgICAgICAgQVJST1dfTEVGVF9LRVlfQ09ERSxcbiAgICAgICAgQVJST1dfUklHSFRfS0VZX0NPREUgfSA9IGtleUNvZGVzO1xuXG5jbGFzcyBPdmVybGF5RGl2IGV4dGVuZHMgRWxlbWVudCB7XG4gIGZ1bGxTY3JlZW5DaGFuZ2VDdXN0b21IYW5kbGVyID0gKGV2ZW50LCBlbGVtZW50KSA9PiB7XG4gICAgY29udHJvbGxlci51cGRhdGVGdWxsU2NyZWVuKCk7XG5cbiAgICB0aGlzLnVwZGF0ZU92ZXJsYXlab29tKCk7XG4gIH1cblxuICBzaW5nbGVUYXBDdXN0b21IYW5kbGVyID0gKGV2ZW50LCBlbGVtZW50LCB0b3AsIGxlZnQpID0+IHtcbiAgICBjb25zdCBoZWlnaHQgPSB0aGlzLmdldEhlaWdodCgpLFxuICAgICAgICAgIGJvdHRvbSA9IGhlaWdodCAtIHRvcDtcblxuICAgIGlmIChib3R0b20gPCBPUEVOX01FTlVfVEFQX0FSRUFfSEVJR0hUKSB7XG4gICAgICBjb250cm9sbGVyLm9wZW5NZW51KCk7XG4gICAgfVxuICB9XG5cbiAgZG91YmxlVGFwQ3VzdG9tSGFuZGxlciA9IChldmVudCwgZWxlbWVudCwgdG9wLCBsZWZ0KSA9PiB7XG4gICAgY29uc3QgZnVsbFNjcmVlbiA9IGlzRnVsbFNjcmVlbigpO1xuXG4gICAgaWYgKGZ1bGxTY3JlZW4pIHtcbiAgICAgIGNvbnRyb2xsZXIuZXhpdEZ1bGxTY3JlZW4oKTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IG5hdGl2ZUdlc3R1cmVzUmVzdG9yZWQgPSBhcmVOYXRpdmVHZXN0dXJlc1Jlc3RvcmVkKCk7XG5cbiAgICBuYXRpdmVHZXN0dXJlc1Jlc3RvcmVkID9cbiAgICAgIGNvbnRyb2xsZXIuc3VwcHJlc3NOYXRpdmVHZXN0dXJlcygpIDpcbiAgICAgICAgY29udHJvbGxlci5yZXN0b3JlTmF0aXZlR2VzdHVyZXMoKTtcbiAgfVxuXG4gIHBpbmNoU3RhcnRDdXN0b21IYW5kbGVyID0gKGV2ZW50LCBlbGVtZW50KSA9PiB7XG4gICAgY29uc3Qgem9vbSA9IGdldFpvb20oKSxcbiAgICAgICAgICBzdGFydFpvb20gPSB6b29tOyAvLy9cblxuICAgIHRoaXMuc2V0U3RhcnRab29tKHN0YXJ0Wm9vbSk7XG4gIH1cblxuICBwaW5jaE1vdmVDdXN0b21IYW5kbGVyID0gKGV2ZW50LCBlbGVtZW50LCByYXRpbykgPT4ge1xuICAgIGNvbnN0IHN0YXJ0Wm9vbSA9IHRoaXMuZ2V0U3RhcnRab29tKCksXG4gICAgICAgICAgb3ZlcmxheVpvb20gPSBzdGFydFpvb20gKiBNYXRoLnNxcnQocmF0aW8pOyAgLy8vXG5cbiAgICBjb250cm9sbGVyLnpvb21PdmVybGF5KG92ZXJsYXlab29tKTtcbiAgfVxuXG4gIHN3aXBlUmlnaHRDdXN0b21IYW5kbGVyID0gKGV2ZW50LCBlbGVtZW50LCB0b3AsIGxlZnQsIHNwcGVkKSA9PiB7XG4gICAgdGhpcy5zaG93TGVmdERpdigpO1xuICB9XG5cbiAgc3dpcGVMZWZ0Q3VzdG9tSGFuZGxlciA9IChldmVudCwgZWxlbWVudCwgdG9wLCBsZWZ0LCBzcHBlZCkgPT4ge1xuICAgIHRoaXMuc2hvd1JpZ2h0RGl2KCk7XG4gIH1cblxuICBzd2lwZURvd25DdXN0b21IYW5kbGVyID0gKGV2ZW50LCBlbGVtZW50LCB0b3AsIGxlZnQsIHNwZWVkKSA9PiB7XG4gICAgY29uc3QgZGlyZWN0aW9uID0gRE9XTl9ESVJFQ1RJT047XG5cbiAgICB0aGlzLnN0YXJ0U2Nyb2xsaW5nKHNwZWVkLCBkaXJlY3Rpb24pO1xuICB9XG5cbiAgc3dpcGVVcEN1c3RvbUhhbmRsZXIgPSAoZXZlbnQsIGVsZW1lbnQsIHRvcCwgbGVmdCwgc3BlZWQpID0+IHtcbiAgICBjb25zdCBkaXJlY3Rpb24gPSBVUF9ESVJFQ1RJT047XG5cbiAgICB0aGlzLnN0YXJ0U2Nyb2xsaW5nKHNwZWVkLCBkaXJlY3Rpb24pO1xuICB9XG5cbiAgZHJhZ1N0YXJ0Q3VzdG9tSGFuZGxlciA9IChldmVudCwgZWxlbWVudCwgdG9wLCBsZWZ0KSA9PiB7XG4gICAgY29uc3Qgc2Nyb2xsVG9wID0gdGhpcy5nZXRTY3JvbGxUb3AoKSxcbiAgICAgICAgICBzdGFydFNjcm9sbFRvcCA9IHNjcm9sbFRvcDsgLy8vXG5cbiAgICB0aGlzLnNldFN0YXJ0U2Nyb2xsVG9wKHN0YXJ0U2Nyb2xsVG9wKTtcbiAgfVxuXG4gIGRyYWdEb3duQ3VzdG9tSGFuZGxlciA9IChldmVudCwgZWxlbWVudCwgdG9wLCBsZWZ0KSA9PiB7XG4gICAgY29uc3Qgc3RhcnRTY3JvbGxUb3AgPSB0aGlzLmdldFN0YXJ0U2Nyb2xsVG9wKCk7XG5cbiAgICBpZiAoc3RhcnRTY3JvbGxUb3AgPT09IG51bGwpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBzY3JvbGxUb3AgPSBzdGFydFNjcm9sbFRvcCAtIHRvcDtcblxuICAgIHRoaXMuc2V0U2Nyb2xsVG9wKHNjcm9sbFRvcCk7XG4gIH1cblxuICBkcmFnVXBDdXN0b21IYW5kbGVyID0gKGV2ZW50LCBlbGVtZW50LCB0b3AsIGxlZnQpID0+IHtcbiAgICBjb25zdCBzdGFydFNjcm9sbFRvcCA9IHRoaXMuZ2V0U3RhcnRTY3JvbGxUb3AoKTtcblxuICAgIGlmIChzdGFydFNjcm9sbFRvcCA9PT0gbnVsbCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHNjcm9sbFRvcCA9IHN0YXJ0U2Nyb2xsVG9wIC0gdG9wO1xuXG4gICAgdGhpcy5zZXRTY3JvbGxUb3Aoc2Nyb2xsVG9wKTtcbiAgfVxuXG4gIGtleURvd25IYW5kbGVyID0gKGV2ZW50LCBlbGVtZW50KSA9PiB7XG4gICAgY29uc3QgeyBrZXlDb2RlIH0gPSBldmVudDtcblxuICAgIHN3aXRjaCAoa2V5Q29kZSkge1xuICAgICAgY2FzZSBFTlRFUl9LRVlfQ09ERTpcbiAgICAgIGNhc2UgQVJST1dfUklHSFRfS0VZX0NPREU6IHtcbiAgICAgICAgdGhpcy5zaG93UmlnaHREaXYoKTtcblxuICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgICAgY2FzZSBCQUNLU1BBQ0VfS0VZX0NPREU6XG4gICAgICBjYXNlIEFSUk9XX0xFRlRfS0VZX0NPREU6IHtcbiAgICAgICAgdGhpcy5zaG93TGVmdERpdigpO1xuXG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICBjYXNlIEVTQ0FQRV9LRVlfQ09ERToge1xuICAgICAgICBjb25zdCBmdWxsU2NyZWVuID0gaXNGdWxsU2NyZWVuKCk7XG5cbiAgICAgICAgaWYgKGZ1bGxTY3JlZW4pIHtcbiAgICAgICAgICBjb250cm9sbGVyLmV4aXRGdWxsU2NyZWVuKCk7XG4gICAgICAgIH1cblxuICAgICAgICBjb250cm9sbGVyLmNsb3NlTWVudSgpO1xuXG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICBjYXNlIEFSUk9XX1VQX0tFWV9DT0RFOiB7XG4gICAgICAgIHRoaXMuc2hvd0ZpcnN0RGl2KCk7XG5cbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG5cbiAgICAgIGNhc2UgQVJST1dfRE9XTl9LRVlfQ09ERToge1xuICAgICAgICB0aGlzLnNob3dMYXN0RGl2KCk7XG5cbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgc2Nyb2xsVG9BbmNob3IoYW5jaG9ySWQpIHtcbiAgICBsZXQgZGl2O1xuXG4gICAgZGl2ID0gZmluZERpdkJ5QW5jaG9ySWQoYW5jaG9ySWQpO1xuXG4gICAgY29uc3QgbmV4dERpdiA9IGRpdjsgIC8vL1xuXG4gICAgZGl2ID0gdGhpcy5maW5kRGl2KCk7XG5cbiAgICBjb25zdCBwcmV2aW91c0RpdiA9IGRpdjsgIC8vL1xuXG4gICAgY29uc3QgZGl2cyA9IHRoaXMuZ2V0RGl2cygpLFxuICAgICAgICAgIG5leHRJbmRleCA9IGRpdnMuaW5kZXhPZihuZXh0RGl2KSwgIC8vL1xuICAgICAgICAgIHByZXZpb3VzSW5kZXggPSBkaXZzLmluZGV4T2YocHJldmlvdXNEaXYpOyAgLy8vXG5cbiAgICB0aGlzLnNob3dOZXh0RGl2KG5leHRJbmRleCwgcHJldmlvdXNJbmRleCwgKCkgPT4ge1xuICAgICAgc2Nyb2xsVG9BbmNob3IoYW5jaG9ySWQpO1xuICAgIH0pO1xuICB9XG5cbiAgc2Nyb2xsVG9Ub3AoKSB7XG4gICAgY29uc3Qgc2Nyb2xsVG9wID0gMDtcblxuICAgIHRoaXMuc2V0U2Nyb2xsVG9wKHNjcm9sbFRvcCk7XG4gIH1cblxuICBzdG9wU2Nyb2xsaW5nKCkge1xuICAgIGxldCBpbnRlcnZhbCA9IHRoaXMuZ2V0SW50ZXJ2YWwoKTtcblxuICAgIGlmIChpbnRlcnZhbCAhPT0gbnVsbCkge1xuICAgICAgY2xlYXJJbnRlcnZhbChpbnRlcnZhbCk7XG5cbiAgICAgIGludGVydmFsID0gbnVsbDtcblxuICAgICAgdGhpcy5zZXRJbnRlcnZhbChpbnRlcnZhbCk7XG4gICAgfVxuICB9XG5cbiAgc3RhcnRTY3JvbGxpbmcoc3BlZWQsIGRpcmVjdGlvbikge1xuICAgIGxldCBzY3JvbGxUb3AgPSB0aGlzLmdldFNjcm9sbFRvcCgpO1xuXG4gICAgc2Nyb2xsVG9wICs9IHNwZWVkICogU0NST0xMX0RFTEFZO1xuXG4gICAgdGhpcy5zZXRTY3JvbGxUb3Aoc2Nyb2xsVG9wKTtcblxuICAgIGxldCBpbnRlcnZhbCA9IHRoaXMuZ2V0SW50ZXJ2YWwoKTtcblxuICAgIGlmIChpbnRlcnZhbCAhPT0gbnVsbCkge1xuICAgICAgY2xlYXJJbnRlcnZhbChpbnRlcnZhbCk7XG4gICAgfVxuXG4gICAgaW50ZXJ2YWwgPSBzZXRJbnRlcnZhbCgoKSA9PiB7XG4gICAgICBzcGVlZCA9IHNwZWVkIC0gZGlyZWN0aW9uICogREVDRUxFUkFUSU9OO1xuXG4gICAgICBpZiAoKHNwZWVkICogZGlyZWN0aW9uKSA8IDApIHtcbiAgICAgICAgY2xlYXJJbnRlcnZhbChpbnRlcnZhbCk7XG5cbiAgICAgICAgaW50ZXJ2YWwgPSBudWxsO1xuXG4gICAgICAgIHRoaXMuc2V0SW50ZXJ2YWwoaW50ZXJ2YWwpO1xuICAgICAgfVxuXG4gICAgICBsZXQgc2Nyb2xsVG9wID0gdGhpcy5nZXRTY3JvbGxUb3AoKTtcblxuICAgICAgc2Nyb2xsVG9wICs9IHNwZWVkICogU0NST0xMX0RFTEFZO1xuXG4gICAgICB0aGlzLnNldFNjcm9sbFRvcChzY3JvbGxUb3ApO1xuICAgIH0sIFNDUk9MTF9ERUxBWSk7XG5cbiAgICB0aGlzLnNldEludGVydmFsKGludGVydmFsKTtcbiAgfVxuXG4gIGVudGVyRnVsbFNjcmVlbigpIHtcbiAgICB0aGlzLnJlcXVlc3RGdWxsU2NyZWVuKCk7XG4gIH1cblxuICB1cGRhdGVPdmVybGF5Wm9vbSgpIHtcbiAgICBjb25zdCBkaXYgPSB0aGlzLmZpbmREaXYoKSxcbiAgICAgICAgICB6b29tID0gZ2V0Wm9vbSgpO1xuXG4gICAgZGl2Lnpvb20oem9vbSk7XG4gIH1cblxuICB1cGRhdGVPdmVybGF5Q29sb3VycygpIHtcbiAgICBjb25zdCBjb2xvdXJzSW52ZXJ0ZWQgPSBhcmVDb2xvdXJzSW52ZXJ0ZWQoKTtcblxuICAgIGNvbG91cnNJbnZlcnRlZCA/XG4gICAgICB0aGlzLmFkZENsYXNzKFwiaW52ZXJ0ZWQtY29sb3Vyc1wiKSA6XG4gICAgICAgIHRoaXMucmVtb3ZlQ2xhc3MoXCJpbnZlcnRlZC1jb2xvdXJzXCIpO1xuICB9XG5cbiAgdXBkYXRlTmF0aXZlR2VzdHVyZXMoKSB7XG4gICAgY29uc3QgbmF0aXZlR2VzdHVyZXNSZXN0b3JlZCA9IGFyZU5hdGl2ZUdlc3R1cmVzUmVzdG9yZWQoKTtcblxuICAgIG5hdGl2ZUdlc3R1cmVzUmVzdG9yZWQgP1xuICAgICAgdGhpcy5hZGRDbGFzcyhcIm5hdGl2ZS1nZXN0dXJlc1wiKSA6XG4gICAgICAgIHRoaXMucmVtb3ZlQ2xhc3MoXCJuYXRpdmUtZ2VzdHVyZXNcIik7XG5cbiAgICBuYXRpdmVHZXN0dXJlc1Jlc3RvcmVkID9cbiAgICAgIHRoaXMuZGlzYWJsZUN1c3RvbUdlc3R1cmVzKCkgOlxuICAgICAgICB0aGlzLmVuYWJsZUN1c3RvbUdlc3R1cmVzKCk7XG4gIH1cblxuICBhcmVOYXRpdmVHZXN0dXJlc1Jlc3RvcmVkKCkge1xuICAgIGNvbnN0IG5hdGl2ZUdlc3R1cmVzUmVzdG9yZWQgPSB0aGlzLmhhc0NsYXNzKFwibmF0aXZlLWdlc3R1cmVzXCIpO1xuXG4gICAgcmV0dXJuIG5hdGl2ZUdlc3R1cmVzUmVzdG9yZWQ7XG4gIH1cblxuICBzaG93UmlnaHREaXYoKSB7XG4gICAgY29uc3QgZGl2ID0gdGhpcy5maW5kRGl2KCksXG4gICAgICAgICAgZGl2cyA9IHRoaXMuZ2V0RGl2cygpLFxuICAgICAgICAgIGRpdnNMZW5ndGggPSBkaXZzLmxlbmd0aCxcbiAgICAgICAgICBpbmRleCA9IGRpdnMuaW5kZXhPZihkaXYpLFxuICAgICAgICAgIG5leHRJbmRleCA9IGluZGV4ICsgMSxcbiAgICAgICAgICBwcmV2aW91c0luZGV4ID0gaW5kZXg7ICAvLy9cblxuICAgIGlmIChuZXh0SW5kZXggPT09IGRpdnNMZW5ndGgpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnNob3dOZXh0RGl2KG5leHRJbmRleCwgcHJldmlvdXNJbmRleCk7XG4gIH1cblxuICBzaG93TGVmdERpdigpIHtcbiAgICBjb25zdCBkaXYgPSB0aGlzLmZpbmREaXYoKSxcbiAgICAgICAgICBkaXZzID0gdGhpcy5nZXREaXZzKCksXG4gICAgICAgICAgaW5kZXggPSBkaXZzLmluZGV4T2YoZGl2KSxcbiAgICAgICAgICBuZXh0SW5kZXggPSBpbmRleCAtIDEsXG4gICAgICAgICAgcHJldmlvdXNJbmRleCA9IGluZGV4OyAgLy8vXG5cbiAgICBpZiAobmV4dEluZGV4ID09PSAtMSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuc2hvd05leHREaXYobmV4dEluZGV4LCBwcmV2aW91c0luZGV4KTtcbiAgfVxuXG4gIHNob3dMYXN0RGl2KCkge1xuICAgIGNvbnN0IGRpdiA9IHRoaXMuZmluZERpdigpLFxuICAgICAgICAgIGRpdnMgPSB0aGlzLmdldERpdnMoKSxcbiAgICAgICAgICBkaXZzTGVuZ3RoID0gZGl2cy5sZW5ndGgsXG4gICAgICAgICAgaW5kZXggPSAoZGl2ID09PSBudWxsKSA/XG4gICAgICAgICAgICAgICAgICAgIC0xIDpcbiAgICAgICAgICAgICAgICAgICAgICBkaXZzLmluZGV4T2YoZGl2KSxcbiAgICAgICAgICBuZXh0SW5kZXggPSBkaXZzTGVuZ3RoIC0gMSxcbiAgICAgICAgICBwcmV2aW91c0luZGV4ID0gaW5kZXg7ICAvLy9cblxuICAgIGlmIChuZXh0SW5kZXggPT09IHByZXZpb3VzSW5kZXgpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnNob3dOZXh0RGl2KG5leHRJbmRleCwgcHJldmlvdXNJbmRleCk7XG4gIH1cblxuICBzaG93Rmlyc3REaXYoKSB7XG4gICAgY29uc3QgZGl2ID0gdGhpcy5maW5kRGl2KCksXG4gICAgICAgICAgZGl2cyA9IHRoaXMuZ2V0RGl2cygpLFxuICAgICAgICAgIGluZGV4ID0gKGRpdiA9PT0gbnVsbCkgP1xuICAgICAgICAgICAgICAgICAgICAtMSA6XG4gICAgICAgICAgICAgICAgICAgICAgZGl2cy5pbmRleE9mKGRpdiksXG4gICAgICAgICAgbmV4dEluZGV4ID0gMCxcbiAgICAgICAgICBwcmV2aW91c0luZGV4ID0gaW5kZXg7ICAvLy9cblxuICAgIGlmIChuZXh0SW5kZXggPT09IHByZXZpb3VzSW5kZXgpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnNob3dOZXh0RGl2KG5leHRJbmRleCwgcHJldmlvdXNJbmRleCk7XG4gIH1cblxuICBzaG93TmV4dERpdihuZXh0SW5kZXgsIHByZXZpb3VzSW5kZXgsIGRvbmUgPSAoKSA9PiB7fSkge1xuICAgIHJlc2V0RnJhZ21lbnQoKTtcblxuICAgIGNvbnN0IGRpdnMgPSB0aGlzLmdldERpdnMoKTtcblxuICAgIGlmIChwcmV2aW91c0luZGV4ICE9PSAtMSkge1xuICAgICAgY29uc3QgcHJldmlvdXNEaXYgPSBkaXZzW3ByZXZpb3VzSW5kZXhdO1xuXG4gICAgICBwcmV2aW91c0Rpdi5oaWRlKCk7XG4gICAgfVxuXG4gICAgY29uc3Qgem9vbSA9IGdldFpvb20oKSxcbiAgICAgICAgICBuZXh0RGl2ID0gZGl2c1tuZXh0SW5kZXhdO1xuXG4gICAgdGhpcy5zdG9wU2Nyb2xsaW5nKCk7XG5cbiAgICB0aGlzLnNjcm9sbFRvVG9wKCk7XG5cbiAgICBuZXh0RGl2Lnpvb20oem9vbSk7XG5cbiAgICBuZXh0RGl2LnNob3coKTtcblxuICAgIGRlZmVyKCgpID0+IHtcbiAgICAgIGNvbnN0IGJhY2tncm91bmRDb2xvdXIgPSBuZXh0RGl2LmdldEJhY2tncm91bmRDb2xvdXIoKTtcblxuICAgICAgdGhpcy5zZXRCYWNrZ3JvdW5kQ29sb3VyKGJhY2tncm91bmRDb2xvdXIpO1xuXG4gICAgICBkb25lKCk7XG4gICAgfSk7XG4gIH1cblxuICBzZXRCYWNrZ3JvdW5kQ29sb3VyKGJhY2tncm91bmRDb2xvdXIpIHtcbiAgICBjb25zdCBiYWNrZ3JvdW5kQ29sb3IgPSBiYWNrZ3JvdW5kQ29sb3VyLCAvLy9cbiAgICAgICAgICBjc3MgPSB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3JcbiAgICAgICAgICB9O1xuXG4gICAgdGhpcy5jc3MoY3NzKTtcbiAgfVxuXG4gIGZpbmREaXYoKSB7XG4gICAgY29uc3QgZGl2cyA9IHRoaXMuZ2V0RGl2cygpLFxuICAgICAgICAgIGRpdiA9IGRpdnMuZmluZCgoZGl2KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBzaG93aW5nID0gZGl2LmlzU2hvd2luZygpO1xuXG4gICAgICAgICAgICBpZiAoc2hvd2luZykge1xuICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KSB8fCBudWxsO1xuXG4gICAgcmV0dXJuIGRpdjtcbiAgfVxuXG4gIGdldERpdnMoKSB7XG4gICAgY29uc3QgY2hpbGRFbGVtZW50cyA9IHRoaXMuZ2V0Q2hpbGRFbGVtZW50cygpLFxuICAgICAgICAgIGRpdnMgPSBjaGlsZEVsZW1lbnRzOyAvLy9cblxuICAgIHJldHVybiBkaXZzO1xuICB9XG5cbiAgZ2V0SW50ZXJ2YWwoKSB7XG4gICAgY29uc3QgeyBpbnRlcnZhbCB9ID0gdGhpcy5nZXRTdGF0ZSgpO1xuXG4gICAgcmV0dXJuIGludGVydmFsO1xuICB9XG5cbiAgc2V0SW50ZXJ2YWwoaW50ZXJ2YWwpIHtcbiAgICB0aGlzLnVwZGF0ZVN0YXRlKHtcbiAgICAgIGludGVydmFsXG4gICAgfSk7XG4gIH1cblxuICBnZXRTdGFydFpvb20oKSB7XG4gICAgY29uc3QgeyBzdGFydFpvb20gfSA9IHRoaXMuZ2V0U3RhdGUoKTtcblxuICAgIHJldHVybiBzdGFydFpvb207XG4gIH1cblxuICBzZXRTdGFydFpvb20oc3RhcnRab29tKSB7XG4gICAgdGhpcy51cGRhdGVTdGF0ZSh7XG4gICAgICBzdGFydFpvb21cbiAgICB9KTtcbiAgfVxuXG4gIGdldFN0YXJ0U2Nyb2xsVG9wKCkge1xuICAgIGNvbnN0IHsgc3RhcnRTY3JvbGxUb3AgfSA9IHRoaXMuZ2V0U3RhdGUoKTtcblxuICAgIHJldHVybiBzdGFydFNjcm9sbFRvcDtcbiAgfVxuXG4gIHNldFN0YXJ0U2Nyb2xsVG9wKHN0YXJ0U2Nyb2xsVG9wKSB7XG4gICAgdGhpcy51cGRhdGVTdGF0ZSh7XG4gICAgICBzdGFydFNjcm9sbFRvcFxuICAgIH0pO1xuICB9XG5cbiAgc2V0SW5pdGlhbFN0YXRlKCkge1xuICAgIGNvbnN0IGludGVydmFsID0gbnVsbCxcbiAgICAgICAgICBzdGFydFpvb20gPSBudWxsLFxuICAgICAgICAgIHN0YXJ0U2Nyb2xsVG9wID0gbnVsbDtcblxuICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgaW50ZXJ2YWwsXG4gICAgICBzdGFydFpvb20sXG4gICAgICBzdGFydFNjcm9sbFRvcFxuICAgIH0pO1xuICB9XG5cbiAgZGlkTW91bnQoKSB7XG4gICAgd2luZG93Lm9uS2V5RG93bih0aGlzLmtleURvd25IYW5kbGVyKTtcblxuICAgIHRoaXMub25DdXN0b21EcmFnVXAodGhpcy5kcmFnVXBDdXN0b21IYW5kbGVyKTtcbiAgICB0aGlzLm9uQ3VzdG9tRHJhZ0Rvd24odGhpcy5kcmFnRG93bkN1c3RvbUhhbmRsZXIpO1xuICAgIHRoaXMub25DdXN0b21EcmFnU3RhcnQodGhpcy5kcmFnU3RhcnRDdXN0b21IYW5kbGVyKTtcbiAgICB0aGlzLm9uQ3VzdG9tU3dpcGVVcCh0aGlzLnN3aXBlVXBDdXN0b21IYW5kbGVyKTtcbiAgICB0aGlzLm9uQ3VzdG9tU3dpcGVEb3duKHRoaXMuc3dpcGVEb3duQ3VzdG9tSGFuZGxlcik7XG4gICAgdGhpcy5vbkN1c3RvbVN3aXBlTGVmdCh0aGlzLnN3aXBlTGVmdEN1c3RvbUhhbmRsZXIpO1xuICAgIHRoaXMub25DdXN0b21Td2lwZVJpZ2h0KHRoaXMuc3dpcGVSaWdodEN1c3RvbUhhbmRsZXIpO1xuICAgIHRoaXMub25DdXN0b21QaW5jaE1vdmUodGhpcy5waW5jaE1vdmVDdXN0b21IYW5kbGVyKTtcbiAgICB0aGlzLm9uQ3VzdG9tUGluY2hTdGFydCh0aGlzLnBpbmNoU3RhcnRDdXN0b21IYW5kbGVyKTtcbiAgICB0aGlzLm9uQ3VzdG9tU2luZ2xlVGFwKHRoaXMuc2luZ2xlVGFwQ3VzdG9tSGFuZGxlcik7XG4gICAgdGhpcy5vbkN1c3RvbURvdWJsZVRhcCh0aGlzLmRvdWJsZVRhcEN1c3RvbUhhbmRsZXIpO1xuXG4gICAgdGhpcy5vbkN1c3RvbUZ1bGxTY3JlZW5DaGFuZ2UodGhpcy5mdWxsU2NyZWVuQ2hhbmdlQ3VzdG9tSGFuZGxlcik7XG5cbiAgICB0aGlzLmVuYWJsZUZ1bGxTY3JlZW4oKTtcblxuICAgIHRoaXMuZW5hYmxlVG91Y2goKTtcbiAgfVxuXG4gIHdpbGxVbm1vdW50KCkge1xuICAgIHRoaXMuZGlzYWJsZVRvdWNoKCk7XG5cbiAgICB0aGlzLmRpc2FibGVGdWxsU2NyZWVuKCk7XG5cbiAgICB0aGlzLm9mZkN1c3RvbURyYWdVcCh0aGlzLmRyYWdVcEN1c3RvbUhhbmRsZXIpO1xuICAgIHRoaXMub2ZmQ3VzdG9tRHJhZ0Rvd24odGhpcy5kcmFnRG93bkN1c3RvbUhhbmRsZXIpO1xuICAgIHRoaXMub2ZmQ3VzdG9tRHJhZ1N0YXJ0KHRoaXMuZHJhZ1N0YXJ0Q3VzdG9tSGFuZGxlcik7XG4gICAgdGhpcy5vZmZDdXN0b21Td2lwZVVwKHRoaXMuc3dpcGVVcEN1c3RvbUhhbmRsZXIpO1xuICAgIHRoaXMub2ZmQ3VzdG9tU3dpcGVEb3duKHRoaXMuc3dpcGVEb3duQ3VzdG9tSGFuZGxlcik7XG4gICAgdGhpcy5vZmZDdXN0b21Td2lwZUxlZnQodGhpcy5zd2lwZUxlZnRDdXN0b21IYW5kbGVyKTtcbiAgICB0aGlzLm9mZkN1c3RvbVN3aXBlUmlnaHQodGhpcy5zd2lwZVJpZ2h0Q3VzdG9tSGFuZGxlcik7XG4gICAgdGhpcy5vZmZDdXN0b21QaW5jaE1vdmUodGhpcy5waW5jaE1vdmVDdXN0b21IYW5kbGVyKTtcbiAgICB0aGlzLm9mZkN1c3RvbVBpbmNoU3RhcnQodGhpcy5waW5jaFN0YXJ0Q3VzdG9tSGFuZGxlcik7XG4gICAgdGhpcy5vZmZDdXN0b21Eb3VibGVUYXAodGhpcy5kb3VibGVUYXBDdXN0b21IYW5kbGVyKTtcbiAgICB0aGlzLm9mZkN1c3RvbVNpbmdsZVRhcCh0aGlzLnNpbmdsZVRhcEN1c3RvbUhhbmRsZXIpO1xuXG4gICAgdGhpcy5vZmZDdXN0b21GdWxsU2NyZWVuQ2hhbmdlKHRoaXMuZnVsbFNjcmVlbkNoYW5nZUN1c3RvbUhhbmRsZXIpO1xuXG4gICAgd2luZG93Lm9mZktleURvd24odGhpcy5rZXlEb3duSGFuZGxlcik7XG4gIH1cblxuICBjaGlsZEVsZW1lbnRzKCkge1xuICAgIGNvbnN0IHsgZGl2RE9NRWxlbWVudHMgfSA9IHRoaXMucHJvcGVydGllcyxcbiAgICAgICAgICBkaXZzID0gZWxlbWVudHNGcm9tRE9NRWxlbWVudHMoZGl2RE9NRWxlbWVudHMsIERpdiksXG4gICAgICAgICAgY2hpbGRFbGVtZW50cyA9IFtcbiAgICAgICAgICAgIC4uLmRpdnNcbiAgICAgICAgICBdO1xuXG4gICAgcmV0dXJuIGNoaWxkRWxlbWVudHM7XG4gIH1cblxuICBwYXJlbnRDb250ZXh0KCkge1xuICAgIGNvbnN0IHNob3dGaXJzdERpdiA9IHRoaXMuc2hvd0ZpcnN0RGl2LmJpbmQodGhpcyksXG4gICAgICAgICAgc2Nyb2xsVG9BbmNob3IgPSB0aGlzLnNjcm9sbFRvQW5jaG9yLmJpbmQodGhpcyksXG4gICAgICAgICAgZXhpdEZ1bGxTY3JlZW4gPSB0aGlzLmV4aXRGdWxsU2NyZWVuLmJpbmQodGhpcyksXG4gICAgICAgICAgZW50ZXJGdWxsU2NyZWVuID0gdGhpcy5lbnRlckZ1bGxTY3JlZW4uYmluZCh0aGlzKSxcbiAgICAgICAgICB1cGRhdGVPdmVybGF5Wm9vbSA9IHRoaXMudXBkYXRlT3ZlcmxheVpvb20uYmluZCh0aGlzKSxcbiAgICAgICAgICB1cGRhdGVPdmVybGF5Q29sb3VycyA9IHRoaXMudXBkYXRlT3ZlcmxheUNvbG91cnMuYmluZCh0aGlzKSxcbiAgICAgICAgICB1cGRhdGVOYXRpdmVHZXN0dXJlcyA9IHRoaXMudXBkYXRlTmF0aXZlR2VzdHVyZXMuYmluZCh0aGlzKTtcblxuICAgIHJldHVybiAoe1xuICAgICAgc2hvd0ZpcnN0RGl2LFxuICAgICAgc2Nyb2xsVG9BbmNob3IsXG4gICAgICBleGl0RnVsbFNjcmVlbixcbiAgICAgIGVudGVyRnVsbFNjcmVlbixcbiAgICAgIHVwZGF0ZU92ZXJsYXlab29tLFxuICAgICAgdXBkYXRlT3ZlcmxheUNvbG91cnMsXG4gICAgICB1cGRhdGVOYXRpdmVHZXN0dXJlc1xuICAgIH0pO1xuICB9XG5cbiAgaW5pdGlhbGlzZSgpIHtcbiAgICB0aGlzLmFzc2lnbkNvbnRleHQoKTtcblxuICAgIHRoaXMuc2V0SW5pdGlhbFN0YXRlKCk7XG4gIH1cblxuICBzdGF0aWMgdGFnTmFtZSA9IFwiZGl2XCI7XG5cbiAgc3RhdGljIGlnbm9yZWRQcm9wZXJ0aWVzID0gW1xuICAgIFwiZGl2RE9NRWxlbWVudHNcIlxuICBdO1xuXG4gIHN0YXRpYyBkZWZhdWx0UHJvcGVydGllcyA9IHtcbiAgICBjbGFzc05hbWU6IFwib3ZlcmxheVwiXG4gIH07XG59XG5cbk9iamVjdC5hc3NpZ24oT3ZlcmxheURpdi5wcm90b3R5cGUsIHRvdWNoTWl4aW5zKTtcbk9iamVjdC5hc3NpZ24oT3ZlcmxheURpdi5wcm90b3R5cGUsIGZ1bGxTY3JlZW5NaXhpbnMpO1xuXG5leHBvcnQgZGVmYXVsdCB3aXRoU3R5bGUoT3ZlcmxheURpdilgXG4gIFxuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiAxMDAlO1xuXG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIHRvdWNoLWFjdGlvbjogbm9uZTtcbiAgICBcbiAgLm5hdGl2ZS1nZXN0dXJlcyB7XG4gICAgb3ZlcmZsb3c6IHNjcm9sbDtcbiAgICB0b3VjaC1hY3Rpb246IGF1dG87XG4gIH1cbiAgXG4gIC5pbnZlcnRlZC1jb2xvdXJzIHtcbiAgICBmaWx0ZXI6IGludmVydCgxKTtcbiAgfVxuICAgIFxuYDtcblxuZnVuY3Rpb24gZGVmZXIoZnVuYykge1xuICBzZXRUaW1lb3V0KGZ1bmMsIDApO1xufVxuIl0sIm5hbWVzIjpbImlzRnVsbFNjcmVlbiIsImZ1bGxTY3JlZW5VdGlsaXRpZXMiLCJFTlRFUl9LRVlfQ09ERSIsImtleUNvZGVzIiwiRVNDQVBFX0tFWV9DT0RFIiwiQkFDS1NQQUNFX0tFWV9DT0RFIiwiQVJST1dfVVBfS0VZX0NPREUiLCJBUlJPV19ET1dOX0tFWV9DT0RFIiwiQVJST1dfTEVGVF9LRVlfQ09ERSIsIkFSUk9XX1JJR0hUX0tFWV9DT0RFIiwiT3ZlcmxheURpdiIsImZ1bGxTY3JlZW5DaGFuZ2VDdXN0b21IYW5kbGVyIiwiZXZlbnQiLCJlbGVtZW50IiwiY29udHJvbGxlciIsInVwZGF0ZUZ1bGxTY3JlZW4iLCJ1cGRhdGVPdmVybGF5Wm9vbSIsInNpbmdsZVRhcEN1c3RvbUhhbmRsZXIiLCJ0b3AiLCJsZWZ0IiwiaGVpZ2h0IiwiZ2V0SGVpZ2h0IiwiYm90dG9tIiwiT1BFTl9NRU5VX1RBUF9BUkVBX0hFSUdIVCIsIm9wZW5NZW51IiwiZG91YmxlVGFwQ3VzdG9tSGFuZGxlciIsImZ1bGxTY3JlZW4iLCJleGl0RnVsbFNjcmVlbiIsIm5hdGl2ZUdlc3R1cmVzUmVzdG9yZWQiLCJhcmVOYXRpdmVHZXN0dXJlc1Jlc3RvcmVkIiwic3VwcHJlc3NOYXRpdmVHZXN0dXJlcyIsInJlc3RvcmVOYXRpdmVHZXN0dXJlcyIsInBpbmNoU3RhcnRDdXN0b21IYW5kbGVyIiwiem9vbSIsImdldFpvb20iLCJzdGFydFpvb20iLCJzZXRTdGFydFpvb20iLCJwaW5jaE1vdmVDdXN0b21IYW5kbGVyIiwicmF0aW8iLCJnZXRTdGFydFpvb20iLCJvdmVybGF5Wm9vbSIsIk1hdGgiLCJzcXJ0Iiwiem9vbU92ZXJsYXkiLCJzd2lwZVJpZ2h0Q3VzdG9tSGFuZGxlciIsInNwcGVkIiwic2hvd0xlZnREaXYiLCJzd2lwZUxlZnRDdXN0b21IYW5kbGVyIiwic2hvd1JpZ2h0RGl2Iiwic3dpcGVEb3duQ3VzdG9tSGFuZGxlciIsInNwZWVkIiwiZGlyZWN0aW9uIiwiRE9XTl9ESVJFQ1RJT04iLCJzdGFydFNjcm9sbGluZyIsInN3aXBlVXBDdXN0b21IYW5kbGVyIiwiVVBfRElSRUNUSU9OIiwiZHJhZ1N0YXJ0Q3VzdG9tSGFuZGxlciIsInNjcm9sbFRvcCIsImdldFNjcm9sbFRvcCIsInN0YXJ0U2Nyb2xsVG9wIiwic2V0U3RhcnRTY3JvbGxUb3AiLCJkcmFnRG93bkN1c3RvbUhhbmRsZXIiLCJnZXRTdGFydFNjcm9sbFRvcCIsInNldFNjcm9sbFRvcCIsImRyYWdVcEN1c3RvbUhhbmRsZXIiLCJrZXlEb3duSGFuZGxlciIsImtleUNvZGUiLCJjbG9zZU1lbnUiLCJzaG93Rmlyc3REaXYiLCJzaG93TGFzdERpdiIsInNjcm9sbFRvQW5jaG9yIiwiYW5jaG9ySWQiLCJkaXYiLCJmaW5kRGl2QnlBbmNob3JJZCIsIm5leHREaXYiLCJmaW5kRGl2IiwicHJldmlvdXNEaXYiLCJkaXZzIiwiZ2V0RGl2cyIsIm5leHRJbmRleCIsImluZGV4T2YiLCJwcmV2aW91c0luZGV4Iiwic2hvd05leHREaXYiLCJzY3JvbGxUb1RvcCIsInN0b3BTY3JvbGxpbmciLCJpbnRlcnZhbCIsImdldEludGVydmFsIiwiY2xlYXJJbnRlcnZhbCIsInNldEludGVydmFsIiwiU0NST0xMX0RFTEFZIiwiREVDRUxFUkFUSU9OIiwiZW50ZXJGdWxsU2NyZWVuIiwicmVxdWVzdEZ1bGxTY3JlZW4iLCJ1cGRhdGVPdmVybGF5Q29sb3VycyIsImNvbG91cnNJbnZlcnRlZCIsImFyZUNvbG91cnNJbnZlcnRlZCIsImFkZENsYXNzIiwicmVtb3ZlQ2xhc3MiLCJ1cGRhdGVOYXRpdmVHZXN0dXJlcyIsImRpc2FibGVDdXN0b21HZXN0dXJlcyIsImVuYWJsZUN1c3RvbUdlc3R1cmVzIiwiaGFzQ2xhc3MiLCJkaXZzTGVuZ3RoIiwibGVuZ3RoIiwiaW5kZXgiLCJkb25lIiwicmVzZXRGcmFnbWVudCIsImhpZGUiLCJzaG93IiwiZGVmZXIiLCJiYWNrZ3JvdW5kQ29sb3VyIiwiZ2V0QmFja2dyb3VuZENvbG91ciIsInNldEJhY2tncm91bmRDb2xvdXIiLCJiYWNrZ3JvdW5kQ29sb3IiLCJjc3MiLCJmaW5kIiwic2hvd2luZyIsImlzU2hvd2luZyIsImNoaWxkRWxlbWVudHMiLCJnZXRDaGlsZEVsZW1lbnRzIiwiZ2V0U3RhdGUiLCJ1cGRhdGVTdGF0ZSIsInNldEluaXRpYWxTdGF0ZSIsInNldFN0YXRlIiwiZGlkTW91bnQiLCJ3aW5kb3ciLCJvbktleURvd24iLCJvbkN1c3RvbURyYWdVcCIsIm9uQ3VzdG9tRHJhZ0Rvd24iLCJvbkN1c3RvbURyYWdTdGFydCIsIm9uQ3VzdG9tU3dpcGVVcCIsIm9uQ3VzdG9tU3dpcGVEb3duIiwib25DdXN0b21Td2lwZUxlZnQiLCJvbkN1c3RvbVN3aXBlUmlnaHQiLCJvbkN1c3RvbVBpbmNoTW92ZSIsIm9uQ3VzdG9tUGluY2hTdGFydCIsIm9uQ3VzdG9tU2luZ2xlVGFwIiwib25DdXN0b21Eb3VibGVUYXAiLCJvbkN1c3RvbUZ1bGxTY3JlZW5DaGFuZ2UiLCJlbmFibGVGdWxsU2NyZWVuIiwiZW5hYmxlVG91Y2giLCJ3aWxsVW5tb3VudCIsImRpc2FibGVUb3VjaCIsImRpc2FibGVGdWxsU2NyZWVuIiwib2ZmQ3VzdG9tRHJhZ1VwIiwib2ZmQ3VzdG9tRHJhZ0Rvd24iLCJvZmZDdXN0b21EcmFnU3RhcnQiLCJvZmZDdXN0b21Td2lwZVVwIiwib2ZmQ3VzdG9tU3dpcGVEb3duIiwib2ZmQ3VzdG9tU3dpcGVMZWZ0Iiwib2ZmQ3VzdG9tU3dpcGVSaWdodCIsIm9mZkN1c3RvbVBpbmNoTW92ZSIsIm9mZkN1c3RvbVBpbmNoU3RhcnQiLCJvZmZDdXN0b21Eb3VibGVUYXAiLCJvZmZDdXN0b21TaW5nbGVUYXAiLCJvZmZDdXN0b21GdWxsU2NyZWVuQ2hhbmdlIiwib2ZmS2V5RG93biIsImRpdkRPTUVsZW1lbnRzIiwicHJvcGVydGllcyIsImVsZW1lbnRzRnJvbURPTUVsZW1lbnRzIiwiRGl2IiwicGFyZW50Q29udGV4dCIsImJpbmQiLCJpbml0aWFsaXNlIiwiYXNzaWduQ29udGV4dCIsIkVsZW1lbnQiLCJ0YWdOYW1lIiwiaWdub3JlZFByb3BlcnRpZXMiLCJkZWZhdWx0UHJvcGVydGllcyIsImNsYXNzTmFtZSIsIk9iamVjdCIsImFzc2lnbiIsInByb3RvdHlwZSIsInRvdWNoTWl4aW5zIiwiZnVsbFNjcmVlbk1peGlucyIsIndpdGhTdHlsZSIsImZ1bmMiLCJzZXRUaW1lb3V0Il0sInJhbmdlTWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OyIsIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkE0aEJBOzs7ZUFBQTs7O29FQTFoQnNCO29CQUVDO3lCQUNFOzBCQUMwQzswREFFbkQ7OERBQ0k7d0JBRVU7d0JBQ1U7cUJBRWlEO3lCQUNXOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVwRyxJQUFNLEFBQUVBLGVBQWlCQywrQkFBbUIsQ0FBcENELGNBQ0FFLGlCQU15QkMsbUJBQVEsQ0FOakNELGdCQUNBRSxrQkFLeUJELG1C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
685
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy92aWV3L2Rpdi9vdmVybGF5LmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgd2l0aFN0eWxlIGZyb20gXCJlYXN5LXdpdGgtc3R5bGVcIjsgIC8vL1xuXG5pbXBvcnQgeyB3aW5kb3cgfSBmcm9tIFwiZWFzeVwiO1xuaW1wb3J0IHsga2V5Q29kZXMgfSBmcm9tIFwibmVjZXNzYXJ5XCI7XG5pbXBvcnQgeyB0b3VjaE1peGlucywgZnVsbFNjcmVlbk1peGlucywgZnVsbFNjcmVlblV0aWxpdGllcyB9IGZyb20gXCJlYXN5LW1vYmlsZVwiO1xuXG5pbXBvcnQgRGl2IGZyb20gXCIuLi9kaXZcIjtcbmltcG9ydCBFbGVtZW50IGZyb20gXCIuLi9lbGVtZW50XCI7XG5cbmltcG9ydCB7IHJlc2V0RnJhZ21lbnQgfSBmcm9tIFwiLi4vLi4vdXRpbGl0aWVzL2ZyYWdtZW50XCI7XG5pbXBvcnQgeyBlbGVtZW50c0Zyb21ET01FbGVtZW50cyB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvZWxlbWVudFwiO1xuaW1wb3J0IHsgc2Nyb2xsVG9BbmNob3IsIGZpbmREaXZCeUFuY2hvcklkIH0gZnJvbSBcIi4uLy4uL3V0aWxpdGllcy9lbGVtZW50XCI7XG5pbXBvcnQgeyBnZXRPdmVybGF5Wm9vbSBhcyBnZXRab29tLCBhcmVDb2xvdXJzSW52ZXJ0ZWQsIGFyZU5hdGl2ZUdlc3R1cmVzUmVzdG9yZWQgfSBmcm9tIFwiLi4vLi4vc3RhdGVcIjtcbmltcG9ydCB7IFNDUk9MTF9ERUxBWSwgVVBfRElSRUNUSU9OLCBERUNFTEVSQVRJT04sIERPV05fRElSRUNUSU9OLCBPUEVOX01FTlVfVEFQX0FSRUFfSEVJR0hUIH0gZnJvbSBcIi4uLy4uL2NvbnN0YW50c1wiO1xuXG5jb25zdCB7IGlzRnVsbFNjcmVlbiB9ID0gZnVsbFNjcmVlblV0aWxpdGllcyxcbiAgICAgIHsgRU5URVJfS0VZX0NPREUsXG4gICAgICAgIEVTQ0FQRV9LRVlfQ09ERSxcbiAgICAgICAgQkFDS1NQQUNFX0tFWV9DT0RFLFxuICAgICAgICBBUlJPV19VUF9LRVlfQ09ERSxcbiAgICAgICAgQVJST1dfRE9XTl9LRVlfQ09ERSxcbiAgICAgICAgQVJST1dfTEVGVF9LRVlfQ09ERSxcbiAgICAgICAgQVJST1dfUklHSFRfS0VZX0NPREUgfSA9IGtleUNvZGVzO1xuXG5jbGFzcyBPdmVybGF5RGl2IGV4dGVuZHMgRWxlbWVudCB7XG4gIGZ1bGxTY3JlZW5DaGFuZ2VDdXN0b21IYW5kbGVyID0gKGV2ZW50LCBlbGVtZW50KSA9PiB7XG4gICAgY29udHJvbGxlci51cGRhdGVGdWxsU2NyZWVuKCk7XG5cbiAgICB0aGlzLnVwZGF0ZU92ZXJsYXlab29tKCk7XG4gIH1cblxuICBzaW5nbGVUYXBDdXN0b21IYW5kbGVyID0gKGV2ZW50LCBlbGVtZW50LCB0b3AsIGxlZnQpID0+IHtcbiAgICBjb25zdCBoZWlnaHQgPSB0aGlzLmdldEhlaWdodCgpLFxuICAgICAgICAgIGJvdHRvbSA9IGhlaWdodCAtIHRvcDtcblxuICAgIGlmIChib3R0b20gPCBPUEVOX01FTlVfVEFQX0FSRUFfSEVJR0hUKSB7XG4gICAgICBjb250cm9sbGVyLm9wZW5NZW51KCk7XG4gICAgfVxuICB9XG5cbiAgZG91YmxlVGFwQ3VzdG9tSGFuZGxlciA9IChldmVudCwgZWxlbWVudCwgdG9wLCBsZWZ0KSA9PiB7XG4gICAgY29uc3QgZnVsbFNjcmVlbiA9IGlzRnVsbFNjcmVlbigpO1xuXG4gICAgaWYgKGZ1bGxTY3JlZW4pIHtcbiAgICAgIGNvbnRyb2xsZXIuZXhpdEZ1bGxTY3JlZW4oKTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IG5hdGl2ZUdlc3R1cmVzUmVzdG9yZWQgPSBhcmVOYXRpdmVHZXN0dXJlc1Jlc3RvcmVkKCk7XG5cbiAgICBuYXRpdmVHZXN0dXJlc1Jlc3RvcmVkID9cbiAgICAgIGNvbnRyb2xsZXIuc3VwcHJlc3NOYXRpdmVHZXN0dXJlcygpIDpcbiAgICAgICAgY29udHJvbGxlci5yZXN0b3JlTmF0aXZlR2VzdHVyZXMoKTtcbiAgfVxuXG4gIHBpbmNoU3RhcnRDdXN0b21IYW5kbGVyID0gKGV2ZW50LCBlbGVtZW50KSA9PiB7XG4gICAgY29uc3Qgem9vbSA9IGdldFpvb20oKSxcbiAgICAgICAgICBzdGFydFpvb20gPSB6b29tOyAvLy9cblxuICAgIHRoaXMuc2V0U3RhcnRab29tKHN0YXJ0Wm9vbSk7XG4gIH1cblxuICBwaW5jaE1vdmVDdXN0b21IYW5kbGVyID0gKGV2ZW50LCBlbGVtZW50LCByYXRpbykgPT4ge1xuICAgIGNvbnN0IHN0YXJ0Wm9vbSA9IHRoaXMuZ2V0U3RhcnRab29tKCksXG4gICAgICAgICAgb3ZlcmxheVpvb20gPSBzdGFydFpvb20gKiBNYXRoLnNxcnQocmF0aW8pOyAgLy8vXG5cbiAgICBjb250cm9sbGVyLnpvb21PdmVybGF5KG92ZXJsYXlab29tKTtcbiAgfVxuXG4gIHN3aXBlUmlnaHRDdXN0b21IYW5kbGVyID0gKGV2ZW50LCBlbGVtZW50LCB0b3AsIGxlZnQsIHNwcGVkKSA9PiB7XG4gICAgdGhpcy5zaG93TGVmdERpdigpO1xuICB9XG5cbiAgc3dpcGVMZWZ0Q3VzdG9tSGFuZGxlciA9IChldmVudCwgZWxlbWVudCwgdG9wLCBsZWZ0LCBzcHBlZCkgPT4ge1xuICAgIHRoaXMuc2hvd1JpZ2h0RGl2KCk7XG4gIH1cblxuICBzd2lwZURvd25DdXN0b21IYW5kbGVyID0gKGV2ZW50LCBlbGVtZW50LCB0b3AsIGxlZnQsIHNwZWVkKSA9PiB7XG4gICAgY29uc3QgZGlyZWN0aW9uID0gRE9XTl9ESVJFQ1RJT047XG5cbiAgICB0aGlzLnN0YXJ0U2Nyb2xsaW5nKHNwZWVkLCBkaXJlY3Rpb24pO1xuICB9XG5cbiAgc3dpcGVVcEN1c3RvbUhhbmRsZXIgPSAoZXZlbnQsIGVsZW1lbnQsIHRvcCwgbGVmdCwgc3BlZWQpID0+IHtcbiAgICBjb25zdCBkaXJlY3Rpb24gPSBVUF9ESVJFQ1RJT047XG5cbiAgICB0aGlzLnN0YXJ0U2Nyb2xsaW5nKHNwZWVkLCBkaXJlY3Rpb24pO1xuICB9XG5cbiAgZHJhZ1N0YXJ0Q3VzdG9tSGFuZGxlciA9IChldmVudCwgZWxlbWVudCwgdG9wLCBsZWZ0KSA9PiB7XG4gICAgY29uc3Qgc2Nyb2xsVG9wID0gdGhpcy5nZXRTY3JvbGxUb3AoKSxcbiAgICAgICAgICBzdGFydFNjcm9sbFRvcCA9IHNjcm9sbFRvcDsgLy8vXG5cbiAgICB0aGlzLnNldFN0YXJ0U2Nyb2xsVG9wKHN0YXJ0U2Nyb2xsVG9wKTtcbiAgfVxuXG4gIGRyYWdEb3duQ3VzdG9tSGFuZGxlciA9IChldmVudCwgZWxlbWVudCwgdG9wLCBsZWZ0KSA9PiB7XG4gICAgY29uc3Qgc3RhcnRTY3JvbGxUb3AgPSB0aGlzLmdldFN0YXJ0U2Nyb2xsVG9wKCk7XG5cbiAgICBpZiAoc3RhcnRTY3JvbGxUb3AgPT09IG51bGwpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBzY3JvbGxUb3AgPSBzdGFydFNjcm9sbFRvcCAtIHRvcDtcblxuICAgIHRoaXMuc2V0U2Nyb2xsVG9wKHNjcm9sbFRvcCk7XG4gIH1cblxuICBkcmFnVXBDdXN0b21IYW5kbGVyID0gKGV2ZW50LCBlbGVtZW50LCB0b3AsIGxlZnQpID0+IHtcbiAgICBjb25zdCBzdGFydFNjcm9sbFRvcCA9IHRoaXMuZ2V0U3RhcnRTY3JvbGxUb3AoKTtcblxuICAgIGlmIChzdGFydFNjcm9sbFRvcCA9PT0gbnVsbCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHNjcm9sbFRvcCA9IHN0YXJ0U2Nyb2xsVG9wIC0gdG9wO1xuXG4gICAgdGhpcy5zZXRTY3JvbGxUb3Aoc2Nyb2xsVG9wKTtcbiAgfVxuXG4gIGtleURvd25IYW5kbGVyID0gKGV2ZW50LCBlbGVtZW50KSA9PiB7XG4gICAgY29uc3QgeyBrZXlDb2RlIH0gPSBldmVudDtcblxuICAgIHN3aXRjaCAoa2V5Q29kZSkge1xuICAgICAgY2FzZSBFTlRFUl9LRVlfQ09ERTpcbiAgICAgIGNhc2UgQVJST1dfUklHSFRfS0VZX0NPREU6IHtcbiAgICAgICAgdGhpcy5zaG93UmlnaHREaXYoKTtcblxuICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgICAgY2FzZSBCQUNLU1BBQ0VfS0VZX0NPREU6XG4gICAgICBjYXNlIEFSUk9XX0xFRlRfS0VZX0NPREU6IHtcbiAgICAgICAgdGhpcy5zaG93TGVmdERpdigpO1xuXG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICBjYXNlIEVTQ0FQRV9LRVlfQ09ERToge1xuICAgICAgICBjb25zdCBmdWxsU2NyZWVuID0gaXNGdWxsU2NyZWVuKCk7XG5cbiAgICAgICAgaWYgKGZ1bGxTY3JlZW4pIHtcbiAgICAgICAgICBjb250cm9sbGVyLmV4aXRGdWxsU2NyZWVuKCk7XG4gICAgICAgIH1cblxuICAgICAgICBjb250cm9sbGVyLmNsb3NlTWVudSgpO1xuXG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICBjYXNlIEFSUk9XX1VQX0tFWV9DT0RFOiB7XG4gICAgICAgIHRoaXMuc2hvd0ZpcnN0RGl2KCk7XG5cbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG5cbiAgICAgIGNhc2UgQVJST1dfRE9XTl9LRVlfQ09ERToge1xuICAgICAgICB0aGlzLnNob3dMYXN0RGl2KCk7XG5cbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgc2Nyb2xsVG9BbmNob3IoYW5jaG9ySWQpIHtcbiAgICBsZXQgZGl2O1xuXG4gICAgZGl2ID0gZmluZERpdkJ5QW5jaG9ySWQoYW5jaG9ySWQpO1xuXG4gICAgY29uc3QgbmV4dERpdiA9IGRpdjsgIC8vL1xuXG4gICAgZGl2ID0gdGhpcy5maW5kRGl2KCk7XG5cbiAgICBjb25zdCBwcmV2aW91c0RpdiA9IGRpdjsgIC8vL1xuXG4gICAgY29uc3QgZGl2cyA9IHRoaXMuZ2V0RGl2cygpLFxuICAgICAgICAgIG5leHRJbmRleCA9IGRpdnMuaW5kZXhPZihuZXh0RGl2KSwgIC8vL1xuICAgICAgICAgIHByZXZpb3VzSW5kZXggPSBkaXZzLmluZGV4T2YocHJldmlvdXNEaXYpOyAgLy8vXG5cbiAgICB0aGlzLnNob3dOZXh0RGl2KG5leHRJbmRleCwgcHJldmlvdXNJbmRleCwgKCkgPT4ge1xuICAgICAgc2Nyb2xsVG9BbmNob3IoYW5jaG9ySWQpO1xuICAgIH0pO1xuICB9XG5cbiAgc2Nyb2xsVG9Ub3AoKSB7XG4gICAgY29uc3Qgc2Nyb2xsVG9wID0gMDtcblxuICAgIHRoaXMuc2V0U2Nyb2xsVG9wKHNjcm9sbFRvcCk7XG4gIH1cblxuICBzdG9wU2Nyb2xsaW5nKCkge1xuICAgIGxldCBpbnRlcnZhbCA9IHRoaXMuZ2V0SW50ZXJ2YWwoKTtcblxuICAgIGlmIChpbnRlcnZhbCAhPT0gbnVsbCkge1xuICAgICAgY2xlYXJJbnRlcnZhbChpbnRlcnZhbCk7XG5cbiAgICAgIGludGVydmFsID0gbnVsbDtcblxuICAgICAgdGhpcy5zZXRJbnRlcnZhbChpbnRlcnZhbCk7XG4gICAgfVxuICB9XG5cbiAgc3RhcnRTY3JvbGxpbmcoc3BlZWQsIGRpcmVjdGlvbikge1xuICAgIGxldCBzY3JvbGxUb3AgPSB0aGlzLmdldFNjcm9sbFRvcCgpO1xuXG4gICAgc2Nyb2xsVG9wICs9IHNwZWVkICogU0NST0xMX0RFTEFZO1xuXG4gICAgdGhpcy5zZXRTY3JvbGxUb3Aoc2Nyb2xsVG9wKTtcblxuICAgIGxldCBpbnRlcnZhbCA9IHRoaXMuZ2V0SW50ZXJ2YWwoKTtcblxuICAgIGlmIChpbnRlcnZhbCAhPT0gbnVsbCkge1xuICAgICAgY2xlYXJJbnRlcnZhbChpbnRlcnZhbCk7XG4gICAgfVxuXG4gICAgaW50ZXJ2YWwgPSBzZXRJbnRlcnZhbCgoKSA9PiB7XG4gICAgICBzcGVlZCA9IHNwZWVkIC0gZGlyZWN0aW9uICogREVDRUxFUkFUSU9OO1xuXG4gICAgICBpZiAoKHNwZWVkICogZGlyZWN0aW9uKSA8IDApIHtcbiAgICAgICAgY2xlYXJJbnRlcnZhbChpbnRlcnZhbCk7XG5cbiAgICAgICAgaW50ZXJ2YWwgPSBudWxsO1xuXG4gICAgICAgIHRoaXMuc2V0SW50ZXJ2YWwoaW50ZXJ2YWwpO1xuICAgICAgfVxuXG4gICAgICBsZXQgc2Nyb2xsVG9wID0gdGhpcy5nZXRTY3JvbGxUb3AoKTtcblxuICAgICAgc2Nyb2xsVG9wICs9IHNwZWVkICogU0NST0xMX0RFTEFZO1xuXG4gICAgICB0aGlzLnNldFNjcm9sbFRvcChzY3JvbGxUb3ApO1xuICAgIH0sIFNDUk9MTF9ERUxBWSk7XG5cbiAgICB0aGlzLnNldEludGVydmFsKGludGVydmFsKTtcbiAgfVxuXG4gIGVudGVyRnVsbFNjcmVlbigpIHtcbiAgICB0aGlzLnJlcXVlc3RGdWxsU2NyZWVuKCk7XG4gIH1cblxuICB1cGRhdGVPdmVybGF5Wm9vbSgpIHtcbiAgICBjb25zdCBkaXYgPSB0aGlzLmZpbmREaXYoKSxcbiAgICAgICAgICB6b29tID0gZ2V0Wm9vbSgpO1xuXG4gICAgZGl2Lnpvb20oem9vbSk7XG4gIH1cblxuICB1cGRhdGVPdmVybGF5Q29sb3VycygpIHtcbiAgICBjb25zdCBjb2xvdXJzSW52ZXJ0ZWQgPSBhcmVDb2xvdXJzSW52ZXJ0ZWQoKTtcblxuICAgIGNvbG91cnNJbnZlcnRlZCA/XG4gICAgICB0aGlzLmFkZENsYXNzKFwiaW52ZXJ0ZWQtY29sb3Vyc1wiKSA6XG4gICAgICAgIHRoaXMucmVtb3ZlQ2xhc3MoXCJpbnZlcnRlZC1jb2xvdXJzXCIpO1xuICB9XG5cbiAgdXBkYXRlTmF0aXZlR2VzdHVyZXMoKSB7XG4gICAgY29uc3QgbmF0aXZlR2VzdHVyZXNSZXN0b3JlZCA9IGFyZU5hdGl2ZUdlc3R1cmVzUmVzdG9yZWQoKTtcblxuICAgIG5hdGl2ZUdlc3R1cmVzUmVzdG9yZWQgP1xuICAgICAgdGhpcy5hZGRDbGFzcyhcIm5hdGl2ZS1nZXN0dXJlc1wiKSA6XG4gICAgICAgIHRoaXMucmVtb3ZlQ2xhc3MoXCJuYXRpdmUtZ2VzdHVyZXNcIik7XG5cbiAgICBuYXRpdmVHZXN0dXJlc1Jlc3RvcmVkID9cbiAgICAgIHRoaXMuZGlzYWJsZUN1c3RvbUdlc3R1cmVzKCkgOlxuICAgICAgICB0aGlzLmVuYWJsZUN1c3RvbUdlc3R1cmVzKCk7XG4gIH1cblxuICBlbmFibGVDdXN0b21HZXN0dXJlcygpIHtcbiAgICBsZXQgbmF0aXZlR2VzdHVyZWRFbmFibGVkID0gdGhpcy5hcmVOYXRpdmVHZXN0dXJlc0VuYWJsZWQoKTtcblxuICAgIGlmIChuYXRpdmVHZXN0dXJlZEVuYWJsZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLm9uQ3VzdG9tRHJhZ1VwKHRoaXMuZHJhZ1VwQ3VzdG9tSGFuZGxlcik7XG4gICAgdGhpcy5vbkN1c3RvbURyYWdEb3duKHRoaXMuZHJhZ0Rvd25DdXN0b21IYW5kbGVyKTtcbiAgICB0aGlzLm9uQ3VzdG9tRHJhZ1N0YXJ0KHRoaXMuZHJhZ1N0YXJ0Q3VzdG9tSGFuZGxlcik7XG4gICAgdGhpcy5vbkN1c3RvbVN3aXBlVXAodGhpcy5zd2lwZVVwQ3VzdG9tSGFuZGxlcik7XG4gICAgdGhpcy5vbkN1c3RvbVN3aXBlRG93bih0aGlzLnN3aXBlRG93bkN1c3RvbUhhbmRsZXIpO1xuICAgIHRoaXMub25DdXN0b21Td2lwZUxlZnQodGhpcy5zd2lwZUxlZnRDdXN0b21IYW5kbGVyKTtcbiAgICB0aGlzLm9uQ3VzdG9tU3dpcGVSaWdodCh0aGlzLnN3aXBlUmlnaHRDdXN0b21IYW5kbGVyKTtcbiAgICB0aGlzLm9uQ3VzdG9tUGluY2hNb3ZlKHRoaXMucGluY2hNb3ZlQ3VzdG9tSGFuZGxlcik7XG4gICAgdGhpcy5vbkN1c3RvbVBpbmNoU3RhcnQodGhpcy5waW5jaFN0YXJ0Q3VzdG9tSGFuZGxlcik7XG4gICAgdGhpcy5vbkN1c3RvbURvdWJsZVRhcCh0aGlzLmRvdWJsZVRhcEN1c3RvbUhhbmRsZXIpO1xuXG4gICAgbmF0aXZlR2VzdHVyZWRFbmFibGVkID0gdHJ1ZTtcblxuICAgIHRoaXMuc2V0TmF0aXZlR2VzdHVyZXNFbmFibGVkKG5hdGl2ZUdlc3R1cmVkRW5hYmxlZCk7XG4gIH1cblxuICBkaXNhYmxlQ3VzdG9tR2VzdHVyZXMoKSB7XG4gICAgbGV0IG5hdGl2ZUdlc3R1cmVkRW5hYmxlZCA9IHRoaXMuYXJlTmF0aXZlR2VzdHVyZXNFbmFibGVkKCk7XG5cbiAgICBpZiAoIW5hdGl2ZUdlc3R1cmVkRW5hYmxlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMub2ZmQ3VzdG9tRHJhZ1VwKHRoaXMuZHJhZ1VwQ3VzdG9tSGFuZGxlcik7XG4gICAgdGhpcy5vZmZDdXN0b21EcmFnRG93bih0aGlzLmRyYWdEb3duQ3VzdG9tSGFuZGxlcik7XG4gICAgdGhpcy5vZmZDdXN0b21EcmFnU3RhcnQodGhpcy5kcmFnU3RhcnRDdXN0b21IYW5kbGVyKTtcbiAgICB0aGlzLm9mZkN1c3RvbVN3aXBlVXAodGhpcy5zd2lwZVVwQ3VzdG9tSGFuZGxlcik7XG4gICAgdGhpcy5vZmZDdXN0b21Td2lwZURvd24odGhpcy5zd2lwZURvd25DdXN0b21IYW5kbGVyKTtcbiAgICB0aGlzLm9mZkN1c3RvbVN3aXBlTGVmdCh0aGlzLnN3aXBlTGVmdEN1c3RvbUhhbmRsZXIpO1xuICAgIHRoaXMub2ZmQ3VzdG9tU3dpcGVSaWdodCh0aGlzLnN3aXBlUmlnaHRDdXN0b21IYW5kbGVyKTtcbiAgICB0aGlzLm9mZkN1c3RvbVBpbmNoTW92ZSh0aGlzLnBpbmNoTW92ZUN1c3RvbUhhbmRsZXIpO1xuICAgIHRoaXMub2ZmQ3VzdG9tUGluY2hTdGFydCh0aGlzLnBpbmNoU3RhcnRDdXN0b21IYW5kbGVyKTtcbiAgICB0aGlzLm9mZkN1c3RvbURvdWJsZVRhcCh0aGlzLmRvdWJsZVRhcEN1c3RvbUhhbmRsZXIpO1xuXG4gICAgbmF0aXZlR2VzdHVyZWRFbmFibGVkID0gZmFsc2U7XG5cbiAgICB0aGlzLnNldE5hdGl2ZUdlc3R1cmVzRW5hYmxlZChuYXRpdmVHZXN0dXJlZEVuYWJsZWQpO1xuICB9XG5cbiAgYXJlTmF0aXZlR2VzdHVyZXNSZXN0b3JlZCgpIHtcbiAgICBjb25zdCBuYXRpdmVHZXN0dXJlc1Jlc3RvcmVkID0gdGhpcy5oYXNDbGFzcyhcIm5hdGl2ZS1nZXN0dXJlc1wiKTtcblxuICAgIHJldHVybiBuYXRpdmVHZXN0dXJlc1Jlc3RvcmVkO1xuICB9XG5cbiAgc2hvd1JpZ2h0RGl2KCkge1xuICAgIGNvbnN0IGRpdiA9IHRoaXMuZmluZERpdigpLFxuICAgICAgICAgIGRpdnMgPSB0aGlzLmdldERpdnMoKSxcbiAgICAgICAgICBkaXZzTGVuZ3RoID0gZGl2cy5sZW5ndGgsXG4gICAgICAgICAgaW5kZXggPSBkaXZzLmluZGV4T2YoZGl2KSxcbiAgICAgICAgICBuZXh0SW5kZXggPSBpbmRleCArIDEsXG4gICAgICAgICAgcHJldmlvdXNJbmRleCA9IGluZGV4OyAgLy8vXG5cbiAgICBpZiAobmV4dEluZGV4ID09PSBkaXZzTGVuZ3RoKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5zaG93TmV4dERpdihuZXh0SW5kZXgsIHByZXZpb3VzSW5kZXgpO1xuICB9XG5cbiAgc2hvd0xlZnREaXYoKSB7XG4gICAgY29uc3QgZGl2ID0gdGhpcy5maW5kRGl2KCksXG4gICAgICAgICAgZGl2cyA9IHRoaXMuZ2V0RGl2cygpLFxuICAgICAgICAgIGluZGV4ID0gZGl2cy5pbmRleE9mKGRpdiksXG4gICAgICAgICAgbmV4dEluZGV4ID0gaW5kZXggLSAxLFxuICAgICAgICAgIHByZXZpb3VzSW5kZXggPSBpbmRleDsgIC8vL1xuXG4gICAgaWYgKG5leHRJbmRleCA9PT0gLTEpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnNob3dOZXh0RGl2KG5leHRJbmRleCwgcHJldmlvdXNJbmRleCk7XG4gIH1cblxuICBzaG93TGFzdERpdigpIHtcbiAgICBjb25zdCBkaXYgPSB0aGlzLmZpbmREaXYoKSxcbiAgICAgICAgICBkaXZzID0gdGhpcy5nZXREaXZzKCksXG4gICAgICAgICAgZGl2c0xlbmd0aCA9IGRpdnMubGVuZ3RoLFxuICAgICAgICAgIGluZGV4ID0gKGRpdiA9PT0gbnVsbCkgP1xuICAgICAgICAgICAgICAgICAgICAtMSA6XG4gICAgICAgICAgICAgICAgICAgICAgZGl2cy5pbmRleE9mKGRpdiksXG4gICAgICAgICAgbmV4dEluZGV4ID0gZGl2c0xlbmd0aCAtIDEsXG4gICAgICAgICAgcHJldmlvdXNJbmRleCA9IGluZGV4OyAgLy8vXG5cbiAgICBpZiAobmV4dEluZGV4ID09PSBwcmV2aW91c0luZGV4KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5zaG93TmV4dERpdihuZXh0SW5kZXgsIHByZXZpb3VzSW5kZXgpO1xuICB9XG5cbiAgc2hvd0ZpcnN0RGl2KCkge1xuICAgIGNvbnN0IGRpdiA9IHRoaXMuZmluZERpdigpLFxuICAgICAgICAgIGRpdnMgPSB0aGlzLmdldERpdnMoKSxcbiAgICAgICAgICBpbmRleCA9IChkaXYgPT09IG51bGwpID9cbiAgICAgICAgICAgICAgICAgICAgLTEgOlxuICAgICAgICAgICAgICAgICAgICAgIGRpdnMuaW5kZXhPZihkaXYpLFxuICAgICAgICAgIG5leHRJbmRleCA9IDAsXG4gICAgICAgICAgcHJldmlvdXNJbmRleCA9IGluZGV4OyAgLy8vXG5cbiAgICBpZiAobmV4dEluZGV4ID09PSBwcmV2aW91c0luZGV4KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5zaG93TmV4dERpdihuZXh0SW5kZXgsIHByZXZpb3VzSW5kZXgpO1xuICB9XG5cbiAgc2hvd05leHREaXYobmV4dEluZGV4LCBwcmV2aW91c0luZGV4LCBkb25lID0gKCkgPT4ge30pIHtcbiAgICByZXNldEZyYWdtZW50KCk7XG5cbiAgICBjb25zdCBkaXZzID0gdGhpcy5nZXREaXZzKCk7XG5cbiAgICBpZiAocHJldmlvdXNJbmRleCAhPT0gLTEpIHtcbiAgICAgIGNvbnN0IHByZXZpb3VzRGl2ID0gZGl2c1twcmV2aW91c0luZGV4XTtcblxuICAgICAgcHJldmlvdXNEaXYuaGlkZSgpO1xuICAgIH1cblxuICAgIGNvbnN0IHpvb20gPSBnZXRab29tKCksXG4gICAgICAgICAgbmV4dERpdiA9IGRpdnNbbmV4dEluZGV4XTtcblxuICAgIHRoaXMuc3RvcFNjcm9sbGluZygpO1xuXG4gICAgdGhpcy5zY3JvbGxUb1RvcCgpO1xuXG4gICAgbmV4dERpdi56b29tKHpvb20pO1xuXG4gICAgbmV4dERpdi5zaG93KCk7XG5cbiAgICBkZWZlcigoKSA9PiB7XG4gICAgICBjb25zdCBiYWNrZ3JvdW5kQ29sb3VyID0gbmV4dERpdi5nZXRCYWNrZ3JvdW5kQ29sb3VyKCk7XG5cbiAgICAgIHRoaXMuc2V0QmFja2dyb3VuZENvbG91cihiYWNrZ3JvdW5kQ29sb3VyKTtcblxuICAgICAgZG9uZSgpO1xuICAgIH0pO1xuICB9XG5cbiAgc2V0QmFja2dyb3VuZENvbG91cihiYWNrZ3JvdW5kQ29sb3VyKSB7XG4gICAgY29uc3QgYmFja2dyb3VuZENvbG9yID0gYmFja2dyb3VuZENvbG91ciwgLy8vXG4gICAgICAgICAgY3NzID0ge1xuICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yXG4gICAgICAgICAgfTtcblxuICAgIHRoaXMuY3NzKGNzcyk7XG4gIH1cblxuICBmaW5kRGl2KCkge1xuICAgIGNvbnN0IGRpdnMgPSB0aGlzLmdldERpdnMoKSxcbiAgICAgICAgICBkaXYgPSBkaXZzLmZpbmQoKGRpdikgPT4ge1xuICAgICAgICAgICAgY29uc3Qgc2hvd2luZyA9IGRpdi5pc1Nob3dpbmcoKTtcblxuICAgICAgICAgICAgaWYgKHNob3dpbmcpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSkgfHwgbnVsbDtcblxuICAgIHJldHVybiBkaXY7XG4gIH1cblxuICBnZXREaXZzKCkge1xuICAgIGNvbnN0IGNoaWxkRWxlbWVudHMgPSB0aGlzLmdldENoaWxkRWxlbWVudHMoKSxcbiAgICAgICAgICBkaXZzID0gY2hpbGRFbGVtZW50czsgLy8vXG5cbiAgICByZXR1cm4gZGl2cztcbiAgfVxuXG4gIGdldEludGVydmFsKCkge1xuICAgIGNvbnN0IHsgaW50ZXJ2YWwgfSA9IHRoaXMuZ2V0U3RhdGUoKTtcblxuICAgIHJldHVybiBpbnRlcnZhbDtcbiAgfVxuXG4gIHNldEludGVydmFsKGludGVydmFsKSB7XG4gICAgdGhpcy51cGRhdGVTdGF0ZSh7XG4gICAgICBpbnRlcnZhbFxuICAgIH0pO1xuICB9XG5cbiAgZ2V0U3RhcnRab29tKCkge1xuICAgIGNvbnN0IHsgc3RhcnRab29tIH0gPSB0aGlzLmdldFN0YXRlKCk7XG5cbiAgICByZXR1cm4gc3RhcnRab29tO1xuICB9XG5cbiAgc2V0U3RhcnRab29tKHN0YXJ0Wm9vbSkge1xuICAgIHRoaXMudXBkYXRlU3RhdGUoe1xuICAgICAgc3RhcnRab29tXG4gICAgfSk7XG4gIH1cblxuICBnZXRTdGFydFNjcm9sbFRvcCgpIHtcbiAgICBjb25zdCB7IHN0YXJ0U2Nyb2xsVG9wIH0gPSB0aGlzLmdldFN0YXRlKCk7XG5cbiAgICByZXR1cm4gc3RhcnRTY3JvbGxUb3A7XG4gIH1cblxuICBzZXRTdGFydFNjcm9sbFRvcChzdGFydFNjcm9sbFRvcCkge1xuICAgIHRoaXMudXBkYXRlU3RhdGUoe1xuICAgICAgc3RhcnRTY3JvbGxUb3BcbiAgICB9KTtcbiAgfVxuXG4gIGFyZU5hdGl2ZUdlc3R1cmVzRW5hYmxlZCgpIHtcbiAgICBjb25zdCB7IG5hdGl2ZUdlc3R1cmVzRW5hYmxlZCB9ID0gdGhpcy5nZXRTdGF0ZSgpO1xuXG4gICAgcmV0dXJuIG5hdGl2ZUdlc3R1cmVzRW5hYmxlZDtcbiAgfVxuXG4gIHNldE5hdGl2ZUdlc3R1cmVzRW5hYmxlZChuYXRpdmVHZXN0dXJlc0VuYWJsZWQpIHtcbiAgICB0aGlzLnVwZGF0ZVN0YXRlKHtcbiAgICAgIG5hdGl2ZUdlc3R1cmVzRW5hYmxlZFxuICAgIH0pO1xuICB9XG5cbiAgc2V0SW5pdGlhbFN0YXRlKCkge1xuICAgIGNvbnN0IGludGVydmFsID0gbnVsbCxcbiAgICAgICAgICBzdGFydFpvb20gPSBudWxsLFxuICAgICAgICAgIHN0YXJ0U2Nyb2xsVG9wID0gbnVsbCxcbiAgICAgICAgICBuYXRpdmVHZXN0dXJlc0VuYWJsZWQgPSBmYWxzZTtcblxuICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgaW50ZXJ2YWwsXG4gICAgICBzdGFydFpvb20sXG4gICAgICBzdGFydFNjcm9sbFRvcCxcbiAgICAgIG5hdGl2ZUdlc3R1cmVzRW5hYmxlZFxuICAgIH0pO1xuICB9XG5cbiAgZGlkTW91bnQoKSB7XG4gICAgd2luZG93Lm9uS2V5RG93bih0aGlzLmtleURvd25IYW5kbGVyKTtcblxuICAgIHRoaXMub25DdXN0b21TaW5nbGVUYXAodGhpcy5zaW5nbGVUYXBDdXN0b21IYW5kbGVyKTtcblxuICAgIHRoaXMub25DdXN0b21GdWxsU2NyZWVuQ2hhbmdlKHRoaXMuZnVsbFNjcmVlbkNoYW5nZUN1c3RvbUhhbmRsZXIpO1xuXG4gICAgdGhpcy5lbmFibGVGdWxsU2NyZWVuKCk7XG5cbiAgICB0aGlzLmVuYWJsZVRvdWNoKCk7XG4gIH1cblxuICB3aWxsVW5tb3VudCgpIHtcbiAgICB0aGlzLmRpc2FibGVUb3VjaCgpO1xuXG4gICAgdGhpcy5kaXNhYmxlRnVsbFNjcmVlbigpO1xuXG4gICAgdGhpcy5vZmZDdXN0b21GdWxsU2NyZWVuQ2hhbmdlKHRoaXMuZnVsbFNjcmVlbkNoYW5nZUN1c3RvbUhhbmRsZXIpO1xuXG4gICAgdGhpcy5vZmZDdXN0b21TaW5nbGVUYXAodGhpcy5zaW5nbGVUYXBDdXN0b21IYW5kbGVyKTtcblxuICAgIHdpbmRvdy5vZmZLZXlEb3duKHRoaXMua2V5RG93bkhhbmRsZXIpO1xuICB9XG5cbiAgY2hpbGRFbGVtZW50cygpIHtcbiAgICBjb25zdCB7IGRpdkRPTUVsZW1lbnRzIH0gPSB0aGlzLnByb3BlcnRpZXMsXG4gICAgICAgICAgZGl2cyA9IGVsZW1lbnRzRnJvbURPTUVsZW1lbnRzKGRpdkRPTUVsZW1lbnRzLCBEaXYpLFxuICAgICAgICAgIGNoaWxkRWxlbWVudHMgPSBbXG4gICAgICAgICAgICAuLi5kaXZzXG4gICAgICAgICAgXTtcblxuICAgIHJldHVybiBjaGlsZEVsZW1lbnRzO1xuICB9XG5cbiAgcGFyZW50Q29udGV4dCgpIHtcbiAgICBjb25zdCBzaG93Rmlyc3REaXYgPSB0aGlzLnNob3dGaXJzdERpdi5iaW5kKHRoaXMpLFxuICAgICAgICAgIHNjcm9sbFRvQW5jaG9yID0gdGhpcy5zY3JvbGxUb0FuY2hvci5iaW5kKHRoaXMpLFxuICAgICAgICAgIGV4aXRGdWxsU2NyZWVuID0gdGhpcy5leGl0RnVsbFNjcmVlbi5iaW5kKHRoaXMpLFxuICAgICAgICAgIGVudGVyRnVsbFNjcmVlbiA9IHRoaXMuZW50ZXJGdWxsU2NyZWVuLmJpbmQodGhpcyksXG4gICAgICAgICAgdXBkYXRlT3ZlcmxheVpvb20gPSB0aGlzLnVwZGF0ZU92ZXJsYXlab29tLmJpbmQodGhpcyksXG4gICAgICAgICAgdXBkYXRlT3ZlcmxheUNvbG91cnMgPSB0aGlzLnVwZGF0ZU92ZXJsYXlDb2xvdXJzLmJpbmQodGhpcyksXG4gICAgICAgICAgdXBkYXRlTmF0aXZlR2VzdHVyZXMgPSB0aGlzLnVwZGF0ZU5hdGl2ZUdlc3R1cmVzLmJpbmQodGhpcyk7XG5cbiAgICByZXR1cm4gKHtcbiAgICAgIHNob3dGaXJzdERpdixcbiAgICAgIHNjcm9sbFRvQW5jaG9yLFxuICAgICAgZXhpdEZ1bGxTY3JlZW4sXG4gICAgICBlbnRlckZ1bGxTY3JlZW4sXG4gICAgICB1cGRhdGVPdmVybGF5Wm9vbSxcbiAgICAgIHVwZGF0ZU92ZXJsYXlDb2xvdXJzLFxuICAgICAgdXBkYXRlTmF0aXZlR2VzdHVyZXNcbiAgICB9KTtcbiAgfVxuXG4gIGluaXRpYWxpc2UoKSB7XG4gICAgdGhpcy5hc3NpZ25Db250ZXh0KCk7XG5cbiAgICB0aGlzLnNldEluaXRpYWxTdGF0ZSgpO1xuICB9XG5cbiAgc3RhdGljIHRhZ05hbWUgPSBcImRpdlwiO1xuXG4gIHN0YXRpYyBpZ25vcmVkUHJvcGVydGllcyA9IFtcbiAgICBcImRpdkRPTUVsZW1lbnRzXCJcbiAgXTtcblxuICBzdGF0aWMgZGVmYXVsdFByb3BlcnRpZXMgPSB7XG4gICAgY2xhc3NOYW1lOiBcIm92ZXJsYXlcIlxuICB9O1xufVxuXG5PYmplY3QuYXNzaWduKE92ZXJsYXlEaXYucHJvdG90eXBlLCB0b3VjaE1peGlucyk7XG5PYmplY3QuYXNzaWduKE92ZXJsYXlEaXYucHJvdG90eXBlLCBmdWxsU2NyZWVuTWl4aW5zKTtcblxuZXhwb3J0IGRlZmF1bHQgd2l0aFN0eWxlKE92ZXJsYXlEaXYpYFxuICBcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogMTAwJTtcblxuICBvdmVyZmxvdzogaGlkZGVuO1xuICB0b3VjaC1hY3Rpb246IG5vbmU7XG4gICAgXG4gIC5uYXRpdmUtZ2VzdHVyZXMge1xuICAgIG92ZXJmbG93OiBzY3JvbGw7XG4gICAgdG91Y2gtYWN0aW9uOiBhdXRvO1xuICB9XG4gIFxuICAuaW52ZXJ0ZWQtY29sb3VycyB7XG4gICAgZmlsdGVyOiBpbnZlcnQoMSk7XG4gIH1cbiAgICBcbmA7XG5cbmZ1bmN0aW9uIGRlZmVyKGZ1bmMpIHtcbiAgc2V0VGltZW91dChmdW5jLCAwKTtcbn1cbiJdLCJuYW1lcyI6WyJpc0Z1bGxTY3JlZW4iLCJmdWxsU2NyZWVuVXRpbGl0aWVzIiwiRU5URVJfS0VZX0NPREUiLCJrZXlDb2RlcyIsIkVTQ0FQRV9LRVlfQ09ERSIsIkJBQ0tTUEFDRV9LRVlfQ09ERSIsIkFSUk9XX1VQX0tFWV9DT0RFIiwiQVJST1dfRE9XTl9LRVlfQ09ERSIsIkFSUk9XX0xFRlRfS0VZX0NPREUiLCJBUlJPV19SSUdIVF9LRVlfQ09ERSIsIk92ZXJsYXlEaXYiLCJmdWxsU2NyZWVuQ2hhbmdlQ3VzdG9tSGFuZGxlciIsImV2ZW50IiwiZWxlbWVudCIsImNvbnRyb2xsZXIiLCJ1cGRhdGVGdWxsU2NyZWVuIiwidXBkYXRlT3ZlcmxheVpvb20iLCJzaW5nbGVUYXBDdXN0b21IYW5kbGVyIiwidG9wIiwibGVmdCIsImhlaWdodCIsImdldEhlaWdodCIsImJvdHRvbSIsIk9QRU5fTUVOVV9UQVBfQVJFQV9IRUlHSFQiLCJvcGVuTWVudSIsImRvdWJsZVRhcEN1c3RvbUhhbmRsZXIiLCJmdWxsU2NyZWVuIiwiZXhpdEZ1bGxTY3JlZW4iLCJuYXRpdmVHZXN0dXJlc1Jlc3RvcmVkIiwiYXJlTmF0aXZlR2VzdHVyZXNSZXN0b3JlZCIsInN1cHByZXNzTmF0aXZlR2VzdHVyZXMiLCJyZXN0b3JlTmF0aXZlR2VzdHVyZXMiLCJwaW5jaFN0YXJ0Q3VzdG9tSGFuZGxlciIsInpvb20iLCJnZXRab29tIiwic3RhcnRab29tIiwic2V0U3RhcnRab29tIiwicGluY2hNb3ZlQ3VzdG9tSGFuZGxlciIsInJhdGlvIiwiZ2V0U3RhcnRab29tIiwib3ZlcmxheVpvb20iLCJNYXRoIiwic3FydCIsInpvb21PdmVybGF5Iiwic3dpcGVSaWdodEN1c3RvbUhhbmRsZXIiLCJzcHBlZCIsInNob3dMZWZ0RGl2Iiwic3dpcGVMZWZ0Q3VzdG9tSGFuZGxlciIsInNob3dSaWdodERpdiIsInN3aXBlRG93bkN1c3RvbUhhbmRsZXIiLCJzcGVlZCIsImRpcmVjdGlvbiIsIkRPV05fRElSRUNUSU9OIiwic3RhcnRTY3JvbGxpbmciLCJzd2lwZVVwQ3VzdG9tSGFuZGxlciIsIlVQX0RJUkVDVElPTiIsImRyYWdTdGFydEN1c3RvbUhhbmRsZXIiLCJzY3JvbGxUb3AiLCJnZXRTY3JvbGxUb3AiLCJzdGFydFNjcm9sbFRvcCIsInNldFN0YXJ0U2Nyb2xsVG9wIiwiZHJhZ0Rvd25DdXN0b21IYW5kbGVyIiwiZ2V0U3RhcnRTY3JvbGxUb3AiLCJzZXRTY3JvbGxUb3AiLCJkcmFnVXBDdXN0b21IYW5kbGVyIiwia2V5RG93bkhhbmRsZXIiLCJrZXlDb2RlIiwiY2xvc2VNZW51Iiwic2hvd0ZpcnN0RGl2Iiwic2hvd0xhc3REaXYiLCJzY3JvbGxUb0FuY2hvciIsImFuY2hvcklkIiwiZGl2IiwiZmluZERpdkJ5QW5jaG9ySWQiLCJuZXh0RGl2IiwiZmluZERpdiIsInByZXZpb3VzRGl2IiwiZGl2cyIsImdldERpdnMiLCJuZXh0SW5kZXgiLCJpbmRleE9mIiwicHJldmlvdXNJbmRleCIsInNob3dOZXh0RGl2Iiwic2Nyb2xsVG9Ub3AiLCJzdG9wU2Nyb2xsaW5nIiwiaW50ZXJ2YWwiLCJnZXRJbnRlcnZhbCIsImNsZWFySW50ZXJ2YWwiLCJzZXRJbnRlcnZhbCIsIlNDUk9MTF9ERUxBWSIsIkRFQ0VMRVJBVElPTiIsImVudGVyRnVsbFNjcmVlbiIsInJlcXVlc3RGdWxsU2NyZWVuIiwidXBkYXRlT3ZlcmxheUNvbG91cnMiLCJjb2xvdXJzSW52ZXJ0ZWQiLCJhcmVDb2xvdXJzSW52ZXJ0ZWQiLCJhZGRDbGFzcyIsInJlbW92ZUNsYXNzIiwidXBkYXRlTmF0aXZlR2VzdHVyZXMiLCJkaXNhYmxlQ3VzdG9tR2VzdHVyZXMiLCJlbmFibGVDdXN0b21HZXN0dXJlcyIsIm5hdGl2ZUdlc3R1cmVkRW5hYmxlZCIsImFyZU5hdGl2ZUdlc3R1cmVzRW5hYmxlZCIsIm9uQ3VzdG9tRHJhZ1VwIiwib25DdXN0b21EcmFnRG93biIsIm9uQ3VzdG9tRHJhZ1N0YXJ0Iiwib25DdXN0b21Td2lwZVVwIiwib25DdXN0b21Td2lwZURvd24iLCJvbkN1c3RvbVN3aXBlTGVmdCIsIm9uQ3VzdG9tU3dpcGVSaWdodCIsIm9uQ3VzdG9tUGluY2hNb3ZlIiwib25DdXN0b21QaW5jaFN0YXJ0Iiwib25DdXN0b21Eb3VibGVUYXAiLCJzZXROYXRpdmVHZXN0dXJlc0VuYWJsZWQiLCJvZmZDdXN0b21EcmFnVXAiLCJvZmZDdXN0b21EcmFnRG93biIsIm9mZkN1c3RvbURyYWdTdGFydCIsIm9mZkN1c3RvbVN3aXBlVXAiLCJvZmZDdXN0b21Td2lwZURvd24iLCJvZmZDdXN0b21Td2lwZUxlZnQiLCJvZmZDdXN0b21Td2lwZVJpZ2h0Iiwib2ZmQ3VzdG9tUGluY2hNb3ZlIiwib2ZmQ3VzdG9tUGluY2hTdGFydCIsIm9mZkN1c3RvbURvdWJsZVRhcCIsImhhc0NsYXNzIiwiZGl2c0xlbmd0aCIsImxlbmd0aCIsImluZGV4IiwiZG9uZSIsInJlc2V0RnJhZ21lbnQiLCJoaWRlIiwic2hvdyIsImRlZmVyIiwiYmFja2dyb3VuZENvbG91ciIsImdldEJhY2tncm91bmRDb2xvdXIiLCJzZXRCYWNrZ3JvdW5kQ29sb3VyIiwiYmFja2dyb3VuZENvbG9yIiwiY3NzIiwiZmluZCIsInNob3dpbmciLCJpc1Nob3dpbmciLCJjaGlsZEVsZW1lbnRzIiwiZ2V0Q2hpbGRFbGVtZW50cyIsImdldFN0YXRlIiwidXBkYXRlU3RhdGUiLCJuYXRpdmVHZXN0dXJlc0VuYWJsZWQiLCJzZXRJbml0aWFsU3RhdGUiLCJzZXRTdGF0ZSIsImRpZE1vdW50Iiwid2luZG93Iiwib25LZXlEb3duIiwib25DdXN0b21TaW5nbGVUYXAiLCJvbkN1c3RvbUZ1bGxTY3JlZW5DaGFuZ2UiLCJlbmFibGVGdWxsU2NyZWVuIiwiZW5hYmxlVG91Y2giLCJ3aWxsVW5tb3VudCIsImRpc2FibGVUb3VjaCIsImRpc2FibGVGdWxsU2NyZWVuIiwib2ZmQ3VzdG9tRnVsbFNjcmVlbkNoYW5nZSIsIm9mZkN1c3RvbVNpbmdsZVRhcCIsIm9mZktleURvd24iLCJkaXZET01FbGVtZW50cyIsInByb3BlcnRpZXMiLCJlbGVtZW50c0Zyb21ET01FbGVtZW50cyIsIkRpdiIsInBhcmVudENvbnRleHQiLCJiaW5kIiwiaW5pdGlhbGlzZSIsImFzc2lnbkNvbnRleHQiLCJFbGVtZW50IiwidGFnTmFtZSIsImlnbm9yZWRQcm9wZXJ0aWVzIiwiZGVmYXVsdFByb3BlcnRpZXMiLCJjbGFzc05hbWUiLCJPYmplY3QiLCJhc3NpZ24iLCJwcm90b3R5cGUiLCJ0b3VjaE1peGlucyIsImZ1bGxTY3JlZW5NaXhpbnMiLCJ3aXRoU3R5bGUiLCJmdW5jIiwic2V0VGltZW91dCJdLCJyYW5nZU1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OyIsIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkFva0JBOzs7ZUFBQTs7O29FQWxrQnNCO29CQUVDO3lCQUNFOzBCQUMwQzswREFFbkQ7OERBQ0k7d0JBRVU7d0JBQ1U7cUJBRWlEO3lCQUNXOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "highmark-cli",
3
3
  "author": "James Smith",
4
- "version": "0.0.166",
4
+ "version": "0.0.168",
5
5
  "license": "MIT, Anti-996",
6
6
  "homepage": "https://github.com/djalbat/highmark-cli",
7
7
  "description": "Extensible, styleable Markdown.",
@@ -22,7 +22,7 @@
22
22
  "@swc/core": "^1.2.50",
23
23
  "easy": "^17.1.1",
24
24
  "easy-layout": "^6.0.151",
25
- "easy-mobile": "^1.0.14",
25
+ "easy-mobile": "^1.0.16",
26
26
  "easy-with-style": "^3.0.354",
27
27
  "esbuild": "^0.9.2",
28
28
  "fragmented": "^3.1.2",
@@ -4,7 +4,7 @@ import { STATE_KEY, LANDSCAPE_ORIENTATION, PORTRAIT_ORIENTATION } from "./consta
4
4
 
5
5
  const menuZoom = {
6
6
  [PORTRAIT_ORIENTATION]: 1,
7
- [LANDSCAPE_ORIENTATION]: 1
7
+ [LANDSCAPE_ORIENTATION]: 0.5
8
8
  },
9
9
  overlayZoom = {
10
10
  [PORTRAIT_ORIENTATION]: 1,
package/src/styles.js CHANGED
@@ -3,6 +3,7 @@
3
3
  export const svgFill = "#fff";
4
4
  export const buttonSize = "64px";
5
5
  export const spanColour = "#fff";
6
+ export const menuDivGap = "32px";
6
7
  export const borderWidth = "4px";
7
8
  export const borderRadius = "8px"
8
9
  export const borderColour = "#fff";
@@ -8,7 +8,7 @@ import CheckboxesDiv from "../div/checkboxes";
8
8
 
9
9
  import { GRID } from "../../constants";
10
10
  import { getMenuZoom as getZoom } from "../../state";
11
- import { borderColour, menuDivPadding, backgroundColour } from "../../styles";
11
+ import { menuDivGap, borderColour, menuDivPadding, backgroundColour } from "../../styles";
12
12
 
13
13
  class MenuDiv extends Element {
14
14
  show() {
@@ -73,6 +73,7 @@ class MenuDiv extends Element {
73
73
 
74
74
  export default withStyle(MenuDiv)`
75
75
 
76
+ gap: ${menuDivGap};
76
77
  left: 0;
77
78
  bottom: 0;
78
79
  display: grid;
@@ -268,6 +268,52 @@ class OverlayDiv extends Element {
268
268
  this.enableCustomGestures();
269
269
  }
270
270
 
271
+ enableCustomGestures() {
272
+ let nativeGesturedEnabled = this.areNativeGesturesEnabled();
273
+
274
+ if (nativeGesturedEnabled) {
275
+ return;
276
+ }
277
+
278
+ this.onCustomDragUp(this.dragUpCustomHandler);
279
+ this.onCustomDragDown(this.dragDownCustomHandler);
280
+ this.onCustomDragStart(this.dragStartCustomHandler);
281
+ this.onCustomSwipeUp(this.swipeUpCustomHandler);
282
+ this.onCustomSwipeDown(this.swipeDownCustomHandler);
283
+ this.onCustomSwipeLeft(this.swipeLeftCustomHandler);
284
+ this.onCustomSwipeRight(this.swipeRightCustomHandler);
285
+ this.onCustomPinchMove(this.pinchMoveCustomHandler);
286
+ this.onCustomPinchStart(this.pinchStartCustomHandler);
287
+ this.onCustomDoubleTap(this.doubleTapCustomHandler);
288
+
289
+ nativeGesturedEnabled = true;
290
+
291
+ this.setNativeGesturesEnabled(nativeGesturedEnabled);
292
+ }
293
+
294
+ disableCustomGestures() {
295
+ let nativeGesturedEnabled = this.areNativeGesturesEnabled();
296
+
297
+ if (!nativeGesturedEnabled) {
298
+ return;
299
+ }
300
+
301
+ this.offCustomDragUp(this.dragUpCustomHandler);
302
+ this.offCustomDragDown(this.dragDownCustomHandler);
303
+ this.offCustomDragStart(this.dragStartCustomHandler);
304
+ this.offCustomSwipeUp(this.swipeUpCustomHandler);
305
+ this.offCustomSwipeDown(this.swipeDownCustomHandler);
306
+ this.offCustomSwipeLeft(this.swipeLeftCustomHandler);
307
+ this.offCustomSwipeRight(this.swipeRightCustomHandler);
308
+ this.offCustomPinchMove(this.pinchMoveCustomHandler);
309
+ this.offCustomPinchStart(this.pinchStartCustomHandler);
310
+ this.offCustomDoubleTap(this.doubleTapCustomHandler);
311
+
312
+ nativeGesturedEnabled = false;
313
+
314
+ this.setNativeGesturesEnabled(nativeGesturedEnabled);
315
+ }
316
+
271
317
  areNativeGesturesRestored() {
272
318
  const nativeGesturesRestored = this.hasClass("native-gestures");
273
319
 
@@ -432,32 +478,36 @@ class OverlayDiv extends Element {
432
478
  });
433
479
  }
434
480
 
481
+ areNativeGesturesEnabled() {
482
+ const { nativeGesturesEnabled } = this.getState();
483
+
484
+ return nativeGesturesEnabled;
485
+ }
486
+
487
+ setNativeGesturesEnabled(nativeGesturesEnabled) {
488
+ this.updateState({
489
+ nativeGesturesEnabled
490
+ });
491
+ }
492
+
435
493
  setInitialState() {
436
494
  const interval = null,
437
495
  startZoom = null,
438
- startScrollTop = null;
496
+ startScrollTop = null,
497
+ nativeGesturesEnabled = false;
439
498
 
440
499
  this.setState({
441
500
  interval,
442
501
  startZoom,
443
- startScrollTop
502
+ startScrollTop,
503
+ nativeGesturesEnabled
444
504
  });
445
505
  }
446
506
 
447
507
  didMount() {
448
508
  window.onKeyDown(this.keyDownHandler);
449
509
 
450
- this.onCustomDragUp(this.dragUpCustomHandler);
451
- this.onCustomDragDown(this.dragDownCustomHandler);
452
- this.onCustomDragStart(this.dragStartCustomHandler);
453
- this.onCustomSwipeUp(this.swipeUpCustomHandler);
454
- this.onCustomSwipeDown(this.swipeDownCustomHandler);
455
- this.onCustomSwipeLeft(this.swipeLeftCustomHandler);
456
- this.onCustomSwipeRight(this.swipeRightCustomHandler);
457
- this.onCustomPinchMove(this.pinchMoveCustomHandler);
458
- this.onCustomPinchStart(this.pinchStartCustomHandler);
459
510
  this.onCustomSingleTap(this.singleTapCustomHandler);
460
- this.onCustomDoubleTap(this.doubleTapCustomHandler);
461
511
 
462
512
  this.onCustomFullScreenChange(this.fullScreenChangeCustomHandler);
463
513
 
@@ -471,20 +521,10 @@ class OverlayDiv extends Element {
471
521
 
472
522
  this.disableFullScreen();
473
523
 
474
- this.offCustomDragUp(this.dragUpCustomHandler);
475
- this.offCustomDragDown(this.dragDownCustomHandler);
476
- this.offCustomDragStart(this.dragStartCustomHandler);
477
- this.offCustomSwipeUp(this.swipeUpCustomHandler);
478
- this.offCustomSwipeDown(this.swipeDownCustomHandler);
479
- this.offCustomSwipeLeft(this.swipeLeftCustomHandler);
480
- this.offCustomSwipeRight(this.swipeRightCustomHandler);
481
- this.offCustomPinchMove(this.pinchMoveCustomHandler);
482
- this.offCustomPinchStart(this.pinchStartCustomHandler);
483
- this.offCustomDoubleTap(this.doubleTapCustomHandler);
484
- this.offCustomSingleTap(this.singleTapCustomHandler);
485
-
486
524
  this.offCustomFullScreenChange(this.fullScreenChangeCustomHandler);
487
525
 
526
+ this.offCustomSingleTap(this.singleTapCustomHandler);
527
+
488
528
  window.offKeyDown(this.keyDownHandler);
489
529
  }
490
530