@imperium/layout 9.0.0 → 9.0.1-alpha.0

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 (131) hide show
  1. package/dist/esm/commonItems.js +9 -0
  2. package/dist/esm/commonItems.js.map +1 -0
  3. package/dist/esm/content/components/ActionForm.js +62 -0
  4. package/dist/esm/content/components/ActionForm.js.map +1 -0
  5. package/dist/esm/content/components/ActionFormSidebarItemComponent.js +36 -0
  6. package/dist/esm/content/components/ActionFormSidebarItemComponent.js.map +1 -0
  7. package/dist/esm/content/components/ActionSidebarItemComponent.js +20 -0
  8. package/dist/esm/content/components/ActionSidebarItemComponent.js.map +1 -0
  9. package/dist/esm/content/components/ContentComponent.js +63 -0
  10. package/dist/esm/content/components/ContentComponent.js.map +1 -0
  11. package/dist/esm/content/components/CustomSidebarItemComponent.js +8 -0
  12. package/dist/esm/content/components/CustomSidebarItemComponent.js.map +1 -0
  13. package/dist/esm/content/components/Header.js +26 -0
  14. package/dist/esm/content/components/Header.js.map +1 -0
  15. package/dist/esm/content/components/PlainSidebarItem.js +20 -0
  16. package/dist/esm/content/components/PlainSidebarItem.js.map +1 -0
  17. package/dist/esm/content/components/SidebarItemWrapper.js +58 -0
  18. package/dist/esm/content/components/SidebarItemWrapper.js.map +1 -0
  19. package/dist/esm/content/components/styles.module.css.js +8 -0
  20. package/dist/esm/content/components/styles.module.css.js.map +1 -0
  21. package/dist/esm/content/createPages.js +32 -0
  22. package/dist/esm/content/createPages.js.map +1 -0
  23. package/dist/esm/content/dividerSidebarItem.js +7 -0
  24. package/dist/esm/content/dividerSidebarItem.js.map +1 -0
  25. package/dist/esm/content/hooks/useBuildContentData.js +18 -0
  26. package/dist/esm/content/hooks/useBuildContentData.js.map +1 -0
  27. package/dist/esm/content/types.js +18 -0
  28. package/dist/esm/content/types.js.map +1 -0
  29. package/dist/esm/content/utils.js +29 -0
  30. package/dist/esm/content/utils.js.map +1 -0
  31. package/dist/esm/datahooks/DataHooks.js +39 -0
  32. package/dist/esm/datahooks/DataHooks.js.map +1 -0
  33. package/dist/esm/datahooks/ExecuteDataHook.js +9 -0
  34. package/dist/esm/datahooks/ExecuteDataHook.js.map +1 -0
  35. package/dist/esm/datahooks/ExecutePermissionHook.js +17 -0
  36. package/dist/esm/datahooks/ExecutePermissionHook.js.map +1 -0
  37. package/dist/esm/datahooks/PermissionHooks.js +16 -0
  38. package/dist/esm/datahooks/PermissionHooks.js.map +1 -0
  39. package/dist/esm/external/style-inject/dist/style-inject.es.js +29 -0
  40. package/dist/esm/external/style-inject/dist/style-inject.es.js.map +1 -0
  41. package/dist/esm/hooks/useBuildData.js +28 -0
  42. package/dist/esm/hooks/useBuildData.js.map +1 -0
  43. package/dist/esm/hooks/useIsActiveRoute.js +22 -0
  44. package/dist/esm/hooks/useIsActiveRoute.js.map +1 -0
  45. package/dist/esm/hooks/useSelectPermission.js +12 -0
  46. package/dist/esm/hooks/useSelectPermission.js.map +1 -0
  47. package/dist/esm/hooks/useSelectState.js +12 -0
  48. package/dist/esm/hooks/useSelectState.js.map +1 -0
  49. package/dist/esm/index.js +21 -0
  50. package/dist/esm/index.js.map +1 -0
  51. package/dist/esm/layout/components/CustomLayoutItemComponent.js +8 -0
  52. package/dist/esm/layout/components/CustomLayoutItemComponent.js.map +1 -0
  53. package/dist/esm/layout/components/DropdownItem.js +40 -0
  54. package/dist/esm/layout/components/DropdownItem.js.map +1 -0
  55. package/dist/esm/layout/components/Layout.js +74 -0
  56. package/dist/esm/layout/components/Layout.js.map +1 -0
  57. package/dist/esm/layout/components/LayoutItemBar.js +29 -0
  58. package/dist/esm/layout/components/LayoutItemBar.js.map +1 -0
  59. package/dist/esm/layout/components/LayoutItemWrapper.js +72 -0
  60. package/dist/esm/layout/components/LayoutItemWrapper.js.map +1 -0
  61. package/dist/esm/layout/components/MenuItem.js +11 -0
  62. package/dist/esm/layout/components/MenuItem.js.map +1 -0
  63. package/dist/esm/layout/components/PlainItem.js +14 -0
  64. package/dist/esm/layout/components/PlainItem.js.map +1 -0
  65. package/dist/esm/layout/components/SecondaryMenuToggleItem.js +16 -0
  66. package/dist/esm/layout/components/SecondaryMenuToggleItem.js.map +1 -0
  67. package/dist/esm/layout/components/styles.module.css.js +8 -0
  68. package/dist/esm/layout/components/styles.module.css.js.map +1 -0
  69. package/dist/esm/layout/hooks/useMobileLayout.js +21 -0
  70. package/dist/esm/layout/hooks/useMobileLayout.js.map +1 -0
  71. package/dist/esm/layout/moveItems.js +65 -0
  72. package/dist/esm/layout/moveItems.js.map +1 -0
  73. package/dist/esm/layout/types.js +12 -0
  74. package/dist/esm/layout/types.js.map +1 -0
  75. package/dist/esm/layout/utils.js +41 -0
  76. package/dist/esm/layout/utils.js.map +1 -0
  77. package/dist/esm/layout/withLayout.js +52 -0
  78. package/dist/esm/layout/withLayout.js.map +1 -0
  79. package/dist/esm/state.js +25 -0
  80. package/dist/esm/state.js.map +1 -0
  81. package/dist/esm/types.js +7 -0
  82. package/dist/esm/types.js.map +1 -0
  83. package/dist/esm/utils.js +9 -0
  84. package/dist/esm/utils.js.map +1 -0
  85. package/dist/stats.html +2689 -0
  86. package/dist/{commonItems.d.ts → types/commonItems.d.ts} +0 -0
  87. package/dist/{content → types/content}/components/ActionForm.d.ts +0 -0
  88. package/dist/{content → types/content}/components/ActionFormSidebarItemComponent.d.ts +0 -0
  89. package/dist/{content → types/content}/components/ActionSidebarItemComponent.d.ts +0 -0
  90. package/dist/{content → types/content}/components/ContentComponent.d.ts +0 -0
  91. package/dist/{content → types/content}/components/CustomSidebarItemComponent.d.ts +0 -0
  92. package/dist/{content → types/content}/components/Header.d.ts +0 -0
  93. package/dist/{content → types/content}/components/PlainSidebarItem.d.ts +0 -0
  94. package/dist/{content → types/content}/components/SidebarItemWrapper.d.ts +0 -0
  95. package/dist/{content → types/content}/createPages.d.ts +0 -0
  96. package/dist/{content → types/content}/dividerSidebarItem.d.ts +0 -0
  97. package/dist/{content → types/content}/hooks/useBuildContentData.d.ts +0 -0
  98. package/dist/{content → types/content}/types.d.ts +0 -0
  99. package/dist/{content → types/content}/utils.d.ts +0 -0
  100. package/dist/{datahooks → types/datahooks}/DataHooks.d.ts +0 -0
  101. package/dist/{datahooks → types/datahooks}/ExecuteDataHook.d.ts +0 -0
  102. package/dist/{datahooks → types/datahooks}/ExecutePermissionHook.d.ts +0 -0
  103. package/dist/{datahooks → types/datahooks}/PermissionHooks.d.ts +0 -0
  104. package/dist/{datahooks → types/datahooks}/types.d.ts +0 -0
  105. package/dist/{hooks → types/hooks}/useBuildData.d.ts +0 -0
  106. package/dist/{hooks → types/hooks}/useIsActiveRoute.d.ts +0 -0
  107. package/dist/{hooks → types/hooks}/useSelectPermission.d.ts +0 -0
  108. package/dist/{hooks → types/hooks}/useSelectState.d.ts +0 -0
  109. package/dist/{index.d.ts → types/index.d.ts} +0 -0
  110. package/dist/{layout → types/layout}/components/CustomLayoutItemComponent.d.ts +0 -0
  111. package/dist/{layout → types/layout}/components/DropdownItem.d.ts +0 -0
  112. package/dist/{layout → types/layout}/components/Layout.d.ts +0 -0
  113. package/dist/{layout → types/layout}/components/LayoutItemBar.d.ts +0 -0
  114. package/dist/{layout → types/layout}/components/LayoutItemWrapper.d.ts +0 -0
  115. package/dist/{layout → types/layout}/components/MenuItem.d.ts +0 -0
  116. package/dist/{layout → types/layout}/components/PlainItem.d.ts +0 -0
  117. package/dist/{layout → types/layout}/components/SecondaryMenuToggleItem.d.ts +0 -0
  118. package/dist/{layout → types/layout}/hooks/useMobileLayout.d.ts +0 -0
  119. package/dist/{layout → types/layout}/moveItems.d.ts +0 -0
  120. package/dist/{layout → types/layout}/types.d.ts +0 -0
  121. package/dist/{layout → types/layout}/utils.d.ts +0 -0
  122. package/dist/{layout → types/layout}/withLayout.d.ts +0 -0
  123. package/dist/{state.d.ts → types/state.d.ts} +0 -0
  124. package/dist/{types.d.ts → types/types.d.ts} +0 -0
  125. package/dist/types/utils.d.ts +3 -0
  126. package/package.json +18 -18
  127. package/client.js +0 -7
  128. package/dist/client.js +0 -3620
  129. package/dist/client.min.js +0 -2
  130. package/dist/client.min.js.map +0 -1
  131. package/dist/utils.d.ts +0 -6
package/dist/client.js DELETED
@@ -1,3620 +0,0 @@
1
- /******/ (() => { // webpackBootstrap
2
- /******/ "use strict";
3
- /******/ var __webpack_modules__ = ({
4
-
5
- /***/ "../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[2].use[2]!./content/components/styles.css":
6
- /*!****************************************************************************************************************!*\
7
- !*** ../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[2].use[2]!./content/components/styles.css ***!
8
- \****************************************************************************************************************/
9
- /***/ ((module, __webpack_exports__, __webpack_require__) => {
10
-
11
- __webpack_require__.r(__webpack_exports__);
12
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
13
- /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
14
- /* harmony export */ });
15
- /* harmony import */ var _node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js */ "../../../node_modules/css-loader/dist/runtime/sourceMaps.js");
16
- /* harmony import */ var _node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);
17
- /* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../../node_modules/css-loader/dist/runtime/api.js */ "../../../node_modules/css-loader/dist/runtime/api.js");
18
- /* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);
19
- // Imports
20
-
21
-
22
- var ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));
23
- // Module
24
- ___CSS_LOADER_EXPORT___.push([module.id, ".content-components-styles__parent--qcZqw {\n\tflex: 1;\n\tdisplay: flex;\n\tflex-direction: row;\n\theight: 100%;\n}\n\n.content-components-styles__wrapper--mbzSi {\n\tflex: 1;\n\tflex-basis: calc(65%);\n}\n\n.content-components-styles__content--fhSXG {\n\tmargin: 0 0.8rem 0.8rem 0.8rem;\n}\n\n.content-components-styles__contentFull--kUW3_ {\n\theight: 100%;\n\tmargin: 0 0;\n}\n\n.content-components-styles__header--NOGyc {\n\tpadding: 0.8rem 0.8rem 0 0.8rem;\n\tmargin-bottom: 0.8rem;\n}\n\n.content-components-styles__sidebar--rLU5R {\n\tmin-width: 250px;\n\tpadding: 10px;\n\toverflow-y: auto;\n\toverflow-x: hidden;\n}\n\n.content-components-styles__sidebarItem--Eylgf {\n\tmargin-bottom: 5px;\n}\n\n.content-components-styles__actionsHeader--N6zzM {\n\tdisplay: none;\n}\n\n@media only screen and (max-width: 768px) {\n\t.content-components-styles__parent--qcZqw {\n\t\tflex-direction: column;\n\t\theight: auto;\n\t}\n\t.content-components-styles__wrapper--mbzSi {\n\t\tborder-right: none;\n\t\tpadding-bottom: 20px;\n\t}\n\t.content-components-styles__sidebar--rLU5R {\n\t\tmin-width: auto;\n\t}\n\t.content-components-styles__actionsHeader--N6zzM {\n\t\tdisplay: block;\n\t\tmargin-bottom: 5px;\n\t}\n}\n", "",{"version":3,"sources":["webpack://./content/components/styles.css"],"names":[],"mappings":"AAAA;CACC,OAAO;CACP,aAAa;CACb,mBAAmB;CACnB,YAAY;AACb;;AAEA;CACC,OAAO;CACP,qBAAqB;AACtB;;AAEA;CACC,8BAA8B;AAC/B;;AAEA;CACC,YAAY;CACZ,WAAW;AACZ;;AAEA;CACC,+BAA+B;CAC/B,qBAAqB;AACtB;;AAEA;CACC,gBAAgB;CAChB,aAAa;CACb,gBAAgB;CAChB,kBAAkB;AACnB;;AAEA;CACC,kBAAkB;AACnB;;AAEA;CACC,aAAa;AACd;;AAEA;CACC;EACC,sBAAsB;EACtB,YAAY;CACb;CACA;EACC,kBAAkB;EAClB,oBAAoB;CACrB;CACA;EACC,eAAe;CAChB;CACA;EACC,cAAc;EACd,kBAAkB;CACnB;AACD","sourcesContent":[".parent {\n\tflex: 1;\n\tdisplay: flex;\n\tflex-direction: row;\n\theight: 100%;\n}\n\n.wrapper {\n\tflex: 1;\n\tflex-basis: calc(65%);\n}\n\n.content {\n\tmargin: 0 0.8rem 0.8rem 0.8rem;\n}\n\n.contentFull {\n\theight: 100%;\n\tmargin: 0 0;\n}\n\n.header {\n\tpadding: 0.8rem 0.8rem 0 0.8rem;\n\tmargin-bottom: 0.8rem;\n}\n\n.sidebar {\n\tmin-width: 250px;\n\tpadding: 10px;\n\toverflow-y: auto;\n\toverflow-x: hidden;\n}\n\n.sidebarItem {\n\tmargin-bottom: 5px;\n}\n\n.actionsHeader {\n\tdisplay: none;\n}\n\n@media only screen and (max-width: 768px) {\n\t.parent {\n\t\tflex-direction: column;\n\t\theight: auto;\n\t}\n\t.wrapper {\n\t\tborder-right: none;\n\t\tpadding-bottom: 20px;\n\t}\n\t.sidebar {\n\t\tmin-width: auto;\n\t}\n\t.actionsHeader {\n\t\tdisplay: block;\n\t\tmargin-bottom: 5px;\n\t}\n}\n"],"sourceRoot":""}]);
25
- // Exports
26
- ___CSS_LOADER_EXPORT___.locals = {
27
- "parent": "content-components-styles__parent--qcZqw",
28
- "wrapper": "content-components-styles__wrapper--mbzSi",
29
- "content": "content-components-styles__content--fhSXG",
30
- "contentFull": "content-components-styles__contentFull--kUW3_",
31
- "header": "content-components-styles__header--NOGyc",
32
- "sidebar": "content-components-styles__sidebar--rLU5R",
33
- "sidebarItem": "content-components-styles__sidebarItem--Eylgf",
34
- "actionsHeader": "content-components-styles__actionsHeader--N6zzM"
35
- };
36
- /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);
37
-
38
-
39
- /***/ }),
40
-
41
- /***/ "../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[2].use[2]!./layout/components/styles.css":
42
- /*!***************************************************************************************************************!*\
43
- !*** ../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[2].use[2]!./layout/components/styles.css ***!
44
- \***************************************************************************************************************/
45
- /***/ ((module, __webpack_exports__, __webpack_require__) => {
46
-
47
- __webpack_require__.r(__webpack_exports__);
48
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
49
- /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
50
- /* harmony export */ });
51
- /* harmony import */ var _node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js */ "../../../node_modules/css-loader/dist/runtime/sourceMaps.js");
52
- /* harmony import */ var _node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);
53
- /* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../../node_modules/css-loader/dist/runtime/api.js */ "../../../node_modules/css-loader/dist/runtime/api.js");
54
- /* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);
55
- // Imports
56
-
57
-
58
- var ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));
59
- // Module
60
- ___CSS_LOADER_EXPORT___.push([module.id, "/* Need to pass 100% height all the way down */\n#root {\n\theight: 100%;\n}\n#root > div {\n\theight: 100%;\n}\n\n.layout-components-styles__parent--sws8O {\n\tmin-height: 100%;\n\tdisplay: flex;\n\tflex-direction: column;\n}\n\n.layout-components-styles__menubar--WMcXn {\n\tborder-radius: 0 !important;\n\tmargin: 0 !important;\n}\n\n.layout-components-styles__statusbar--Ha4f_ {\n\tmargin: 0 !important;\n\tborder-radius: 0 !important;\n}\n\n.layout-components-styles__secondaryMenu--byu6y {\n\tmin-width: 220px !important;\n\twidth: 100% !important;\n\theight: 100% !important;\n\tborder-radius: 0 !important;\n\tmargin: 0 !important;\n\toverflow-x: auto; /* added to make the content scroll and not the whole layout */\n\ttransition: margin-left 0.3s ease-in-out;\n}\n\n.layout-components-styles__secondaryMenuHidden--ek7Qz {\n\tmargin-left: -220px !important;\n}\n\n.layout-components-styles__contentWrapper--SaYGn {\n\tflex: 1;\n\tdisplay: flex;\n\tflex-direction: row;\n\tflex-wrap: nowrap;\n\tpadding: 0 !important;\n\tborder: 0 solid transparent !important; /* this is a segment, and they seem to have a 1px white border by default */\n\toverflow-y: auto; /* added to make the content scroll and not the whole layout */\n}\n\n.layout-components-styles__content--JGDuW {\n\tflex: 1; /* changed this to have a flex of one instead of auto so the side menu doesn't get squished */\n\talign-content: flex-start;\n\theight: 100%;\n\tmax-height: 100%; /* added to make the content scroll and not the whole layout */\n\toverflow-x: hidden; /* added to make the content scroll and not the whole layout */\n}\n\n.layout-components-styles__footer--A7LSH {\n\tmargin: 0 !important;\n\tborder-radius: 0 !important;\n}\n\n.layout-components-styles__verticalDropdownIcon--V69Cw {\n\ttransform: rotate(0deg);\n\ttransition: transform 0.3s ;\n\tcursor: pointer;\n}\n\n.layout-components-styles__verticalDropdownIconRotated--bZyNO {\n\ttransform: rotate(90deg);\n\ttransition: transform 0.3s ;\n\tcursor: pointer;\n}\n\n.layout-components-styles__verticalDropdownTitle--s6Asq {\n\tpadding: 0;\n\tcolor: #fff !important;\n}\n\n.layout-components-styles__verticalDropdownContent--xGHxa {\n\tpadding-top: 0 !important;\n\tmargin: 0 -1.14285714em 0 0;\n\tborder-radius: 0;\n}\n\n.layout-components-styles__icon--Gtl4t {\n\ttransform: rotate(0deg);\n\ttransition: transform 0.4s linear;\n\tcursor: pointer;\n}\n\n.layout-components-styles__iconRotated--XB67Y {\n\ttransform: rotate(-180deg);\n\ttransition: transform 0.5s;\n\tcursor: pointer;\n}\n", "",{"version":3,"sources":["webpack://./layout/components/styles.css"],"names":[],"mappings":"AAAA,8CAA8C;AAC9C;CACC,YAAY;AACb;AACA;CACC,YAAY;AACb;;AAEA;CACC,gBAAgB;CAChB,aAAa;CACb,sBAAsB;AACvB;;AAEA;CACC,2BAA2B;CAC3B,oBAAoB;AACrB;;AAEA;CACC,oBAAoB;CACpB,2BAA2B;AAC5B;;AAEA;CACC,2BAA2B;CAC3B,sBAAsB;CACtB,uBAAuB;CACvB,2BAA2B;CAC3B,oBAAoB;CACpB,gBAAgB,EAAE,8DAA8D;CAChF,wCAAwC;AACzC;;AAEA;CACC,8BAA8B;AAC/B;;AAEA;CACC,OAAO;CACP,aAAa;CACb,mBAAmB;CACnB,iBAAiB;CACjB,qBAAqB;CACrB,sCAAsC,EAAE,2EAA2E;CACnH,gBAAgB,EAAE,8DAA8D;AACjF;;AAEA;CACC,OAAO,EAAE,6FAA6F;CACtG,yBAAyB;CACzB,YAAY;CACZ,gBAAgB,EAAE,8DAA8D;CAChF,kBAAkB,EAAE,8DAA8D;AACnF;;AAEA;CACC,oBAAoB;CACpB,2BAA2B;AAC5B;;AAEA;CACC,uBAAuB;CACvB,2BAA2B;CAC3B,eAAe;AAChB;;AAEA;CACC,wBAAwB;CACxB,2BAA2B;CAC3B,eAAe;AAChB;;AAEA;CACC,UAAU;CACV,sBAAsB;AACvB;;AAEA;CACC,yBAAyB;CACzB,2BAA2B;CAC3B,gBAAgB;AACjB;;AAEA;CACC,uBAAuB;CACvB,iCAAiC;CACjC,eAAe;AAChB;;AAEA;CACC,0BAA0B;CAC1B,0BAA0B;CAC1B,eAAe;AAChB","sourcesContent":["/* Need to pass 100% height all the way down */\n:global(#root) {\n\theight: 100%;\n}\n:global(#root) > div {\n\theight: 100%;\n}\n\n.parent {\n\tmin-height: 100%;\n\tdisplay: flex;\n\tflex-direction: column;\n}\n\n.menubar {\n\tborder-radius: 0 !important;\n\tmargin: 0 !important;\n}\n\n.statusbar {\n\tmargin: 0 !important;\n\tborder-radius: 0 !important;\n}\n\n.secondaryMenu {\n\tmin-width: 220px !important;\n\twidth: 100% !important;\n\theight: 100% !important;\n\tborder-radius: 0 !important;\n\tmargin: 0 !important;\n\toverflow-x: auto; /* added to make the content scroll and not the whole layout */\n\ttransition: margin-left 0.3s ease-in-out;\n}\n\n.secondaryMenuHidden {\n\tmargin-left: -220px !important;\n}\n\n.contentWrapper {\n\tflex: 1;\n\tdisplay: flex;\n\tflex-direction: row;\n\tflex-wrap: nowrap;\n\tpadding: 0 !important;\n\tborder: 0 solid transparent !important; /* this is a segment, and they seem to have a 1px white border by default */\n\toverflow-y: auto; /* added to make the content scroll and not the whole layout */\n}\n\n.content {\n\tflex: 1; /* changed this to have a flex of one instead of auto so the side menu doesn't get squished */\n\talign-content: flex-start;\n\theight: 100%;\n\tmax-height: 100%; /* added to make the content scroll and not the whole layout */\n\toverflow-x: hidden; /* added to make the content scroll and not the whole layout */\n}\n\n.footer {\n\tmargin: 0 !important;\n\tborder-radius: 0 !important;\n}\n\n.verticalDropdownIcon {\n\ttransform: rotate(0deg);\n\ttransition: transform 0.3s ;\n\tcursor: pointer;\n}\n\n.verticalDropdownIconRotated {\n\ttransform: rotate(90deg);\n\ttransition: transform 0.3s ;\n\tcursor: pointer;\n}\n\n.verticalDropdownTitle {\n\tpadding: 0;\n\tcolor: #fff !important;\n}\n\n.verticalDropdownContent {\n\tpadding-top: 0 !important;\n\tmargin: 0 -1.14285714em 0 0;\n\tborder-radius: 0;\n}\n\n.icon {\n\ttransform: rotate(0deg);\n\ttransition: transform 0.4s linear;\n\tcursor: pointer;\n}\n\n.iconRotated {\n\ttransform: rotate(-180deg);\n\ttransition: transform 0.5s;\n\tcursor: pointer;\n}\n"],"sourceRoot":""}]);
61
- // Exports
62
- ___CSS_LOADER_EXPORT___.locals = {
63
- "parent": "layout-components-styles__parent--sws8O",
64
- "menubar": "layout-components-styles__menubar--WMcXn",
65
- "statusbar": "layout-components-styles__statusbar--Ha4f_",
66
- "secondaryMenu": "layout-components-styles__secondaryMenu--byu6y",
67
- "secondaryMenuHidden": "layout-components-styles__secondaryMenuHidden--ek7Qz",
68
- "contentWrapper": "layout-components-styles__contentWrapper--SaYGn",
69
- "content": "layout-components-styles__content--JGDuW",
70
- "footer": "layout-components-styles__footer--A7LSH",
71
- "verticalDropdownIcon": "layout-components-styles__verticalDropdownIcon--V69Cw",
72
- "verticalDropdownIconRotated": "layout-components-styles__verticalDropdownIconRotated--bZyNO",
73
- "verticalDropdownTitle": "layout-components-styles__verticalDropdownTitle--s6Asq",
74
- "verticalDropdownContent": "layout-components-styles__verticalDropdownContent--xGHxa",
75
- "icon": "layout-components-styles__icon--Gtl4t",
76
- "iconRotated": "layout-components-styles__iconRotated--XB67Y"
77
- };
78
- /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);
79
-
80
-
81
- /***/ }),
82
-
83
- /***/ "../../../node_modules/css-loader/dist/runtime/api.js":
84
- /*!************************************************************!*\
85
- !*** ../../../node_modules/css-loader/dist/runtime/api.js ***!
86
- \************************************************************/
87
- /***/ ((module) => {
88
-
89
-
90
-
91
- /*
92
- MIT License http://www.opensource.org/licenses/mit-license.php
93
- Author Tobias Koppers @sokra
94
- */
95
- module.exports = function (cssWithMappingToString) {
96
- var list = []; // return the list of modules as css string
97
-
98
- list.toString = function toString() {
99
- return this.map(function (item) {
100
- var content = "";
101
- var needLayer = typeof item[5] !== "undefined";
102
-
103
- if (item[4]) {
104
- content += "@supports (".concat(item[4], ") {");
105
- }
106
-
107
- if (item[2]) {
108
- content += "@media ".concat(item[2], " {");
109
- }
110
-
111
- if (needLayer) {
112
- content += "@layer".concat(item[5].length > 0 ? " ".concat(item[5]) : "", " {");
113
- }
114
-
115
- content += cssWithMappingToString(item);
116
-
117
- if (needLayer) {
118
- content += "}";
119
- }
120
-
121
- if (item[2]) {
122
- content += "}";
123
- }
124
-
125
- if (item[4]) {
126
- content += "}";
127
- }
128
-
129
- return content;
130
- }).join("");
131
- }; // import a list of modules into the list
132
-
133
-
134
- list.i = function i(modules, media, dedupe, supports, layer) {
135
- if (typeof modules === "string") {
136
- modules = [[null, modules, undefined]];
137
- }
138
-
139
- var alreadyImportedModules = {};
140
-
141
- if (dedupe) {
142
- for (var k = 0; k < this.length; k++) {
143
- var id = this[k][0];
144
-
145
- if (id != null) {
146
- alreadyImportedModules[id] = true;
147
- }
148
- }
149
- }
150
-
151
- for (var _k = 0; _k < modules.length; _k++) {
152
- var item = [].concat(modules[_k]);
153
-
154
- if (dedupe && alreadyImportedModules[item[0]]) {
155
- continue;
156
- }
157
-
158
- if (typeof layer !== "undefined") {
159
- if (typeof item[5] === "undefined") {
160
- item[5] = layer;
161
- } else {
162
- item[1] = "@layer".concat(item[5].length > 0 ? " ".concat(item[5]) : "", " {").concat(item[1], "}");
163
- item[5] = layer;
164
- }
165
- }
166
-
167
- if (media) {
168
- if (!item[2]) {
169
- item[2] = media;
170
- } else {
171
- item[1] = "@media ".concat(item[2], " {").concat(item[1], "}");
172
- item[2] = media;
173
- }
174
- }
175
-
176
- if (supports) {
177
- if (!item[4]) {
178
- item[4] = "".concat(supports);
179
- } else {
180
- item[1] = "@supports (".concat(item[4], ") {").concat(item[1], "}");
181
- item[4] = supports;
182
- }
183
- }
184
-
185
- list.push(item);
186
- }
187
- };
188
-
189
- return list;
190
- };
191
-
192
- /***/ }),
193
-
194
- /***/ "../../../node_modules/css-loader/dist/runtime/sourceMaps.js":
195
- /*!*******************************************************************!*\
196
- !*** ../../../node_modules/css-loader/dist/runtime/sourceMaps.js ***!
197
- \*******************************************************************/
198
- /***/ ((module) => {
199
-
200
-
201
-
202
- module.exports = function (item) {
203
- var content = item[1];
204
- var cssMapping = item[3];
205
-
206
- if (!cssMapping) {
207
- return content;
208
- }
209
-
210
- if (typeof btoa === "function") {
211
- var base64 = btoa(unescape(encodeURIComponent(JSON.stringify(cssMapping))));
212
- var data = "sourceMappingURL=data:application/json;charset=utf-8;base64,".concat(base64);
213
- var sourceMapping = "/*# ".concat(data, " */");
214
- var sourceURLs = cssMapping.sources.map(function (source) {
215
- return "/*# sourceURL=".concat(cssMapping.sourceRoot || "").concat(source, " */");
216
- });
217
- return [content].concat(sourceURLs).concat([sourceMapping]).join("\n");
218
- }
219
-
220
- return [content].join("\n");
221
- };
222
-
223
- /***/ }),
224
-
225
- /***/ "./commonItems.ts":
226
- /*!************************!*\
227
- !*** ./commonItems.ts ***!
228
- \************************/
229
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
230
-
231
- __webpack_require__.r(__webpack_exports__);
232
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
233
- /* harmony export */ "isHorizontalPositionedItem": () => (/* binding */ isHorizontalPositionedItem),
234
- /* harmony export */ "isRouteItem": () => (/* binding */ isRouteItem)
235
- /* harmony export */ });
236
- /**
237
- * Describes an item that can hide itself based on redux state
238
- */
239
-
240
- /**
241
- * Describes an item with optional weight
242
- */
243
-
244
- /**
245
- * Describes an item that links to a route
246
- */
247
-
248
- /**
249
- * Describes an item that can be positioned horizontally left or right
250
- */
251
- function isHorizontalPositionedItem(value) {
252
- return !!(value.position || value.stickOnMobile);
253
- }
254
- function isRouteItem(value) {
255
- return !!(value.to || value.exact || value.strict || value.sensitive);
256
- }
257
-
258
- /***/ }),
259
-
260
- /***/ "./content/components/ActionForm.tsx":
261
- /*!*******************************************!*\
262
- !*** ./content/components/ActionForm.tsx ***!
263
- \*******************************************/
264
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
265
-
266
- __webpack_require__.r(__webpack_exports__);
267
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
268
- /* harmony export */ "ActionForm": () => (/* binding */ ActionForm)
269
- /* harmony export */ });
270
- /* harmony import */ var _thx_controls__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @thx/controls */ "@thx/controls");
271
- /* harmony import */ var _thx_controls__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_thx_controls__WEBPACK_IMPORTED_MODULE_0__);
272
- /* harmony import */ var debug__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! debug */ "debug");
273
- /* harmony import */ var debug__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(debug__WEBPACK_IMPORTED_MODULE_1__);
274
- /* harmony import */ var semantic_ui_react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! semantic-ui-react */ "semantic-ui-react");
275
- /* harmony import */ var semantic_ui_react__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(semantic_ui_react__WEBPACK_IMPORTED_MODULE_2__);
276
- /* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! react/jsx-dev-runtime */ "react/jsx-dev-runtime");
277
- /* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_3__);
278
- var _jsxFileName = "/home/mike/dev/imperium/packages/layout/src/content/components/ActionForm.tsx",
279
- _s = $RefreshSig$();
280
-
281
-
282
-
283
-
284
-
285
- var d = debug__WEBPACK_IMPORTED_MODULE_1___default()('imperium.layout.content.components.ActionForm');
286
- function ActionForm(_ref) {
287
- _s();
288
-
289
- var item = _ref.item,
290
- data = _ref.data,
291
- onHideForm = _ref.onHideForm;
292
- // Get initial values
293
- var initialValues = {};
294
-
295
- if (item.initialValues) {
296
- if (typeof item.initialValues === 'function') {
297
- initialValues = item.initialValues(data);
298
- } else {
299
- initialValues = item.initialValues;
300
- }
301
- } // TForm
302
-
303
-
304
- var _useTForm = (0,_thx_controls__WEBPACK_IMPORTED_MODULE_0__.useTForm)({
305
- initialValues: initialValues,
306
- onSubmit: function onSubmit(submitValues) {
307
- if (item.onSubmit) {
308
- item.onSubmit(submitValues, data);
309
- }
310
-
311
- onHideForm();
312
- },
313
- enableReinitialize: true,
314
- validationSchema: item.validationSchema
315
- }),
316
- hasErrors = _useTForm.hasErrors,
317
- hasWarnings = _useTForm.hasWarnings,
318
- handleSubmit = _useTForm.handleSubmit,
319
- handleChange = _useTForm.handleChange,
320
- values = _useTForm.values,
321
- resetForm = _useTForm.resetForm,
322
- errors = _useTForm.errors,
323
- fieldError = _useTForm.fieldError;
324
-
325
- var saveButton = hasWarnings ? /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_3__.jsxDEV)(semantic_ui_react__WEBPACK_IMPORTED_MODULE_2__.Popup, {
326
- trigger: /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_3__.jsxDEV)(semantic_ui_react__WEBPACK_IMPORTED_MODULE_2__.Button, {
327
- positive: true,
328
- type: "submit",
329
- floated: "right",
330
- icon: true,
331
- labelPosition: "left",
332
- children: [/*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_3__.jsxDEV)(semantic_ui_react__WEBPACK_IMPORTED_MODULE_2__.Icon, {
333
- name: "exclamation circle",
334
- color: "red"
335
- }, void 0, false, {
336
- fileName: _jsxFileName,
337
- lineNumber: 43,
338
- columnNumber: 6
339
- }, this), "Save"]
340
- }, void 0, true, {
341
- fileName: _jsxFileName,
342
- lineNumber: 42,
343
- columnNumber: 5
344
- }, this),
345
- content: /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_3__.jsxDEV)(semantic_ui_react__WEBPACK_IMPORTED_MODULE_2__.Message, {
346
- error: true,
347
- list: Object.values(errors)
348
- }, void 0, false, {
349
- fileName: _jsxFileName,
350
- lineNumber: 47,
351
- columnNumber: 13
352
- }, this),
353
- on: "hover"
354
- }, void 0, false, {
355
- fileName: _jsxFileName,
356
- lineNumber: 40,
357
- columnNumber: 3
358
- }, this) : /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_3__.jsxDEV)(semantic_ui_react__WEBPACK_IMPORTED_MODULE_2__.Button, {
359
- positive: true,
360
- type: "submit",
361
- floated: "right",
362
- children: "Save"
363
- }, void 0, false, {
364
- fileName: _jsxFileName,
365
- lineNumber: 51,
366
- columnNumber: 3
367
- }, this); // Render form
368
-
369
- return /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_3__.jsxDEV)(semantic_ui_react__WEBPACK_IMPORTED_MODULE_2__.Form, {
370
- error: hasErrors,
371
- warning: hasWarnings,
372
- onSubmit: handleSubmit,
373
- children: [item.form({
374
- handleChange: handleChange,
375
- values: values,
376
- data: data,
377
- fieldError: fieldError
378
- }), saveButton, /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_3__.jsxDEV)(semantic_ui_react__WEBPACK_IMPORTED_MODULE_2__.Button, {
379
- type: "button",
380
- onClick: function onClick() {
381
- resetForm();
382
- onHideForm();
383
- },
384
- children: "Cancel"
385
- }, void 0, false, {
386
- fileName: _jsxFileName,
387
- lineNumber: 61,
388
- columnNumber: 4
389
- }, this)]
390
- }, void 0, true, {
391
- fileName: _jsxFileName,
392
- lineNumber: 58,
393
- columnNumber: 3
394
- }, this);
395
- }
396
-
397
- _s(ActionForm, "dRp34PVbJCQEYZVklfP663AKEEw=", false, function () {
398
- return [_thx_controls__WEBPACK_IMPORTED_MODULE_0__.useTForm];
399
- });
400
-
401
- _c = ActionForm;
402
-
403
- var _c;
404
-
405
- $RefreshReg$(_c, "ActionForm");
406
-
407
- /***/ }),
408
-
409
- /***/ "./content/components/ActionFormSidebarItemComponent.tsx":
410
- /*!***************************************************************!*\
411
- !*** ./content/components/ActionFormSidebarItemComponent.tsx ***!
412
- \***************************************************************/
413
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
414
-
415
- __webpack_require__.r(__webpack_exports__);
416
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
417
- /* harmony export */ "ActionFormSidebarItemComponent": () => (/* binding */ ActionFormSidebarItemComponent)
418
- /* harmony export */ });
419
- /* harmony import */ var _babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/slicedToArray */ "@babel/runtime/helpers/slicedToArray");
420
- /* harmony import */ var _babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_0__);
421
- /* harmony import */ var debug__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! debug */ "debug");
422
- /* harmony import */ var debug__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(debug__WEBPACK_IMPORTED_MODULE_1__);
423
- /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react */ "react");
424
- /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_2__);
425
- /* harmony import */ var semantic_ui_react__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! semantic-ui-react */ "semantic-ui-react");
426
- /* harmony import */ var semantic_ui_react__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(semantic_ui_react__WEBPACK_IMPORTED_MODULE_3__);
427
- /* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../utils */ "./content/utils.tsx");
428
- /* harmony import */ var _ActionForm__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./ActionForm */ "./content/components/ActionForm.tsx");
429
- /* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! react/jsx-dev-runtime */ "react/jsx-dev-runtime");
430
- /* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_6__);
431
-
432
-
433
- var _jsxFileName = "/home/mike/dev/imperium/packages/layout/src/content/components/ActionFormSidebarItemComponent.tsx",
434
- _s = $RefreshSig$();
435
-
436
-
437
-
438
-
439
-
440
-
441
-
442
- var d = debug__WEBPACK_IMPORTED_MODULE_1___default()('imperium.layout.content.components.ActionFormSidebarItemComponent');
443
- function ActionFormSidebarItemComponent(_ref) {
444
- _s();
445
-
446
- var item = _ref.item,
447
- data = _ref.data;
448
-
449
- var _useState = (0,react__WEBPACK_IMPORTED_MODULE_2__.useState)(false),
450
- _useState2 = _babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_0___default()(_useState, 2),
451
- isEdit = _useState2[0],
452
- setIsEdit = _useState2[1];
453
-
454
- if (isEdit) {
455
- return /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_6__.jsxDEV)(_ActionForm__WEBPACK_IMPORTED_MODULE_5__.ActionForm, {
456
- item: item,
457
- data: data,
458
- onHideForm: function onHideForm() {
459
- setIsEdit(false);
460
- }
461
- }, void 0, false, {
462
- fileName: _jsxFileName,
463
- lineNumber: 24,
464
- columnNumber: 4
465
- }, this);
466
- }
467
-
468
- var icon = (0,_utils__WEBPACK_IMPORTED_MODULE_4__.getIcon)(item, data); // Render action button
469
-
470
- return /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_6__.jsxDEV)(semantic_ui_react__WEBPACK_IMPORTED_MODULE_3__.Button, {
471
- fluid: true,
472
- compact: true,
473
- color: (0,_utils__WEBPACK_IMPORTED_MODULE_4__.getColor)(item, data),
474
- icon: !!icon,
475
- labelPosition: icon ? 'left' : undefined,
476
- onClick: function onClick() {
477
- setIsEdit(true);
478
- },
479
- children: [icon, (0,_utils__WEBPACK_IMPORTED_MODULE_4__.getText)(item, data)]
480
- }, void 0, true, {
481
- fileName: _jsxFileName,
482
- lineNumber: 38,
483
- columnNumber: 3
484
- }, this);
485
- }
486
-
487
- _s(ActionFormSidebarItemComponent, "IoDxBt6oZLuuzPcHAVPOspg3K60=");
488
-
489
- _c = ActionFormSidebarItemComponent;
490
-
491
- var _c;
492
-
493
- $RefreshReg$(_c, "ActionFormSidebarItemComponent");
494
-
495
- /***/ }),
496
-
497
- /***/ "./content/components/ActionSidebarItemComponent.tsx":
498
- /*!***********************************************************!*\
499
- !*** ./content/components/ActionSidebarItemComponent.tsx ***!
500
- \***********************************************************/
501
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
502
-
503
- __webpack_require__.r(__webpack_exports__);
504
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
505
- /* harmony export */ "ActionSidebarItemComponent": () => (/* binding */ ActionSidebarItemComponent)
506
- /* harmony export */ });
507
- /* harmony import */ var semantic_ui_react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! semantic-ui-react */ "semantic-ui-react");
508
- /* harmony import */ var semantic_ui_react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(semantic_ui_react__WEBPACK_IMPORTED_MODULE_0__);
509
- /* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utils */ "./content/utils.tsx");
510
- /* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react/jsx-dev-runtime */ "react/jsx-dev-runtime");
511
- /* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_2__);
512
- var _jsxFileName = "/home/mike/dev/imperium/packages/layout/src/content/components/ActionSidebarItemComponent.tsx";
513
-
514
-
515
-
516
- function ActionSidebarItemComponent(_ref) {
517
- var item = _ref.item,
518
- data = _ref.data;
519
- var icon = (0,_utils__WEBPACK_IMPORTED_MODULE_1__.getIcon)(item, data);
520
- return /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_2__.jsxDEV)(semantic_ui_react__WEBPACK_IMPORTED_MODULE_0__.Button, {
521
- fluid: true,
522
- compact: true,
523
- color: (0,_utils__WEBPACK_IMPORTED_MODULE_1__.getColor)(item, data),
524
- icon: !!icon,
525
- labelPosition: icon ? 'left' : undefined,
526
- onClick: function onClick() {
527
- item.onClick(data);
528
- },
529
- children: [icon, (0,_utils__WEBPACK_IMPORTED_MODULE_1__.getText)(item, data)]
530
- }, void 0, true, {
531
- fileName: _jsxFileName,
532
- lineNumber: 15,
533
- columnNumber: 3
534
- }, this);
535
- }
536
- _c = ActionSidebarItemComponent;
537
-
538
- var _c;
539
-
540
- $RefreshReg$(_c, "ActionSidebarItemComponent");
541
-
542
- /***/ }),
543
-
544
- /***/ "./content/components/ContentComponent.tsx":
545
- /*!*************************************************!*\
546
- !*** ./content/components/ContentComponent.tsx ***!
547
- \*************************************************/
548
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
549
-
550
- __webpack_require__.r(__webpack_exports__);
551
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
552
- /* harmony export */ "ContentComponent": () => (/* binding */ ContentComponent)
553
- /* harmony export */ });
554
- /* harmony import */ var debug__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! debug */ "debug");
555
- /* harmony import */ var debug__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(debug__WEBPACK_IMPORTED_MODULE_0__);
556
- /* harmony import */ var lodash__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! lodash */ "lodash");
557
- /* harmony import */ var lodash__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(lodash__WEBPACK_IMPORTED_MODULE_1__);
558
- /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react */ "react");
559
- /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_2__);
560
- /* harmony import */ var react_redux__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! react-redux */ "react-redux");
561
- /* harmony import */ var react_redux__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(react_redux__WEBPACK_IMPORTED_MODULE_3__);
562
- /* harmony import */ var _datahooks_DataHooks__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../datahooks/DataHooks */ "./datahooks/DataHooks.tsx");
563
- /* harmony import */ var _state__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../state */ "./state.ts");
564
- /* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../utils */ "./utils.ts");
565
- /* harmony import */ var _hooks_useBuildContentData__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../hooks/useBuildContentData */ "./content/hooks/useBuildContentData.ts");
566
- /* harmony import */ var _Header__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./Header */ "./content/components/Header.tsx");
567
- /* harmony import */ var _SidebarItemWrapper__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./SidebarItemWrapper */ "./content/components/SidebarItemWrapper.tsx");
568
- /* harmony import */ var _styles_css__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./styles.css */ "./content/components/styles.css");
569
- /* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! react/jsx-dev-runtime */ "react/jsx-dev-runtime");
570
- /* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_11__);
571
- var _jsxFileName = "/home/mike/dev/imperium/packages/layout/src/content/components/ContentComponent.tsx",
572
- _s = $RefreshSig$(),
573
- _s2 = $RefreshSig$(),
574
- _s3 = $RefreshSig$();
575
-
576
-
577
-
578
-
579
-
580
-
581
-
582
-
583
-
584
-
585
-
586
-
587
-
588
- var d = debug__WEBPACK_IMPORTED_MODULE_0___default()('imperium.layout.content.components.ContentComponent');
589
-
590
- function useDeepCompareMemoize(value) {
591
- _s();
592
-
593
- var ref = (0,react__WEBPACK_IMPORTED_MODULE_2__.useRef)();
594
- if (!value && !ref.current) return ref.current;
595
-
596
- if (!(0,lodash__WEBPACK_IMPORTED_MODULE_1__.isEqual)(value, ref.current)) {
597
- ref.current = value;
598
- }
599
-
600
- return ref.current;
601
- }
602
-
603
- _s(useDeepCompareMemoize, "QMBuJFIdzLIeqBcFwhMf246mjOM=");
604
-
605
- function useDeepCompareEffect(callback, deps) {
606
- _s2();
607
-
608
- // eslint-disable-next-line react-hooks/exhaustive-deps
609
- (0,react__WEBPACK_IMPORTED_MODULE_2__.useEffect)(callback, deps.map(useDeepCompareMemoize));
610
- }
611
-
612
- _s2(useDeepCompareEffect, "OD7bBpZva5O2jO+Puf00hKivP7c=");
613
-
614
- function ContentComponent(_ref) {
615
- _s3();
616
-
617
- var _this = this;
618
-
619
- var page = _ref.page,
620
- params = _ref.params;
621
- var dispatch = (0,react_redux__WEBPACK_IMPORTED_MODULE_3__.useDispatch)();
622
- var data = (0,_hooks_useBuildContentData__WEBPACK_IMPORTED_MODULE_7__.useBuildContentData)({
623
- stateSelectorHook: page.stateSelectorHook,
624
- permissionSelectorHook: page.permissionSelectorHook,
625
- params: params
626
- });
627
- useDeepCompareEffect(function () {
628
- dispatch(_state__WEBPACK_IMPORTED_MODULE_5__.actions.setParams(params));
629
- }, [dispatch, params]);
630
- var content = page.content(data);
631
- var sidebarItems = (0,_utils__WEBPACK_IMPORTED_MODULE_6__.sortWeightedItems)(page.sidebar || []);
632
- var sidebar = sidebarItems.length > 0 ? /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_11__.jsxDEV)("div", {
633
- className: "".concat(_styles_css__WEBPACK_IMPORTED_MODULE_10__["default"].sidebar, " imperiumContentSidebar"),
634
- children: [/*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_11__.jsxDEV)("div", {
635
- className: "".concat(_styles_css__WEBPACK_IMPORTED_MODULE_10__["default"].actionsHeader, " imperiumContentSidebarHeader"),
636
- children: /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_11__.jsxDEV)("h3", {
637
- children: "Actions"
638
- }, void 0, false, {
639
- fileName: _jsxFileName,
640
- lineNumber: 51,
641
- columnNumber: 6
642
- }, this)
643
- }, void 0, false, {
644
- fileName: _jsxFileName,
645
- lineNumber: 50,
646
- columnNumber: 5
647
- }, this), sidebarItems.map(function (sb, index) {
648
- return (
649
- /*#__PURE__*/
650
- // eslint-disable-next-line react/no-array-index-key
651
- (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_11__.jsxDEV)("div", {
652
- className: _styles_css__WEBPACK_IMPORTED_MODULE_10__["default"].sidebarItem,
653
- children: /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_11__.jsxDEV)(_SidebarItemWrapper__WEBPACK_IMPORTED_MODULE_9__.SidebarItemWrapper, {
654
- item: sb,
655
- params: params,
656
- data: data
657
- }, void 0, false, {
658
- fileName: _jsxFileName,
659
- lineNumber: 57,
660
- columnNumber: 8
661
- }, _this)
662
- }, index, false, {
663
- fileName: _jsxFileName,
664
- lineNumber: 56,
665
- columnNumber: 7
666
- }, _this)
667
- );
668
- })]
669
- }, void 0, true, {
670
- fileName: _jsxFileName,
671
- lineNumber: 49,
672
- columnNumber: 4
673
- }, this) : null;
674
- return /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_11__.jsxDEV)("div", {
675
- className: "".concat(_styles_css__WEBPACK_IMPORTED_MODULE_10__["default"].parent, " imperiumContentWrapperParent"),
676
- children: [/*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_11__.jsxDEV)("div", {
677
- className: "".concat(_styles_css__WEBPACK_IMPORTED_MODULE_10__["default"].wrapper, " imperiumContentWrapper"),
678
- children: [/*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_11__.jsxDEV)(_Header__WEBPACK_IMPORTED_MODULE_8__.Header, {
679
- header: page.header,
680
- data: data
681
- }, void 0, false, {
682
- fileName: _jsxFileName,
683
- lineNumber: 67,
684
- columnNumber: 5
685
- }, this), /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_11__.jsxDEV)("div", {
686
- className: "".concat(_styles_css__WEBPACK_IMPORTED_MODULE_10__["default"].content, " imperiumContent ").concat(page.full && _styles_css__WEBPACK_IMPORTED_MODULE_10__["default"].contentFull),
687
- children: content
688
- }, void 0, false, {
689
- fileName: _jsxFileName,
690
- lineNumber: 68,
691
- columnNumber: 5
692
- }, this)]
693
- }, void 0, true, {
694
- fileName: _jsxFileName,
695
- lineNumber: 66,
696
- columnNumber: 4
697
- }, this), sidebar, /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_11__.jsxDEV)(_datahooks_DataHooks__WEBPACK_IMPORTED_MODULE_4__.DataHooks, {
698
- dataHooks: page.dataHooks || []
699
- }, void 0, false, {
700
- fileName: _jsxFileName,
701
- lineNumber: 71,
702
- columnNumber: 4
703
- }, this)]
704
- }, void 0, true, {
705
- fileName: _jsxFileName,
706
- lineNumber: 65,
707
- columnNumber: 3
708
- }, this);
709
- }
710
-
711
- _s3(ContentComponent, "TsIGechvpJywByg0eItU4mkBCro=", false, function () {
712
- return [react_redux__WEBPACK_IMPORTED_MODULE_3__.useDispatch, _hooks_useBuildContentData__WEBPACK_IMPORTED_MODULE_7__.useBuildContentData, useDeepCompareEffect];
713
- });
714
-
715
- _c = ContentComponent;
716
-
717
- var _c;
718
-
719
- $RefreshReg$(_c, "ContentComponent");
720
-
721
- /***/ }),
722
-
723
- /***/ "./content/components/CustomSidebarItemComponent.tsx":
724
- /*!***********************************************************!*\
725
- !*** ./content/components/CustomSidebarItemComponent.tsx ***!
726
- \***********************************************************/
727
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
728
-
729
- __webpack_require__.r(__webpack_exports__);
730
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
731
- /* harmony export */ "CustomSidebarItemComponent": () => (/* binding */ CustomSidebarItemComponent)
732
- /* harmony export */ });
733
- function CustomSidebarItemComponent(_ref) {
734
- var item = _ref.item,
735
- data = _ref.data;
736
- return item.render(data);
737
- }
738
- _c = CustomSidebarItemComponent;
739
-
740
- var _c;
741
-
742
- $RefreshReg$(_c, "CustomSidebarItemComponent");
743
-
744
- /***/ }),
745
-
746
- /***/ "./content/components/Header.tsx":
747
- /*!***************************************!*\
748
- !*** ./content/components/Header.tsx ***!
749
- \***************************************/
750
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
751
-
752
- __webpack_require__.r(__webpack_exports__);
753
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
754
- /* harmony export */ "Header": () => (/* binding */ Header)
755
- /* harmony export */ });
756
- /* harmony import */ var debug__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! debug */ "debug");
757
- /* harmony import */ var debug__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(debug__WEBPACK_IMPORTED_MODULE_0__);
758
- /* harmony import */ var _styles_css__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./styles.css */ "./content/components/styles.css");
759
- /* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react/jsx-dev-runtime */ "react/jsx-dev-runtime");
760
- /* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_2__);
761
- var _jsxFileName = "/home/mike/dev/imperium/packages/layout/src/content/components/Header.tsx";
762
-
763
-
764
-
765
- var d = debug__WEBPACK_IMPORTED_MODULE_0___default()('imperium.layout.content.components.Header');
766
- function Header(_ref) {
767
- var data = _ref.data,
768
- header = _ref.header;
769
-
770
- if (header) {
771
- var headerInfo = {
772
- title: ''
773
- };
774
-
775
- if (typeof header === 'string') {
776
- headerInfo.title = header;
777
- } else if (typeof header === 'function') {
778
- headerInfo = header(data);
779
- } else {
780
- headerInfo = header;
781
- }
782
-
783
- return /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_2__.jsxDEV)("div", {
784
- className: "".concat(_styles_css__WEBPACK_IMPORTED_MODULE_1__["default"].header, " imperiumContentHeader"),
785
- children: /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_2__.jsxDEV)("h2", {
786
- children: headerInfo.title
787
- }, void 0, false, {
788
- fileName: _jsxFileName,
789
- lineNumber: 27,
790
- columnNumber: 5
791
- }, this)
792
- }, void 0, false, {
793
- fileName: _jsxFileName,
794
- lineNumber: 26,
795
- columnNumber: 4
796
- }, this);
797
- }
798
-
799
- return null;
800
- }
801
- _c = Header;
802
-
803
- var _c;
804
-
805
- $RefreshReg$(_c, "Header");
806
-
807
- /***/ }),
808
-
809
- /***/ "./content/components/PlainSidebarItem.tsx":
810
- /*!*************************************************!*\
811
- !*** ./content/components/PlainSidebarItem.tsx ***!
812
- \*************************************************/
813
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
814
-
815
- __webpack_require__.r(__webpack_exports__);
816
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
817
- /* harmony export */ "PlainSidebarItem": () => (/* binding */ PlainSidebarItem)
818
- /* harmony export */ });
819
- /* harmony import */ var react_router_dom__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react-router-dom */ "react-router-dom");
820
- /* harmony import */ var react_router_dom__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_router_dom__WEBPACK_IMPORTED_MODULE_0__);
821
- /* harmony import */ var semantic_ui_react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! semantic-ui-react */ "semantic-ui-react");
822
- /* harmony import */ var semantic_ui_react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(semantic_ui_react__WEBPACK_IMPORTED_MODULE_1__);
823
- /* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils */ "./content/utils.tsx");
824
- /* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! react/jsx-dev-runtime */ "react/jsx-dev-runtime");
825
- /* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_3__);
826
- var _jsxFileName = "/home/mike/dev/imperium/packages/layout/src/content/components/PlainSidebarItem.tsx";
827
-
828
-
829
-
830
-
831
- function PlainSidebarItem(_ref) {
832
- var item = _ref.item,
833
- data = _ref.data;
834
- var icon = (0,_utils__WEBPACK_IMPORTED_MODULE_2__.getIcon)(item, data);
835
- return /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_3__.jsxDEV)(semantic_ui_react__WEBPACK_IMPORTED_MODULE_1__.Button, {
836
- fluid: true,
837
- compact: true,
838
- color: (0,_utils__WEBPACK_IMPORTED_MODULE_2__.getColor)(item, data),
839
- icon: !!icon,
840
- labelPosition: icon ? 'left' : undefined,
841
- as: react_router_dom__WEBPACK_IMPORTED_MODULE_0__.Link,
842
- to: (0,_utils__WEBPACK_IMPORTED_MODULE_2__.getRouteTo)(item, data),
843
- children: [icon, (0,_utils__WEBPACK_IMPORTED_MODULE_2__.getText)(item, data)]
844
- }, void 0, true, {
845
- fileName: _jsxFileName,
846
- lineNumber: 16,
847
- columnNumber: 3
848
- }, this);
849
- }
850
- _c = PlainSidebarItem;
851
-
852
- var _c;
853
-
854
- $RefreshReg$(_c, "PlainSidebarItem");
855
-
856
- /***/ }),
857
-
858
- /***/ "./content/components/SidebarItemWrapper.tsx":
859
- /*!***************************************************!*\
860
- !*** ./content/components/SidebarItemWrapper.tsx ***!
861
- \***************************************************/
862
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
863
-
864
- __webpack_require__.r(__webpack_exports__);
865
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
866
- /* harmony export */ "SidebarItemWrapper": () => (/* binding */ SidebarItemWrapper)
867
- /* harmony export */ });
868
- /* harmony import */ var debug__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! debug */ "debug");
869
- /* harmony import */ var debug__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(debug__WEBPACK_IMPORTED_MODULE_0__);
870
- /* harmony import */ var mingo__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! mingo */ "mingo");
871
- /* harmony import */ var mingo__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(mingo__WEBPACK_IMPORTED_MODULE_1__);
872
- /* harmony import */ var semantic_ui_react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! semantic-ui-react */ "semantic-ui-react");
873
- /* harmony import */ var semantic_ui_react__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(semantic_ui_react__WEBPACK_IMPORTED_MODULE_2__);
874
- /* harmony import */ var _hooks_useBuildContentData__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../hooks/useBuildContentData */ "./content/hooks/useBuildContentData.ts");
875
- /* harmony import */ var _types__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../types */ "./content/types.ts");
876
- /* harmony import */ var _ActionFormSidebarItemComponent__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./ActionFormSidebarItemComponent */ "./content/components/ActionFormSidebarItemComponent.tsx");
877
- /* harmony import */ var _ActionSidebarItemComponent__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./ActionSidebarItemComponent */ "./content/components/ActionSidebarItemComponent.tsx");
878
- /* harmony import */ var _CustomSidebarItemComponent__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./CustomSidebarItemComponent */ "./content/components/CustomSidebarItemComponent.tsx");
879
- /* harmony import */ var _PlainSidebarItem__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./PlainSidebarItem */ "./content/components/PlainSidebarItem.tsx");
880
- /* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! react/jsx-dev-runtime */ "react/jsx-dev-runtime");
881
- /* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_9__);
882
- var _jsxFileName = "/home/mike/dev/imperium/packages/layout/src/content/components/SidebarItemWrapper.tsx",
883
- _s = $RefreshSig$();
884
-
885
-
886
-
887
-
888
-
889
-
890
-
891
-
892
-
893
-
894
-
895
- var d = debug__WEBPACK_IMPORTED_MODULE_0___default()('imperium.layout.content.components.SidebarItemWrapper');
896
- function SidebarItemWrapper(_ref) {
897
- _s();
898
-
899
- var item = _ref.item,
900
- parentData = _ref.data,
901
- params = _ref.params;
902
- var data = (0,_hooks_useBuildContentData__WEBPACK_IMPORTED_MODULE_3__.useBuildContentData)({
903
- data: parentData,
904
- stateSelectorHook: item.stateSelectorHook,
905
- permissionSelectorHook: item.permissionSelectorHook,
906
- params: params
907
- }); // Check if visible
908
-
909
- if (item.visible) {
910
- if (typeof item.visible === 'function') {
911
- if (!item.visible(data)) return null;
912
- } else {
913
- var q = new mingo__WEBPACK_IMPORTED_MODULE_1__.Query(item.visible || {});
914
- if (!q.test(data)) return null;
915
- }
916
- }
917
-
918
- if ((0,_types__WEBPACK_IMPORTED_MODULE_4__.isCustomSidebarItem)(item)) {
919
- return /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_9__.jsxDEV)(_CustomSidebarItemComponent__WEBPACK_IMPORTED_MODULE_7__.CustomSidebarItemComponent, {
920
- item: item,
921
- data: data
922
- }, void 0, false, {
923
- fileName: _jsxFileName,
924
- lineNumber: 40,
925
- columnNumber: 10
926
- }, this);
927
- }
928
-
929
- if ((0,_types__WEBPACK_IMPORTED_MODULE_4__.isActionSidebarItem)(item)) {
930
- return /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_9__.jsxDEV)(_ActionSidebarItemComponent__WEBPACK_IMPORTED_MODULE_6__.ActionSidebarItemComponent, {
931
- item: item,
932
- data: data
933
- }, void 0, false, {
934
- fileName: _jsxFileName,
935
- lineNumber: 44,
936
- columnNumber: 10
937
- }, this);
938
- }
939
-
940
- if ((0,_types__WEBPACK_IMPORTED_MODULE_4__.isActionFormSidebarItem)(item)) {
941
- return /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_9__.jsxDEV)(_ActionFormSidebarItemComponent__WEBPACK_IMPORTED_MODULE_5__.ActionFormSidebarItemComponent, {
942
- item: item,
943
- data: data
944
- }, void 0, false, {
945
- fileName: _jsxFileName,
946
- lineNumber: 48,
947
- columnNumber: 10
948
- }, this);
949
- }
950
-
951
- if ((0,_types__WEBPACK_IMPORTED_MODULE_4__.isDividerSidebarItem)(item)) {
952
- return /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_9__.jsxDEV)(semantic_ui_react__WEBPACK_IMPORTED_MODULE_2__.Divider, {}, void 0, false, {
953
- fileName: _jsxFileName,
954
- lineNumber: 52,
955
- columnNumber: 10
956
- }, this);
957
- } // @ts-ignore These types should work, not sure why it's not. Runtime code is fine.
958
-
959
-
960
- return /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_9__.jsxDEV)(_PlainSidebarItem__WEBPACK_IMPORTED_MODULE_8__.PlainSidebarItem, {
961
- item: item,
962
- data: data
963
- }, void 0, false, {
964
- fileName: _jsxFileName,
965
- lineNumber: 56,
966
- columnNumber: 9
967
- }, this);
968
- }
969
-
970
- _s(SidebarItemWrapper, "xjcdexqxLIICpGAZKBGiYOVWDas=", false, function () {
971
- return [_hooks_useBuildContentData__WEBPACK_IMPORTED_MODULE_3__.useBuildContentData];
972
- });
973
-
974
- _c = SidebarItemWrapper;
975
-
976
- var _c;
977
-
978
- $RefreshReg$(_c, "SidebarItemWrapper");
979
-
980
- /***/ }),
981
-
982
- /***/ "./content/createPages.tsx":
983
- /*!*********************************!*\
984
- !*** ./content/createPages.tsx ***!
985
- \*********************************/
986
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
987
-
988
- __webpack_require__.r(__webpack_exports__);
989
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
990
- /* harmony export */ "createPages": () => (/* binding */ createPages)
991
- /* harmony export */ });
992
- /* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/defineProperty */ "@babel/runtime/helpers/defineProperty");
993
- /* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__);
994
- /* harmony import */ var debug__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! debug */ "debug");
995
- /* harmony import */ var debug__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(debug__WEBPACK_IMPORTED_MODULE_1__);
996
- /* harmony import */ var _components_ContentComponent__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./components/ContentComponent */ "./content/components/ContentComponent.tsx");
997
- /* harmony import */ var _types__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./types */ "./content/types.ts");
998
- /* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! react/jsx-dev-runtime */ "react/jsx-dev-runtime");
999
- /* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_4__);
1000
-
1001
- var _jsxFileName = "/home/mike/dev/imperium/packages/layout/src/content/createPages.tsx";
1002
-
1003
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
1004
-
1005
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
1006
-
1007
-
1008
-
1009
-
1010
-
1011
- var d = debug__WEBPACK_IMPORTED_MODULE_1___default()('imperium.layout.content.createPages');
1012
- function createPages(routes, pages) {
1013
- var _this = this;
1014
-
1015
- var renderRoutePropsObj = Object.keys(routes.types).reduce(function (memo, key) {
1016
- return _objectSpread(_objectSpread({}, memo), {}, _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()({}, key, function (params) {
1017
- var pg = pages[key];
1018
-
1019
- if ((0,_types__WEBPACK_IMPORTED_MODULE_3__.isPage)(pg)) {
1020
- return /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxDEV)(_components_ContentComponent__WEBPACK_IMPORTED_MODULE_2__.ContentComponent, {
1021
- page: pg,
1022
- params: params
1023
- }, void 0, false, {
1024
- fileName: _jsxFileName,
1025
- lineNumber: 16,
1026
- columnNumber: 13
1027
- }, _this);
1028
- }
1029
-
1030
- return /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxDEV)(_components_ContentComponent__WEBPACK_IMPORTED_MODULE_2__.ContentComponent, {
1031
- page: {
1032
- content: pg
1033
- },
1034
- params: params
1035
- }, void 0, false, {
1036
- fileName: _jsxFileName,
1037
- lineNumber: 19,
1038
- columnNumber: 6
1039
- }, _this);
1040
- }));
1041
- }, {});
1042
- return routes.renderRouteProps(renderRoutePropsObj);
1043
- }
1044
-
1045
- /***/ }),
1046
-
1047
- /***/ "./content/dividerSidebarItem.ts":
1048
- /*!***************************************!*\
1049
- !*** ./content/dividerSidebarItem.ts ***!
1050
- \***************************************/
1051
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
1052
-
1053
- __webpack_require__.r(__webpack_exports__);
1054
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
1055
- /* harmony export */ "dividerSidebarItem": () => (/* binding */ dividerSidebarItem)
1056
- /* harmony export */ });
1057
- var dividerSidebarItem = {
1058
- text: '',
1059
- divider: true
1060
- };
1061
-
1062
- /***/ }),
1063
-
1064
- /***/ "./content/hooks/useBuildContentData.ts":
1065
- /*!**********************************************!*\
1066
- !*** ./content/hooks/useBuildContentData.ts ***!
1067
- \**********************************************/
1068
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
1069
-
1070
- __webpack_require__.r(__webpack_exports__);
1071
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
1072
- /* harmony export */ "useBuildContentData": () => (/* binding */ useBuildContentData)
1073
- /* harmony export */ });
1074
- /* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/defineProperty */ "@babel/runtime/helpers/defineProperty");
1075
- /* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__);
1076
- /* harmony import */ var _hooks_useBuildData__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../hooks/useBuildData */ "./hooks/useBuildData.ts");
1077
-
1078
-
1079
- var _s = $RefreshSig$();
1080
-
1081
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
1082
-
1083
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
1084
-
1085
-
1086
- function useBuildContentData(_ref) {
1087
- _s();
1088
-
1089
- var data = _ref.data,
1090
- stateSelectorHook = _ref.stateSelectorHook,
1091
- permissionSelectorHook = _ref.permissionSelectorHook,
1092
- routeItem = _ref.routeItem,
1093
- params = _ref.params;
1094
- var buildData = (0,_hooks_useBuildData__WEBPACK_IMPORTED_MODULE_1__.useBuildData)({
1095
- data: data,
1096
- stateSelectorHook: stateSelectorHook,
1097
- permissionSelectorHook: permissionSelectorHook,
1098
- routeItem: routeItem
1099
- });
1100
- return _objectSpread(_objectSpread({}, buildData), {}, {
1101
- params: params
1102
- });
1103
- }
1104
-
1105
- _s(useBuildContentData, "yk5pGS0moWWVjdJ9ddvs9cW3Gsc=", false, function () {
1106
- return [_hooks_useBuildData__WEBPACK_IMPORTED_MODULE_1__.useBuildData];
1107
- });
1108
-
1109
- /***/ }),
1110
-
1111
- /***/ "./content/types.ts":
1112
- /*!**************************!*\
1113
- !*** ./content/types.ts ***!
1114
- \**************************/
1115
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
1116
-
1117
- __webpack_require__.r(__webpack_exports__);
1118
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
1119
- /* harmony export */ "isPage": () => (/* binding */ isPage),
1120
- /* harmony export */ "isActionSidebarItem": () => (/* binding */ isActionSidebarItem),
1121
- /* harmony export */ "isActionFormSidebarItem": () => (/* binding */ isActionFormSidebarItem),
1122
- /* harmony export */ "isCustomSidebarItem": () => (/* binding */ isCustomSidebarItem),
1123
- /* harmony export */ "isDividerSidebarItem": () => (/* binding */ isDividerSidebarItem)
1124
- /* harmony export */ });
1125
- function isPage(value) {
1126
- return !!value.content;
1127
- }
1128
- function isActionSidebarItem(value) {
1129
- return !!value.onClick;
1130
- }
1131
- function isActionFormSidebarItem(value) {
1132
- return !!value.form;
1133
- }
1134
- function isCustomSidebarItem(value) {
1135
- return !!value.render;
1136
- }
1137
- function isDividerSidebarItem(value) {
1138
- return value.divider;
1139
- }
1140
-
1141
- /***/ }),
1142
-
1143
- /***/ "./content/utils.tsx":
1144
- /*!***************************!*\
1145
- !*** ./content/utils.tsx ***!
1146
- \***************************/
1147
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
1148
-
1149
- __webpack_require__.r(__webpack_exports__);
1150
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
1151
- /* harmony export */ "getIcon": () => (/* binding */ getIcon),
1152
- /* harmony export */ "getRouteTo": () => (/* binding */ getRouteTo),
1153
- /* harmony export */ "getText": () => (/* binding */ getText),
1154
- /* harmony export */ "getColor": () => (/* binding */ getColor)
1155
- /* harmony export */ });
1156
- /* harmony import */ var semantic_ui_react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! semantic-ui-react */ "semantic-ui-react");
1157
- /* harmony import */ var semantic_ui_react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(semantic_ui_react__WEBPACK_IMPORTED_MODULE_0__);
1158
- /* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react/jsx-dev-runtime */ "react/jsx-dev-runtime");
1159
- /* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_1__);
1160
- var _jsxFileName = "/home/mike/dev/imperium/packages/layout/src/content/utils.tsx";
1161
-
1162
-
1163
- function getIcon(item, data) {
1164
- if (item.icon) {
1165
- var iconName = typeof item.icon === 'function' ? item.icon(data) : item.icon;
1166
- return /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_1__.jsxDEV)(semantic_ui_react__WEBPACK_IMPORTED_MODULE_0__.Icon, {
1167
- name: iconName
1168
- }, void 0, false, {
1169
- fileName: _jsxFileName,
1170
- lineNumber: 9,
1171
- columnNumber: 10
1172
- }, this);
1173
- }
1174
-
1175
- return null;
1176
- }
1177
- function getRouteTo(item, data) {
1178
- if (item.to) {
1179
- return typeof item.to === 'function' ? item.to(data) : item.to;
1180
- }
1181
-
1182
- return '';
1183
- }
1184
- function getText(item, data) {
1185
- return typeof item.text === 'function' ? item.text(data) : item.text;
1186
- }
1187
- function getColor(item, data) {
1188
- if (!item.color) return 'blue';
1189
- return typeof item.color === 'function' ? item.color(data) : item.color;
1190
- }
1191
-
1192
- /***/ }),
1193
-
1194
- /***/ "./datahooks/DataHooks.tsx":
1195
- /*!*********************************!*\
1196
- !*** ./datahooks/DataHooks.tsx ***!
1197
- \*********************************/
1198
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
1199
-
1200
- __webpack_require__.r(__webpack_exports__);
1201
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
1202
- /* harmony export */ "DataHooks": () => (/* binding */ DataHooks)
1203
- /* harmony export */ });
1204
- /* harmony import */ var debug__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! debug */ "debug");
1205
- /* harmony import */ var debug__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(debug__WEBPACK_IMPORTED_MODULE_0__);
1206
- /* harmony import */ var lodash_fp__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! lodash/fp */ "lodash/fp");
1207
- /* harmony import */ var lodash_fp__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(lodash_fp__WEBPACK_IMPORTED_MODULE_1__);
1208
- /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react */ "react");
1209
- /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_2__);
1210
- /* harmony import */ var react_router_dom__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! react-router-dom */ "react-router-dom");
1211
- /* harmony import */ var react_router_dom__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(react_router_dom__WEBPACK_IMPORTED_MODULE_3__);
1212
- /* harmony import */ var _ExecuteDataHook__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./ExecuteDataHook */ "./datahooks/ExecuteDataHook.tsx");
1213
- /* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! react/jsx-dev-runtime */ "react/jsx-dev-runtime");
1214
- /* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_5__);
1215
- var _jsxFileName = "/home/mike/dev/imperium/packages/layout/src/datahooks/DataHooks.tsx",
1216
- _s = $RefreshSig$();
1217
-
1218
-
1219
-
1220
-
1221
-
1222
-
1223
-
1224
-
1225
- var d = debug__WEBPACK_IMPORTED_MODULE_0___default()('imperium.layout.datahooks.DataHooks');
1226
-
1227
- /**
1228
- * Renders layout data hooks. These hooks should return nothing. All interaction should be in side effects, usually retrieving data and setting Redux state.
1229
- * @param dataHooks
1230
- * @constructor
1231
- */
1232
- function DataHooks(_ref) {
1233
- _s();
1234
-
1235
- var _this = this;
1236
-
1237
- var dataHooks = _ref.dataHooks;
1238
-
1239
- var _useLocation = (0,react_router_dom__WEBPACK_IMPORTED_MODULE_3__.useLocation)(),
1240
- pathname = _useLocation.pathname;
1241
-
1242
- return /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_5__.jsxDEV)(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_5__.Fragment, {
1243
- children: dataHooks.map(function (hook, index) {
1244
- if (typeof hook === 'function') {
1245
- // eslint-disable-next-line react/no-array-index-key
1246
- return /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_5__.jsxDEV)(_ExecuteDataHook__WEBPACK_IMPORTED_MODULE_4__.ExecuteDataHook, {
1247
- dataHook: hook
1248
- }, index, false, {
1249
- fileName: _jsxFileName,
1250
- lineNumber: 27,
1251
- columnNumber: 13
1252
- }, _this);
1253
- }
1254
-
1255
- var fn = Array.isArray(hook.routeMatch) ? (0,lodash_fp__WEBPACK_IMPORTED_MODULE_1__.compose)(hook.routeMatch) : hook.routeMatch;
1256
- var routeParams = fn(pathname);
1257
-
1258
- if (Array.isArray(hook.dataHook)) {
1259
- return (
1260
- /*#__PURE__*/
1261
- // eslint-disable-next-line react/no-array-index-key
1262
- (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_5__.jsxDEV)(react__WEBPACK_IMPORTED_MODULE_2__.Fragment, {
1263
- children: hook.dataHook.map(function (dh, index2) {
1264
- // eslint-disable-next-line react/no-array-index-key
1265
- return /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_5__.jsxDEV)(_ExecuteDataHook__WEBPACK_IMPORTED_MODULE_4__.ExecuteDataHook, {
1266
- dataHook: dh,
1267
- routeParams: routeParams
1268
- }, index2, false, {
1269
- fileName: _jsxFileName,
1270
- lineNumber: 37,
1271
- columnNumber: 16
1272
- }, _this);
1273
- })
1274
- }, index, false, {
1275
- fileName: _jsxFileName,
1276
- lineNumber: 34,
1277
- columnNumber: 7
1278
- }, _this)
1279
- );
1280
- } // eslint-disable-next-line react/no-array-index-key
1281
-
1282
-
1283
- return /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_5__.jsxDEV)(_ExecuteDataHook__WEBPACK_IMPORTED_MODULE_4__.ExecuteDataHook, {
1284
- dataHook: hook.dataHook,
1285
- routeParams: routeParams
1286
- }, index, false, {
1287
- fileName: _jsxFileName,
1288
- lineNumber: 43,
1289
- columnNumber: 12
1290
- }, _this);
1291
- })
1292
- }, void 0, false);
1293
- }
1294
-
1295
- _s(DataHooks, "DLzm74WbLrqXx5fm3m0DPqqQIzo=", false, function () {
1296
- return [react_router_dom__WEBPACK_IMPORTED_MODULE_3__.useLocation];
1297
- });
1298
-
1299
- _c = DataHooks;
1300
-
1301
- var _c;
1302
-
1303
- $RefreshReg$(_c, "DataHooks");
1304
-
1305
- /***/ }),
1306
-
1307
- /***/ "./datahooks/ExecuteDataHook.tsx":
1308
- /*!***************************************!*\
1309
- !*** ./datahooks/ExecuteDataHook.tsx ***!
1310
- \***************************************/
1311
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
1312
-
1313
- __webpack_require__.r(__webpack_exports__);
1314
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
1315
- /* harmony export */ "ExecuteDataHook": () => (/* binding */ ExecuteDataHook)
1316
- /* harmony export */ });
1317
- function ExecuteDataHook(_ref) {
1318
- var dataHook = _ref.dataHook,
1319
- routeParams = _ref.routeParams;
1320
- dataHook(routeParams);
1321
- return null;
1322
- }
1323
- _c = ExecuteDataHook;
1324
-
1325
- var _c;
1326
-
1327
- $RefreshReg$(_c, "ExecuteDataHook");
1328
-
1329
- /***/ }),
1330
-
1331
- /***/ "./datahooks/ExecutePermissionHook.tsx":
1332
- /*!*********************************************!*\
1333
- !*** ./datahooks/ExecutePermissionHook.tsx ***!
1334
- \*********************************************/
1335
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
1336
-
1337
- __webpack_require__.r(__webpack_exports__);
1338
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
1339
- /* harmony export */ "ExecutePermissionHook": () => (/* binding */ ExecutePermissionHook)
1340
- /* harmony export */ });
1341
- /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
1342
- /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
1343
- /* harmony import */ var react_redux__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react-redux */ "react-redux");
1344
- /* harmony import */ var react_redux__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react_redux__WEBPACK_IMPORTED_MODULE_1__);
1345
- /* harmony import */ var _state__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../state */ "./state.ts");
1346
- var _s = $RefreshSig$();
1347
-
1348
-
1349
-
1350
-
1351
- function ExecutePermissionHook(_ref) {
1352
- _s();
1353
-
1354
- var permissionHook = _ref.permissionHook,
1355
- routeParams = _ref.routeParams;
1356
- var dispatch = (0,react_redux__WEBPACK_IMPORTED_MODULE_1__.useDispatch)();
1357
- var perms = permissionHook(routeParams);
1358
- (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(function () {
1359
- Object.keys(perms).forEach(function (permission) {
1360
- dispatch(_state__WEBPACK_IMPORTED_MODULE_2__.actions.setPermission({
1361
- permission: permission,
1362
- result: perms[permission]
1363
- }));
1364
- });
1365
- }, [dispatch, perms]);
1366
- return null;
1367
- }
1368
-
1369
- _s(ExecutePermissionHook, "rAh3tY+Iv6hWC9AI4Dm+rCbkwNE=", false, function () {
1370
- return [react_redux__WEBPACK_IMPORTED_MODULE_1__.useDispatch];
1371
- });
1372
-
1373
- _c = ExecutePermissionHook;
1374
-
1375
- var _c;
1376
-
1377
- $RefreshReg$(_c, "ExecutePermissionHook");
1378
-
1379
- /***/ }),
1380
-
1381
- /***/ "./datahooks/PermissionHooks.tsx":
1382
- /*!***************************************!*\
1383
- !*** ./datahooks/PermissionHooks.tsx ***!
1384
- \***************************************/
1385
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
1386
-
1387
- __webpack_require__.r(__webpack_exports__);
1388
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
1389
- /* harmony export */ "PermissionHooks": () => (/* binding */ PermissionHooks)
1390
- /* harmony export */ });
1391
- /* harmony import */ var debug__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! debug */ "debug");
1392
- /* harmony import */ var debug__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(debug__WEBPACK_IMPORTED_MODULE_0__);
1393
- /* harmony import */ var _ExecutePermissionHook__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./ExecutePermissionHook */ "./datahooks/ExecutePermissionHook.tsx");
1394
- /* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react/jsx-dev-runtime */ "react/jsx-dev-runtime");
1395
- /* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_2__);
1396
- var _jsxFileName = "/home/mike/dev/imperium/packages/layout/src/datahooks/PermissionHooks.tsx";
1397
-
1398
-
1399
-
1400
-
1401
- var d = debug__WEBPACK_IMPORTED_MODULE_0___default()('imperium.layout.datahooks.PermissionHooks');
1402
- function PermissionHooks(_ref) {
1403
- var _this = this;
1404
-
1405
- var permissionHooks = _ref.permissionHooks;
1406
- return /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_2__.jsxDEV)(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_2__.Fragment, {
1407
- children: permissionHooks.map(function (hook, index) {
1408
- // eslint-disable-next-line react/no-array-index-key
1409
- return /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_2__.jsxDEV)(_ExecutePermissionHook__WEBPACK_IMPORTED_MODULE_1__.ExecutePermissionHook, {
1410
- permissionHook: hook
1411
- }, index, false, {
1412
- fileName: _jsxFileName,
1413
- lineNumber: 16,
1414
- columnNumber: 12
1415
- }, _this);
1416
- })
1417
- }, void 0, false);
1418
- }
1419
- _c = PermissionHooks;
1420
-
1421
- var _c;
1422
-
1423
- $RefreshReg$(_c, "PermissionHooks");
1424
-
1425
- /***/ }),
1426
-
1427
- /***/ "./hooks/useBuildData.ts":
1428
- /*!*******************************!*\
1429
- !*** ./hooks/useBuildData.ts ***!
1430
- \*******************************/
1431
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
1432
-
1433
- __webpack_require__.r(__webpack_exports__);
1434
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
1435
- /* harmony export */ "useBuildData": () => (/* binding */ useBuildData)
1436
- /* harmony export */ });
1437
- /* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/defineProperty */ "@babel/runtime/helpers/defineProperty");
1438
- /* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__);
1439
- /* harmony import */ var _imperium_auth_client__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @imperium/auth-client */ "@imperium/auth-client");
1440
- /* harmony import */ var _imperium_auth_client__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_imperium_auth_client__WEBPACK_IMPORTED_MODULE_1__);
1441
- /* harmony import */ var debug__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! debug */ "debug");
1442
- /* harmony import */ var debug__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(debug__WEBPACK_IMPORTED_MODULE_2__);
1443
- /* harmony import */ var lodash_compact__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! lodash/compact */ "lodash/compact");
1444
- /* harmony import */ var lodash_compact__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(lodash_compact__WEBPACK_IMPORTED_MODULE_3__);
1445
- /* harmony import */ var lodash_merge__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! lodash/merge */ "lodash/merge");
1446
- /* harmony import */ var lodash_merge__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(lodash_merge__WEBPACK_IMPORTED_MODULE_4__);
1447
- /* harmony import */ var querystring__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! querystring */ "querystring");
1448
- /* harmony import */ var querystring__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(querystring__WEBPACK_IMPORTED_MODULE_5__);
1449
- /* harmony import */ var react_router_dom__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! react-router-dom */ "react-router-dom");
1450
- /* harmony import */ var react_router_dom__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(react_router_dom__WEBPACK_IMPORTED_MODULE_6__);
1451
- /* harmony import */ var _state__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../state */ "./state.ts");
1452
- /* harmony import */ var _useIsActiveRoute__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./useIsActiveRoute */ "./hooks/useIsActiveRoute.ts");
1453
- /* harmony import */ var _useSelectPermission__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./useSelectPermission */ "./hooks/useSelectPermission.ts");
1454
- /* harmony import */ var _useSelectState__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./useSelectState */ "./hooks/useSelectState.ts");
1455
-
1456
-
1457
- var _s = $RefreshSig$();
1458
-
1459
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
1460
-
1461
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
1462
-
1463
-
1464
-
1465
-
1466
-
1467
-
1468
-
1469
-
1470
-
1471
-
1472
-
1473
- var d = debug__WEBPACK_IMPORTED_MODULE_2___default()('imperium.layout.hooks.useBuildData');
1474
- function useBuildData(_ref) {
1475
- _s();
1476
-
1477
- var stateSelectorHook = _ref.stateSelectorHook,
1478
- permissionSelectorHook = _ref.permissionSelectorHook,
1479
- data = _ref.data,
1480
- routeItem = _ref.routeItem;
1481
-
1482
- var _useAuth = (0,_imperium_auth_client__WEBPACK_IMPORTED_MODULE_1__.useAuth)(),
1483
- id = _useAuth.id;
1484
-
1485
- var _useLayoutState = (0,_state__WEBPACK_IMPORTED_MODULE_7__.useLayoutState)(),
1486
- permissions = _useLayoutState.permissions;
1487
-
1488
- var state = (0,_useSelectState__WEBPACK_IMPORTED_MODULE_10__.useSelectState)(stateSelectorHook);
1489
- var loc = (0,react_router_dom__WEBPACK_IMPORTED_MODULE_6__.useLocation)();
1490
- var route = {
1491
- path: lodash_compact__WEBPACK_IMPORTED_MODULE_3___default()(loc.pathname.split('/')),
1492
- hash: loc.hash,
1493
- search: querystring__WEBPACK_IMPORTED_MODULE_5___default().parse(loc.search)
1494
- };
1495
- var active = (0,_useIsActiveRoute__WEBPACK_IMPORTED_MODULE_8__.useIsActiveRoute)({
1496
- loc: loc,
1497
- route: route,
1498
- state: state,
1499
- active: false,
1500
- id: id,
1501
- permissions: permissions
1502
- }, routeItem);
1503
- var permissionsX = (0,_useSelectPermission__WEBPACK_IMPORTED_MODULE_9__.useSelectPermission)({
1504
- state: state,
1505
- loc: loc,
1506
- active: active,
1507
- route: route,
1508
- id: id,
1509
- permissions: permissions
1510
- }, permissionSelectorHook);
1511
- var newData = {
1512
- state: state,
1513
- loc: loc,
1514
- active: active,
1515
- route: route,
1516
- permissions: _objectSpread(_objectSpread({}, permissions), permissionsX),
1517
- id: id
1518
- };
1519
- return data ? lodash_merge__WEBPACK_IMPORTED_MODULE_4___default()(data, newData) : newData;
1520
- }
1521
-
1522
- _s(useBuildData, "NMDuLcIxXrtjYS0wpu117oP2RFQ=", false, function () {
1523
- return [_imperium_auth_client__WEBPACK_IMPORTED_MODULE_1__.useAuth, _state__WEBPACK_IMPORTED_MODULE_7__.useLayoutState, _useSelectState__WEBPACK_IMPORTED_MODULE_10__.useSelectState, react_router_dom__WEBPACK_IMPORTED_MODULE_6__.useLocation, _useIsActiveRoute__WEBPACK_IMPORTED_MODULE_8__.useIsActiveRoute, _useSelectPermission__WEBPACK_IMPORTED_MODULE_9__.useSelectPermission];
1524
- });
1525
-
1526
- /***/ }),
1527
-
1528
- /***/ "./hooks/useIsActiveRoute.ts":
1529
- /*!***********************************!*\
1530
- !*** ./hooks/useIsActiveRoute.ts ***!
1531
- \***********************************/
1532
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
1533
-
1534
- __webpack_require__.r(__webpack_exports__);
1535
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
1536
- /* harmony export */ "useIsActiveRoute": () => (/* binding */ useIsActiveRoute)
1537
- /* harmony export */ });
1538
- /* harmony import */ var react_router__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react-router */ "react-router");
1539
- /* harmony import */ var react_router__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_router__WEBPACK_IMPORTED_MODULE_0__);
1540
- /* harmony import */ var _commonItems__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../commonItems */ "./commonItems.ts");
1541
- var _s = $RefreshSig$();
1542
-
1543
-
1544
-
1545
- function useIsActiveRoute(data, item) {
1546
- _s();
1547
-
1548
- // Determine if the current route matches the to route to see if the link is active
1549
- var routeMatchObject = {};
1550
-
1551
- if (item && (0,_commonItems__WEBPACK_IMPORTED_MODULE_1__.isRouteItem)(item)) {
1552
- if (typeof item.to === 'string') {
1553
- routeMatchObject.path = item.to;
1554
- }
1555
-
1556
- if (typeof item.to === 'function') {
1557
- routeMatchObject.path = item.to(data);
1558
- }
1559
-
1560
- routeMatchObject.exact = item.exact !== false;
1561
- routeMatchObject.sensitive = item.sensitive;
1562
- routeMatchObject.strict = item.strict;
1563
- }
1564
-
1565
- var routeMatch = (0,react_router__WEBPACK_IMPORTED_MODULE_0__.useRouteMatch)(routeMatchObject);
1566
- return routeMatch !== null;
1567
- }
1568
-
1569
- _s(useIsActiveRoute, "L9+tG2+BZKTwRUciW8KKlSP2K7c=", false, function () {
1570
- return [react_router__WEBPACK_IMPORTED_MODULE_0__.useRouteMatch];
1571
- });
1572
-
1573
- /***/ }),
1574
-
1575
- /***/ "./hooks/useSelectPermission.ts":
1576
- /*!**************************************!*\
1577
- !*** ./hooks/useSelectPermission.ts ***!
1578
- \**************************************/
1579
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
1580
-
1581
- __webpack_require__.r(__webpack_exports__);
1582
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
1583
- /* harmony export */ "useSelectPermission": () => (/* binding */ useSelectPermission)
1584
- /* harmony export */ });
1585
- /* harmony import */ var lodash_flowRight__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash/flowRight */ "lodash/flowRight");
1586
- /* harmony import */ var lodash_flowRight__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash_flowRight__WEBPACK_IMPORTED_MODULE_0__);
1587
-
1588
- function useSelectPermission(data, permissionSelectorHook) {
1589
- var finalSelectorHook = function finalSelectorHook() {
1590
- return {};
1591
- };
1592
-
1593
- if (permissionSelectorHook) {
1594
- finalSelectorHook = Array.isArray(permissionSelectorHook) ? lodash_flowRight__WEBPACK_IMPORTED_MODULE_0___default()(permissionSelectorHook) : permissionSelectorHook;
1595
- }
1596
-
1597
- return finalSelectorHook(data);
1598
- }
1599
-
1600
- /***/ }),
1601
-
1602
- /***/ "./hooks/useSelectState.ts":
1603
- /*!*********************************!*\
1604
- !*** ./hooks/useSelectState.ts ***!
1605
- \*********************************/
1606
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
1607
-
1608
- __webpack_require__.r(__webpack_exports__);
1609
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
1610
- /* harmony export */ "useSelectState": () => (/* binding */ useSelectState)
1611
- /* harmony export */ });
1612
- /* harmony import */ var lodash_flowRight__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash/flowRight */ "lodash/flowRight");
1613
- /* harmony import */ var lodash_flowRight__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash_flowRight__WEBPACK_IMPORTED_MODULE_0__);
1614
-
1615
- function useSelectState(stateSelectorHook) {
1616
- var finalSelectorHook = function finalSelectorHook() {
1617
- return {};
1618
- };
1619
-
1620
- if (stateSelectorHook) {
1621
- finalSelectorHook = Array.isArray(stateSelectorHook) ? lodash_flowRight__WEBPACK_IMPORTED_MODULE_0___default()(stateSelectorHook) : stateSelectorHook;
1622
- }
1623
-
1624
- return finalSelectorHook();
1625
- }
1626
-
1627
- /***/ }),
1628
-
1629
- /***/ "./layout/components/CustomLayoutItemComponent.tsx":
1630
- /*!*********************************************************!*\
1631
- !*** ./layout/components/CustomLayoutItemComponent.tsx ***!
1632
- \*********************************************************/
1633
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
1634
-
1635
- __webpack_require__.r(__webpack_exports__);
1636
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
1637
- /* harmony export */ "CustomLayoutItemComponent": () => (/* binding */ CustomLayoutItemComponent)
1638
- /* harmony export */ });
1639
- function CustomLayoutItemComponent(_ref) {
1640
- var item = _ref.item,
1641
- data = _ref.data;
1642
- return item.render(data);
1643
- }
1644
- _c = CustomLayoutItemComponent;
1645
-
1646
- var _c;
1647
-
1648
- $RefreshReg$(_c, "CustomLayoutItemComponent");
1649
-
1650
- /***/ }),
1651
-
1652
- /***/ "./layout/components/DropdownItem.tsx":
1653
- /*!********************************************!*\
1654
- !*** ./layout/components/DropdownItem.tsx ***!
1655
- \********************************************/
1656
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
1657
-
1658
- __webpack_require__.r(__webpack_exports__);
1659
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
1660
- /* harmony export */ "DropdownItem": () => (/* binding */ DropdownItem)
1661
- /* harmony export */ });
1662
- /* harmony import */ var _babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/slicedToArray */ "@babel/runtime/helpers/slicedToArray");
1663
- /* harmony import */ var _babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_0__);
1664
- /* harmony import */ var debug__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! debug */ "debug");
1665
- /* harmony import */ var debug__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(debug__WEBPACK_IMPORTED_MODULE_1__);
1666
- /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react */ "react");
1667
- /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_2__);
1668
- /* harmony import */ var semantic_ui_react__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! semantic-ui-react */ "semantic-ui-react");
1669
- /* harmony import */ var semantic_ui_react__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(semantic_ui_react__WEBPACK_IMPORTED_MODULE_3__);
1670
- /* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../utils */ "./layout/utils.tsx");
1671
- /* harmony import */ var _styles_css__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./styles.css */ "./layout/components/styles.css");
1672
- /* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! react/jsx-dev-runtime */ "react/jsx-dev-runtime");
1673
- /* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_6__);
1674
-
1675
-
1676
- var _jsxFileName = "/home/mike/dev/imperium/packages/layout/src/layout/components/DropdownItem.tsx",
1677
- _s = $RefreshSig$();
1678
-
1679
-
1680
-
1681
-
1682
-
1683
-
1684
-
1685
- var d = debug__WEBPACK_IMPORTED_MODULE_1___default()('imperium.layout.components.DropdownItem');
1686
- function DropdownItem(_ref) {
1687
- _s();
1688
-
1689
- var item = _ref.item,
1690
- vertical = _ref.vertical,
1691
- children = _ref.children,
1692
- data = _ref.data;
1693
-
1694
- var _useState = (0,react__WEBPACK_IMPORTED_MODULE_2__.useState)(false),
1695
- _useState2 = _babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_0___default()(_useState, 2),
1696
- open = _useState2[0],
1697
- setOpen = _useState2[1];
1698
-
1699
- if (vertical) {
1700
- return /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_6__.jsxDEV)(semantic_ui_react__WEBPACK_IMPORTED_MODULE_3__.Menu.Item, {
1701
- className: "imperiumVerticalDropdown",
1702
- children: /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_6__.jsxDEV)(semantic_ui_react__WEBPACK_IMPORTED_MODULE_3__.Accordion, {
1703
- fluid: true,
1704
- children: [/*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_6__.jsxDEV)(semantic_ui_react__WEBPACK_IMPORTED_MODULE_3__.Accordion.Title, {
1705
- className: _styles_css__WEBPACK_IMPORTED_MODULE_5__["default"].verticalDropdownTitle,
1706
- onClick: function onClick(ev) {
1707
- ev.stopPropagation();
1708
- setOpen(!open);
1709
- },
1710
- children: [/*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_6__.jsxDEV)(semantic_ui_react__WEBPACK_IMPORTED_MODULE_3__.Icon, {
1711
- className: open ? _styles_css__WEBPACK_IMPORTED_MODULE_5__["default"].verticalDropdownIconRotated : _styles_css__WEBPACK_IMPORTED_MODULE_5__["default"].verticalDropdownIcon,
1712
- name: "arrow right"
1713
- }, void 0, false, {
1714
- fileName: _jsxFileName,
1715
- lineNumber: 32,
1716
- columnNumber: 7
1717
- }, this), item.text]
1718
- }, void 0, true, {
1719
- fileName: _jsxFileName,
1720
- lineNumber: 25,
1721
- columnNumber: 6
1722
- }, this), /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_6__.jsxDEV)(semantic_ui_react__WEBPACK_IMPORTED_MODULE_3__.Accordion.Content, {
1723
- active: open,
1724
- className: "".concat(_styles_css__WEBPACK_IMPORTED_MODULE_5__["default"].verticalDropdownContent, " imperiumVerticalDropdownContent"),
1725
- children: children
1726
- }, void 0, false, {
1727
- fileName: _jsxFileName,
1728
- lineNumber: 35,
1729
- columnNumber: 6
1730
- }, this)]
1731
- }, void 0, true, {
1732
- fileName: _jsxFileName,
1733
- lineNumber: 24,
1734
- columnNumber: 5
1735
- }, this)
1736
- }, void 0, false, {
1737
- fileName: _jsxFileName,
1738
- lineNumber: 23,
1739
- columnNumber: 4
1740
- }, this);
1741
- }
1742
-
1743
- return /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_6__.jsxDEV)(semantic_ui_react__WEBPACK_IMPORTED_MODULE_3__.Dropdown, {
1744
- item: true,
1745
- text: (0,_utils__WEBPACK_IMPORTED_MODULE_4__.getText)(item, data),
1746
- className: "imperiumDropdown",
1747
- children: /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_6__.jsxDEV)(semantic_ui_react__WEBPACK_IMPORTED_MODULE_3__.Dropdown.Menu, {
1748
- className: "imperiumDropdownContent",
1749
- children: children
1750
- }, void 0, false, {
1751
- fileName: _jsxFileName,
1752
- lineNumber: 43,
1753
- columnNumber: 4
1754
- }, this)
1755
- }, void 0, false, {
1756
- fileName: _jsxFileName,
1757
- lineNumber: 42,
1758
- columnNumber: 3
1759
- }, this);
1760
- }
1761
-
1762
- _s(DropdownItem, "xG1TONbKtDWtdOTrXaTAsNhPg/Q=");
1763
-
1764
- _c = DropdownItem;
1765
-
1766
- var _c;
1767
-
1768
- $RefreshReg$(_c, "DropdownItem");
1769
-
1770
- /***/ }),
1771
-
1772
- /***/ "./layout/components/Layout.tsx":
1773
- /*!**************************************!*\
1774
- !*** ./layout/components/Layout.tsx ***!
1775
- \**************************************/
1776
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
1777
-
1778
- __webpack_require__.r(__webpack_exports__);
1779
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
1780
- /* harmony export */ "Layout": () => (/* binding */ Layout)
1781
- /* harmony export */ });
1782
- /* harmony import */ var _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/toConsumableArray */ "@babel/runtime/helpers/toConsumableArray");
1783
- /* harmony import */ var _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0__);
1784
- /* harmony import */ var _babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/slicedToArray */ "@babel/runtime/helpers/slicedToArray");
1785
- /* harmony import */ var _babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_1__);
1786
- /* harmony import */ var debug__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! debug */ "debug");
1787
- /* harmony import */ var debug__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(debug__WEBPACK_IMPORTED_MODULE_2__);
1788
- /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! react */ "react");
1789
- /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_3__);
1790
- /* harmony import */ var semantic_ui_react__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! semantic-ui-react */ "semantic-ui-react");
1791
- /* harmony import */ var semantic_ui_react__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(semantic_ui_react__WEBPACK_IMPORTED_MODULE_4__);
1792
- /* harmony import */ var _state__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../state */ "./state.ts");
1793
- /* harmony import */ var _moveItems__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../moveItems */ "./layout/moveItems.ts");
1794
- /* harmony import */ var _LayoutItemBar__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./LayoutItemBar */ "./layout/components/LayoutItemBar.tsx");
1795
- /* harmony import */ var _SecondaryMenuToggleItem__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./SecondaryMenuToggleItem */ "./layout/components/SecondaryMenuToggleItem.tsx");
1796
- /* harmony import */ var _styles_css__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./styles.css */ "./layout/components/styles.css");
1797
- /* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! react/jsx-dev-runtime */ "react/jsx-dev-runtime");
1798
- /* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_10__);
1799
-
1800
-
1801
-
1802
- var _jsxFileName = "/home/mike/dev/imperium/packages/layout/src/layout/components/Layout.tsx",
1803
- _s = $RefreshSig$();
1804
-
1805
-
1806
-
1807
-
1808
-
1809
-
1810
-
1811
-
1812
-
1813
-
1814
- var d = debug__WEBPACK_IMPORTED_MODULE_2___default()('imperium.layout.components.Layout');
1815
-
1816
- /**
1817
- * Renders the main layout.
1818
- * Hides/shows/collapses things as need for mobile layout.
1819
- * Tracks state to whether the side menu is open or not.
1820
- * @param footer
1821
- * @param menubar
1822
- * @param statusbar
1823
- * @param children
1824
- * @constructor
1825
- */
1826
- function Layout(_ref) {
1827
- _s();
1828
-
1829
- var _this = this;
1830
-
1831
- var footer = _ref.footer,
1832
- primaryMenu = _ref.primaryMenu,
1833
- statusbar = _ref.statusbar,
1834
- secondaryMenu = _ref.secondaryMenu,
1835
- children = _ref.children;
1836
-
1837
- var _useLayoutState = (0,_state__WEBPACK_IMPORTED_MODULE_5__.useLayoutState)(),
1838
- isMobile = _useLayoutState.isMobile;
1839
-
1840
- var _useState = (0,react__WEBPACK_IMPORTED_MODULE_3__.useState)(true),
1841
- _useState2 = _babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_1___default()(_useState, 2),
1842
- menuOpen = _useState2[0],
1843
- setMenuOpen = _useState2[1];
1844
-
1845
- var primaryMenuToggle = {
1846
- stickOnMobile: true,
1847
- weight: -19999,
1848
- render: function render() {
1849
- if (!isMobile) return null;
1850
- return /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_10__.jsxDEV)(_SecondaryMenuToggleItem__WEBPACK_IMPORTED_MODULE_8__.SecondaryMenuToggleItem, {
1851
- menuOpen: menuOpen,
1852
- setMenuOpen: setMenuOpen
1853
- }, void 0, false, {
1854
- fileName: _jsxFileName,
1855
- lineNumber: 36,
1856
- columnNumber: 11
1857
- }, _this);
1858
- }
1859
- }; // Determine menubar items
1860
-
1861
- var primaryMenuItems = (0,_moveItems__WEBPACK_IMPORTED_MODULE_6__.moveItems)(isMobile ? [primaryMenuToggle].concat(_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0___default()(primaryMenu)).filter(function (v) {
1862
- return v.stickOnMobile === true;
1863
- }) : [primaryMenuToggle].concat(_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0___default()(primaryMenu))); // const pmi = mergeItems(primaryMenuItems);
1864
- // Determine sidebar items
1865
-
1866
- var secondaryMenuItems = (0,_moveItems__WEBPACK_IMPORTED_MODULE_6__.moveItems)(isMobile ? [].concat(_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0___default()(secondaryMenu), [{
1867
- text: '',
1868
- menu: [primaryMenuToggle].concat(_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0___default()(primaryMenu)).filter(function (v) {
1869
- return v.stickOnMobile !== true;
1870
- })
1871
- }]) : secondaryMenu);
1872
- var secondaryMenuComp = secondaryMenuItems.length > 0 ? /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_10__.jsxDEV)("div", {
1873
- className: "imperiumSecondaryMenuWrapper",
1874
- children: /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_10__.jsxDEV)(_LayoutItemBar__WEBPACK_IMPORTED_MODULE_7__.LayoutItemBar, {
1875
- items: secondaryMenuItems,
1876
- inverted: true,
1877
- vertical: true,
1878
- className: isMobile && !menuOpen ? "".concat(_styles_css__WEBPACK_IMPORTED_MODULE_9__["default"].secondaryMenu, " ").concat(_styles_css__WEBPACK_IMPORTED_MODULE_9__["default"].secondaryMenuHidden, " imperiumSecondaryMenu") : "".concat(_styles_css__WEBPACK_IMPORTED_MODULE_9__["default"].secondaryMenu, " imperiumSecondaryMenu")
1879
- }, void 0, false, {
1880
- fileName: _jsxFileName,
1881
- lineNumber: 63,
1882
- columnNumber: 5
1883
- }, this)
1884
- }, void 0, false, {
1885
- fileName: _jsxFileName,
1886
- lineNumber: 62,
1887
- columnNumber: 4
1888
- }, this) : null; // Determine footer items
1889
-
1890
- var footerItems = (0,_moveItems__WEBPACK_IMPORTED_MODULE_6__.moveItems)(footer);
1891
- var footerComp = footerItems.length > 0 ? /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_10__.jsxDEV)(_LayoutItemBar__WEBPACK_IMPORTED_MODULE_7__.LayoutItemBar, {
1892
- name: "footer",
1893
- items: footerItems,
1894
- className: "".concat(_styles_css__WEBPACK_IMPORTED_MODULE_9__["default"].footer, " imperiumFooter"),
1895
- inverted: true,
1896
- borderless: true
1897
- }, void 0, false, {
1898
- fileName: _jsxFileName,
1899
- lineNumber: 80,
1900
- columnNumber: 4
1901
- }, this) : null; // Determine status bar items
1902
-
1903
- var statusbarItems = (0,_moveItems__WEBPACK_IMPORTED_MODULE_6__.moveItems)(statusbar);
1904
- var statusbarComp = statusbarItems.length > 0 ? /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_10__.jsxDEV)(_LayoutItemBar__WEBPACK_IMPORTED_MODULE_7__.LayoutItemBar, {
1905
- items: statusbarItems,
1906
- inverted: true,
1907
- className: "".concat(_styles_css__WEBPACK_IMPORTED_MODULE_9__["default"].statusbar, " imperiumStatusbar")
1908
- }, void 0, false, {
1909
- fileName: _jsxFileName,
1910
- lineNumber: 86,
1911
- columnNumber: 31
1912
- }, this) : null;
1913
- return /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_10__.jsxDEV)("div", {
1914
- className: "".concat(_styles_css__WEBPACK_IMPORTED_MODULE_9__["default"].parent, " imperiumLayout ").concat(isMobile ? 'imperiumMobile' : 'imperiumNotMobile'),
1915
- children: [/*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_10__.jsxDEV)("div", {
1916
- className: "imperiumPrimaryMenuWrapper",
1917
- children: [/*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_10__.jsxDEV)(_LayoutItemBar__WEBPACK_IMPORTED_MODULE_7__.LayoutItemBar, {
1918
- items: primaryMenuItems,
1919
- inverted: true,
1920
- borderless: true,
1921
- className: "".concat(_styles_css__WEBPACK_IMPORTED_MODULE_9__["default"].menubar, " imperiumPrimaryMenu")
1922
- }, void 0, false, {
1923
- fileName: _jsxFileName,
1924
- lineNumber: 91,
1925
- columnNumber: 5
1926
- }, this), statusbarComp]
1927
- }, void 0, true, {
1928
- fileName: _jsxFileName,
1929
- lineNumber: 90,
1930
- columnNumber: 4
1931
- }, this), /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_10__.jsxDEV)(semantic_ui_react__WEBPACK_IMPORTED_MODULE_4__.Segment, {
1932
- attached: true,
1933
- className: "".concat(_styles_css__WEBPACK_IMPORTED_MODULE_9__["default"].contentWrapper, " imperiumLayoutContentWrapper"),
1934
- children: [secondaryMenuComp, /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_10__.jsxDEV)("div", {
1935
- className: "".concat(_styles_css__WEBPACK_IMPORTED_MODULE_9__["default"].content, " imperiumLayoutContent"),
1936
- children: children
1937
- }, void 0, false, {
1938
- fileName: _jsxFileName,
1939
- lineNumber: 96,
1940
- columnNumber: 5
1941
- }, this)]
1942
- }, void 0, true, {
1943
- fileName: _jsxFileName,
1944
- lineNumber: 94,
1945
- columnNumber: 4
1946
- }, this), footerComp]
1947
- }, void 0, true, {
1948
- fileName: _jsxFileName,
1949
- lineNumber: 89,
1950
- columnNumber: 3
1951
- }, this);
1952
- }
1953
-
1954
- _s(Layout, "t8ntOqgYMtaVI+om302bpzJQXE8=", false, function () {
1955
- return [_state__WEBPACK_IMPORTED_MODULE_5__.useLayoutState];
1956
- });
1957
-
1958
- _c = Layout;
1959
-
1960
- var _c;
1961
-
1962
- $RefreshReg$(_c, "Layout");
1963
-
1964
- /***/ }),
1965
-
1966
- /***/ "./layout/components/LayoutItemBar.tsx":
1967
- /*!*********************************************!*\
1968
- !*** ./layout/components/LayoutItemBar.tsx ***!
1969
- \*********************************************/
1970
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
1971
-
1972
- __webpack_require__.r(__webpack_exports__);
1973
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
1974
- /* harmony export */ "LayoutItemBar": () => (/* binding */ LayoutItemBar)
1975
- /* harmony export */ });
1976
- /* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/defineProperty */ "@babel/runtime/helpers/defineProperty");
1977
- /* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__);
1978
- /* harmony import */ var _babel_runtime_helpers_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/objectWithoutProperties */ "@babel/runtime/helpers/objectWithoutProperties");
1979
- /* harmony import */ var _babel_runtime_helpers_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_1__);
1980
- /* harmony import */ var debug__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! debug */ "debug");
1981
- /* harmony import */ var debug__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(debug__WEBPACK_IMPORTED_MODULE_2__);
1982
- /* harmony import */ var semantic_ui_react__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! semantic-ui-react */ "semantic-ui-react");
1983
- /* harmony import */ var semantic_ui_react__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(semantic_ui_react__WEBPACK_IMPORTED_MODULE_3__);
1984
- /* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../utils */ "./utils.ts");
1985
- /* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../utils */ "./layout/utils.tsx");
1986
- /* harmony import */ var _LayoutItemWrapper__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./LayoutItemWrapper */ "./layout/components/LayoutItemWrapper.tsx");
1987
- /* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! react/jsx-dev-runtime */ "react/jsx-dev-runtime");
1988
- /* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_7__);
1989
-
1990
-
1991
- var _excluded = ["items"];
1992
- var _jsxFileName = "/home/mike/dev/imperium/packages/layout/src/layout/components/LayoutItemBar.tsx";
1993
-
1994
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
1995
-
1996
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
1997
-
1998
-
1999
-
2000
-
2001
-
2002
-
2003
-
2004
- var d = debug__WEBPACK_IMPORTED_MODULE_2___default()('imperium.layout.components.LayoutItemBar');
2005
-
2006
- /**
2007
- * Renders a horizontal or vertical bar of menu items.
2008
- * @param name
2009
- * @param items
2010
- * @param rest
2011
- * @constructor
2012
- */
2013
- function LayoutItemBar(_ref) {
2014
- var _this = this;
2015
-
2016
- var items = _ref.items,
2017
- rest = _babel_runtime_helpers_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_1___default()(_ref, _excluded);
2018
-
2019
- var ims = (0,_utils__WEBPACK_IMPORTED_MODULE_5__.splitPositionedItems)(items); // eslint-disable-next-line react/no-array-index-key
2020
-
2021
- var leftItems = (0,_utils__WEBPACK_IMPORTED_MODULE_4__.sortWeightedItems)(ims.leftItems).map(function (item, index) {
2022
- return /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_7__.jsxDEV)(_LayoutItemWrapper__WEBPACK_IMPORTED_MODULE_6__.LayoutItemWrapper, {
2023
- item: item,
2024
- vertical: rest.vertical
2025
- }, index, false, {
2026
- fileName: _jsxFileName,
2027
- lineNumber: 26,
2028
- columnNumber: 74
2029
- }, _this);
2030
- }); // eslint-disable-next-line react/no-array-index-key
2031
-
2032
- var rightItems = (0,_utils__WEBPACK_IMPORTED_MODULE_4__.sortWeightedItems)(ims.rightItems).map(function (item, index) {
2033
- return /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_7__.jsxDEV)(_LayoutItemWrapper__WEBPACK_IMPORTED_MODULE_6__.LayoutItemWrapper, {
2034
- item: item,
2035
- vertical: rest.vertical
2036
- }, index, false, {
2037
- fileName: _jsxFileName,
2038
- lineNumber: 28,
2039
- columnNumber: 76
2040
- }, _this);
2041
- });
2042
- return /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_7__.jsxDEV)(semantic_ui_react__WEBPACK_IMPORTED_MODULE_3__.Menu, _objectSpread(_objectSpread({}, rest), {}, {
2043
- children: [leftItems, rest.vertical ? rightItems : /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_7__.jsxDEV)(semantic_ui_react__WEBPACK_IMPORTED_MODULE_3__.Menu.Menu, {
2044
- position: "right",
2045
- children: rightItems
2046
- }, void 0, false, {
2047
- fileName: _jsxFileName,
2048
- lineNumber: 33,
2049
- columnNumber: 34
2050
- }, this)]
2051
- }), void 0, true, {
2052
- fileName: _jsxFileName,
2053
- lineNumber: 31,
2054
- columnNumber: 3
2055
- }, this);
2056
- }
2057
- _c = LayoutItemBar;
2058
-
2059
- var _c;
2060
-
2061
- $RefreshReg$(_c, "LayoutItemBar");
2062
-
2063
- /***/ }),
2064
-
2065
- /***/ "./layout/components/LayoutItemWrapper.tsx":
2066
- /*!*************************************************!*\
2067
- !*** ./layout/components/LayoutItemWrapper.tsx ***!
2068
- \*************************************************/
2069
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
2070
-
2071
- __webpack_require__.r(__webpack_exports__);
2072
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
2073
- /* harmony export */ "LayoutItemWrapper": () => (/* binding */ LayoutItemWrapper)
2074
- /* harmony export */ });
2075
- /* harmony import */ var debug__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! debug */ "debug");
2076
- /* harmony import */ var debug__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(debug__WEBPACK_IMPORTED_MODULE_0__);
2077
- /* harmony import */ var mingo__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! mingo */ "mingo");
2078
- /* harmony import */ var mingo__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(mingo__WEBPACK_IMPORTED_MODULE_1__);
2079
- /* harmony import */ var semantic_ui_react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! semantic-ui-react */ "semantic-ui-react");
2080
- /* harmony import */ var semantic_ui_react__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(semantic_ui_react__WEBPACK_IMPORTED_MODULE_2__);
2081
- /* harmony import */ var _hooks_useBuildData__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../hooks/useBuildData */ "./hooks/useBuildData.ts");
2082
- /* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../utils */ "./utils.ts");
2083
- /* harmony import */ var _types__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../types */ "./layout/types.ts");
2084
- /* harmony import */ var _CustomLayoutItemComponent__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./CustomLayoutItemComponent */ "./layout/components/CustomLayoutItemComponent.tsx");
2085
- /* harmony import */ var _DropdownItem__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./DropdownItem */ "./layout/components/DropdownItem.tsx");
2086
- /* harmony import */ var _MenuItem__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./MenuItem */ "./layout/components/MenuItem.tsx");
2087
- /* harmony import */ var _PlainItem__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./PlainItem */ "./layout/components/PlainItem.tsx");
2088
- /* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! react/jsx-dev-runtime */ "react/jsx-dev-runtime");
2089
- /* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_10__);
2090
- var _jsxFileName = "/home/mike/dev/imperium/packages/layout/src/layout/components/LayoutItemWrapper.tsx",
2091
- _s = $RefreshSig$();
2092
-
2093
-
2094
-
2095
-
2096
-
2097
-
2098
-
2099
-
2100
-
2101
-
2102
-
2103
-
2104
- var d = debug__WEBPACK_IMPORTED_MODULE_0___default()('imperium.layout.components.LayoutItemWrapper');
2105
-
2106
- /**
2107
- * Renders any type of Item. Gathers state, route and other data and checks for visibility.
2108
- * @param item
2109
- * @param as
2110
- * @param vertical
2111
- * @param parentData
2112
- * @constructor
2113
- */
2114
- function LayoutItemWrapper(_ref) {
2115
- _s();
2116
-
2117
- var _this = this;
2118
-
2119
- var item = _ref.item,
2120
- as = _ref.as,
2121
- vertical = _ref.vertical,
2122
- parentData = _ref.data;
2123
- var data = (0,_hooks_useBuildData__WEBPACK_IMPORTED_MODULE_3__.useBuildData)({
2124
- stateSelectorHook: item.stateSelectorHook,
2125
- permissionSelectorHook: item.permissionSelectorHook,
2126
- routeItem: item,
2127
- data: parentData
2128
- }); // Check if visible
2129
-
2130
- if (item.visible) {
2131
- if (typeof item.visible === 'function') {
2132
- if (!item.visible(data)) return null;
2133
- } else {
2134
- var q = new mingo__WEBPACK_IMPORTED_MODULE_1__.Query(item.visible || {});
2135
- if (!q.test(data)) return null;
2136
- }
2137
- }
2138
-
2139
- if ((0,_types__WEBPACK_IMPORTED_MODULE_5__.isCustomLayoutItem)(item)) {
2140
- return /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_10__.jsxDEV)(_CustomLayoutItemComponent__WEBPACK_IMPORTED_MODULE_6__.CustomLayoutItemComponent, {
2141
- item: item,
2142
- data: data
2143
- }, void 0, false, {
2144
- fileName: _jsxFileName,
2145
- lineNumber: 51,
2146
- columnNumber: 10
2147
- }, this);
2148
- }
2149
-
2150
- if ((0,_types__WEBPACK_IMPORTED_MODULE_5__.isDropdownLayoutItem)(item)) {
2151
- // eslint-disable-next-line react/no-array-index-key
2152
- var children = (0,_utils__WEBPACK_IMPORTED_MODULE_4__.sortWeightedItems)(item.dropdown).map(function (v, index) {
2153
- return /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_10__.jsxDEV)(LayoutItemWrapper, {
2154
- item: v,
2155
- as: semantic_ui_react__WEBPACK_IMPORTED_MODULE_2__.Dropdown.Item,
2156
- data: data
2157
- }, index, false, {
2158
- fileName: _jsxFileName,
2159
- lineNumber: 55,
2160
- columnNumber: 71
2161
- }, _this);
2162
- });
2163
- return /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_10__.jsxDEV)(_DropdownItem__WEBPACK_IMPORTED_MODULE_7__.DropdownItem, {
2164
- item: item,
2165
- children: children,
2166
- vertical: vertical,
2167
- data: data
2168
- }, void 0, false, {
2169
- fileName: _jsxFileName,
2170
- lineNumber: 56,
2171
- columnNumber: 10
2172
- }, this);
2173
- }
2174
-
2175
- if ((0,_types__WEBPACK_IMPORTED_MODULE_5__.isMenuLayoutItem)(item)) {
2176
- // eslint-disable-next-line react/no-array-index-key
2177
- var _children = (0,_utils__WEBPACK_IMPORTED_MODULE_4__.sortWeightedItems)(item.menu).map(function (v, index) {
2178
- return (
2179
- /*#__PURE__*/
2180
- // eslint-disable-next-line react/no-array-index-key
2181
- (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_10__.jsxDEV)(LayoutItemWrapper, {
2182
- item: v,
2183
- as: semantic_ui_react__WEBPACK_IMPORTED_MODULE_2__.Dropdown.Item,
2184
- vertical: vertical,
2185
- data: data
2186
- }, index, false, {
2187
- fileName: _jsxFileName,
2188
- lineNumber: 62,
2189
- columnNumber: 4
2190
- }, _this)
2191
- );
2192
- });
2193
-
2194
- return /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_10__.jsxDEV)(_MenuItem__WEBPACK_IMPORTED_MODULE_8__.MenuItem, {
2195
- item: item,
2196
- children: _children
2197
- }, void 0, false, {
2198
- fileName: _jsxFileName,
2199
- lineNumber: 64,
2200
- columnNumber: 10
2201
- }, this);
2202
- }
2203
-
2204
- return /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_10__.jsxDEV)(_PlainItem__WEBPACK_IMPORTED_MODULE_9__.PlainItem, {
2205
- item: item,
2206
- data: data,
2207
- as: as
2208
- }, void 0, false, {
2209
- fileName: _jsxFileName,
2210
- lineNumber: 66,
2211
- columnNumber: 9
2212
- }, this);
2213
- }
2214
-
2215
- _s(LayoutItemWrapper, "63X82nRHXEfE2kFjkn68lcgX7ho=", false, function () {
2216
- return [_hooks_useBuildData__WEBPACK_IMPORTED_MODULE_3__.useBuildData];
2217
- });
2218
-
2219
- _c = LayoutItemWrapper;
2220
-
2221
- var _c;
2222
-
2223
- $RefreshReg$(_c, "LayoutItemWrapper");
2224
-
2225
- /***/ }),
2226
-
2227
- /***/ "./layout/components/MenuItem.tsx":
2228
- /*!****************************************!*\
2229
- !*** ./layout/components/MenuItem.tsx ***!
2230
- \****************************************/
2231
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
2232
-
2233
- __webpack_require__.r(__webpack_exports__);
2234
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
2235
- /* harmony export */ "MenuItem": () => (/* binding */ MenuItem)
2236
- /* harmony export */ });
2237
- /* harmony import */ var semantic_ui_react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! semantic-ui-react */ "semantic-ui-react");
2238
- /* harmony import */ var semantic_ui_react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(semantic_ui_react__WEBPACK_IMPORTED_MODULE_0__);
2239
- /* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react/jsx-dev-runtime */ "react/jsx-dev-runtime");
2240
- /* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_1__);
2241
- var _jsxFileName = "/home/mike/dev/imperium/packages/layout/src/layout/components/MenuItem.tsx";
2242
-
2243
-
2244
- function MenuItem(_ref) {
2245
- var item = _ref.item,
2246
- children = _ref.children;
2247
- return /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_1__.jsxDEV)(semantic_ui_react__WEBPACK_IMPORTED_MODULE_0__.Menu.Item, {
2248
- children: [/*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_1__.jsxDEV)(semantic_ui_react__WEBPACK_IMPORTED_MODULE_0__.Menu.Header, {
2249
- children: item.text
2250
- }, void 0, false, {
2251
- fileName: _jsxFileName,
2252
- lineNumber: 12,
2253
- columnNumber: 4
2254
- }, this), /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_1__.jsxDEV)(semantic_ui_react__WEBPACK_IMPORTED_MODULE_0__.Menu.Menu, {
2255
- compact: "",
2256
- children: children
2257
- }, void 0, false, {
2258
- fileName: _jsxFileName,
2259
- lineNumber: 13,
2260
- columnNumber: 4
2261
- }, this)]
2262
- }, void 0, true, {
2263
- fileName: _jsxFileName,
2264
- lineNumber: 11,
2265
- columnNumber: 3
2266
- }, this);
2267
- }
2268
- _c = MenuItem;
2269
-
2270
- var _c;
2271
-
2272
- $RefreshReg$(_c, "MenuItem");
2273
-
2274
- /***/ }),
2275
-
2276
- /***/ "./layout/components/PlainItem.tsx":
2277
- /*!*****************************************!*\
2278
- !*** ./layout/components/PlainItem.tsx ***!
2279
- \*****************************************/
2280
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
2281
-
2282
- __webpack_require__.r(__webpack_exports__);
2283
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
2284
- /* harmony export */ "PlainItem": () => (/* binding */ PlainItem)
2285
- /* harmony export */ });
2286
- /* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/defineProperty */ "@babel/runtime/helpers/defineProperty");
2287
- /* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__);
2288
- /* harmony import */ var semantic_ui_react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! semantic-ui-react */ "semantic-ui-react");
2289
- /* harmony import */ var semantic_ui_react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(semantic_ui_react__WEBPACK_IMPORTED_MODULE_1__);
2290
- /* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils */ "./layout/utils.tsx");
2291
- /* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! react/jsx-dev-runtime */ "react/jsx-dev-runtime");
2292
- /* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_3__);
2293
-
2294
- var _jsxFileName = "/home/mike/dev/imperium/packages/layout/src/layout/components/PlainItem.tsx";
2295
-
2296
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
2297
-
2298
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
2299
-
2300
-
2301
-
2302
-
2303
- function PlainItem(_ref) {
2304
- var item = _ref.item,
2305
- data = _ref.data,
2306
- as = _ref.as;
2307
- var linkParams = (0,_utils__WEBPACK_IMPORTED_MODULE_2__.linkParameters)(item, data);
2308
- var ItemX = as || semantic_ui_react__WEBPACK_IMPORTED_MODULE_1__.Menu.Item;
2309
- return /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_3__.jsxDEV)(ItemX, _objectSpread(_objectSpread({}, linkParams), {}, {
2310
- children: [(0,_utils__WEBPACK_IMPORTED_MODULE_2__.getIcon)(item, data), (0,_utils__WEBPACK_IMPORTED_MODULE_2__.getText)(item, data)]
2311
- }), void 0, true, {
2312
- fileName: _jsxFileName,
2313
- lineNumber: 19,
2314
- columnNumber: 3
2315
- }, this);
2316
- }
2317
- _c = PlainItem;
2318
-
2319
- var _c;
2320
-
2321
- $RefreshReg$(_c, "PlainItem");
2322
-
2323
- /***/ }),
2324
-
2325
- /***/ "./layout/components/SecondaryMenuToggleItem.tsx":
2326
- /*!*******************************************************!*\
2327
- !*** ./layout/components/SecondaryMenuToggleItem.tsx ***!
2328
- \*******************************************************/
2329
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
2330
-
2331
- __webpack_require__.r(__webpack_exports__);
2332
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
2333
- /* harmony export */ "SecondaryMenuToggleItem": () => (/* binding */ SecondaryMenuToggleItem)
2334
- /* harmony export */ });
2335
- /* harmony import */ var semantic_ui_react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! semantic-ui-react */ "semantic-ui-react");
2336
- /* harmony import */ var semantic_ui_react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(semantic_ui_react__WEBPACK_IMPORTED_MODULE_0__);
2337
- /* harmony import */ var _styles_css__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./styles.css */ "./layout/components/styles.css");
2338
- /* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react/jsx-dev-runtime */ "react/jsx-dev-runtime");
2339
- /* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_2__);
2340
- var _jsxFileName = "/home/mike/dev/imperium/packages/layout/src/layout/components/SecondaryMenuToggleItem.tsx";
2341
-
2342
-
2343
-
2344
- function SecondaryMenuToggleItem(_ref) {
2345
- var menuOpen = _ref.menuOpen,
2346
- setMenuOpen = _ref.setMenuOpen;
2347
- return /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_2__.jsxDEV)(semantic_ui_react__WEBPACK_IMPORTED_MODULE_0__.Menu.Item, {
2348
- children: /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_2__.jsxDEV)(semantic_ui_react__WEBPACK_IMPORTED_MODULE_0__.Icon, {
2349
- className: menuOpen ? _styles_css__WEBPACK_IMPORTED_MODULE_1__["default"].iconRotated : _styles_css__WEBPACK_IMPORTED_MODULE_1__["default"].icon,
2350
- name: menuOpen ? 'close' : 'sidebar',
2351
- onClick: function onClick() {
2352
- setMenuOpen(!menuOpen);
2353
- }
2354
- }, void 0, false, {
2355
- fileName: _jsxFileName,
2356
- lineNumber: 12,
2357
- columnNumber: 4
2358
- }, this)
2359
- }, void 0, false, {
2360
- fileName: _jsxFileName,
2361
- lineNumber: 11,
2362
- columnNumber: 3
2363
- }, this);
2364
- }
2365
- _c = SecondaryMenuToggleItem;
2366
-
2367
- var _c;
2368
-
2369
- $RefreshReg$(_c, "SecondaryMenuToggleItem");
2370
-
2371
- /***/ }),
2372
-
2373
- /***/ "./layout/hooks/useMobileLayout.ts":
2374
- /*!*****************************************!*\
2375
- !*** ./layout/hooks/useMobileLayout.ts ***!
2376
- \*****************************************/
2377
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
2378
-
2379
- __webpack_require__.r(__webpack_exports__);
2380
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
2381
- /* harmony export */ "useMobileLayout": () => (/* binding */ useMobileLayout)
2382
- /* harmony export */ });
2383
- /* harmony import */ var debug__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! debug */ "debug");
2384
- /* harmony import */ var debug__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(debug__WEBPACK_IMPORTED_MODULE_0__);
2385
- /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ "react");
2386
- /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);
2387
- /* harmony import */ var react_redux__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react-redux */ "react-redux");
2388
- /* harmony import */ var react_redux__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react_redux__WEBPACK_IMPORTED_MODULE_2__);
2389
- /* harmony import */ var react_responsive__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! react-responsive */ "react-responsive");
2390
- /* harmony import */ var react_responsive__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(react_responsive__WEBPACK_IMPORTED_MODULE_3__);
2391
- /* harmony import */ var _state__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../state */ "./state.ts");
2392
- var _s = $RefreshSig$();
2393
-
2394
-
2395
-
2396
-
2397
-
2398
-
2399
- var d = debug__WEBPACK_IMPORTED_MODULE_0___default()('imperium.layout.hooks.useMobileLayout');
2400
- function useMobileLayout() {
2401
- _s();
2402
-
2403
- var dispatch = (0,react_redux__WEBPACK_IMPORTED_MODULE_2__.useDispatch)();
2404
-
2405
- var _useLayoutState = (0,_state__WEBPACK_IMPORTED_MODULE_4__.useLayoutState)(),
2406
- isMobile = _useLayoutState.isMobile;
2407
-
2408
- var isMobileX = (0,react_responsive__WEBPACK_IMPORTED_MODULE_3__.useMediaQuery)({
2409
- query: '(max-width: 900px)'
2410
- });
2411
- (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(function () {
2412
- if (isMobile !== isMobileX) {
2413
- d("Media query change detected: ".concat(isMobile, " -> ").concat(isMobileX));
2414
- dispatch(_state__WEBPACK_IMPORTED_MODULE_4__.actions.setMobile(isMobileX));
2415
- }
2416
- }, [dispatch, isMobile, isMobileX]);
2417
- }
2418
-
2419
- _s(useMobileLayout, "qsguf0hDkZ0k/kSUZF7YdTswnNU=", false, function () {
2420
- return [react_redux__WEBPACK_IMPORTED_MODULE_2__.useDispatch, _state__WEBPACK_IMPORTED_MODULE_4__.useLayoutState, react_responsive__WEBPACK_IMPORTED_MODULE_3__.useMediaQuery];
2421
- });
2422
-
2423
- /***/ }),
2424
-
2425
- /***/ "./layout/moveItems.ts":
2426
- /*!*****************************!*\
2427
- !*** ./layout/moveItems.ts ***!
2428
- \*****************************/
2429
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
2430
-
2431
- __webpack_require__.r(__webpack_exports__);
2432
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
2433
- /* harmony export */ "moveItems": () => (/* binding */ moveItems)
2434
- /* harmony export */ });
2435
- /* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/defineProperty */ "@babel/runtime/helpers/defineProperty");
2436
- /* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__);
2437
- /* harmony import */ var _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/toConsumableArray */ "@babel/runtime/helpers/toConsumableArray");
2438
- /* harmony import */ var _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_1__);
2439
- /* harmony import */ var debug__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! debug */ "debug");
2440
- /* harmony import */ var debug__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(debug__WEBPACK_IMPORTED_MODULE_2__);
2441
- /* harmony import */ var lodash_groupBy__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! lodash/groupBy */ "lodash/groupBy");
2442
- /* harmony import */ var lodash_groupBy__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(lodash_groupBy__WEBPACK_IMPORTED_MODULE_3__);
2443
- /* harmony import */ var _types__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./types */ "./layout/types.ts");
2444
-
2445
-
2446
-
2447
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
2448
-
2449
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
2450
-
2451
-
2452
-
2453
-
2454
- var d = debug__WEBPACK_IMPORTED_MODULE_2___default()('imperium.layout.moveItems');
2455
-
2456
- function pullItems(items) {
2457
- var pulled = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
2458
- return items.reduce(function (memo, item) {
2459
- if ((0,_types__WEBPACK_IMPORTED_MODULE_4__.isDropdownLayoutItem)(item)) {
2460
- return [].concat(_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_1___default()(memo), [_objectSpread(_objectSpread({}, item), {}, {
2461
- dropdown: pullItems(item.dropdown, pulled)
2462
- })]);
2463
- }
2464
-
2465
- if ((0,_types__WEBPACK_IMPORTED_MODULE_4__.isMenuLayoutItem)(item)) {
2466
- return [].concat(_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_1___default()(memo), [_objectSpread(_objectSpread({}, item), {}, {
2467
- menu: pullItems(item.menu, pulled)
2468
- })]);
2469
- }
2470
-
2471
- if (!item.moveToKey) {
2472
- return [].concat(_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_1___default()(memo), [item]);
2473
- }
2474
-
2475
- pulled.push(item);
2476
- return memo;
2477
- }, []);
2478
- }
2479
-
2480
- function addItems(items, pulled) {
2481
- return items.reduce(function (memo, item) {
2482
- if ((0,_types__WEBPACK_IMPORTED_MODULE_4__.isDropdownLayoutItem)(item)) {
2483
- var newItems = item.key && pulled[item.key] ? pulled[item.key] : [];
2484
- return [].concat(_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_1___default()(memo), [_objectSpread(_objectSpread({}, item), {}, {
2485
- dropdown: [].concat(_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_1___default()(addItems(item.dropdown, pulled)), _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_1___default()(newItems))
2486
- })]);
2487
- }
2488
-
2489
- if ((0,_types__WEBPACK_IMPORTED_MODULE_4__.isMenuLayoutItem)(item) && item.key) {
2490
- var _newItems = item.key && pulled[item.key] ? pulled[item.key] : [];
2491
-
2492
- return [].concat(_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_1___default()(memo), [_objectSpread(_objectSpread({}, item), {}, {
2493
- menu: [].concat(_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_1___default()(addItems(item.menu, pulled)), _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_1___default()(_newItems))
2494
- })]);
2495
- }
2496
-
2497
- return [].concat(_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_1___default()(memo), [item]);
2498
- }, []);
2499
- }
2500
-
2501
- function moveItems(items) {
2502
- var pulled = [];
2503
- var itemsMinusPulled = pullItems(items, pulled);
2504
- return addItems(itemsMinusPulled, lodash_groupBy__WEBPACK_IMPORTED_MODULE_3___default()(pulled, 'moveToKey'));
2505
- }
2506
-
2507
- /***/ }),
2508
-
2509
- /***/ "./layout/types.ts":
2510
- /*!*************************!*\
2511
- !*** ./layout/types.ts ***!
2512
- \*************************/
2513
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
2514
-
2515
- __webpack_require__.r(__webpack_exports__);
2516
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
2517
- /* harmony export */ "isCustomLayoutItem": () => (/* binding */ isCustomLayoutItem),
2518
- /* harmony export */ "isDropdownLayoutItem": () => (/* binding */ isDropdownLayoutItem),
2519
- /* harmony export */ "isMenuLayoutItem": () => (/* binding */ isMenuLayoutItem)
2520
- /* harmony export */ });
2521
- /**
2522
- * Describes a basic weighted, possibly visible item
2523
- */
2524
-
2525
- /**
2526
- * Describes a menu that displays a dropdown list of items
2527
- */
2528
-
2529
- /**
2530
- * Describes a menu that displays a sub menu (not a dropdown list)
2531
- */
2532
-
2533
- /**
2534
- * Describes a horizontal menu item which is either a route item or dropdown menu
2535
- */
2536
- function isCustomLayoutItem(value) {
2537
- return !!value.render;
2538
- }
2539
- function isDropdownLayoutItem(value) {
2540
- return !!value.dropdown;
2541
- }
2542
- function isMenuLayoutItem(value) {
2543
- return !!value.menu;
2544
- }
2545
-
2546
- /***/ }),
2547
-
2548
- /***/ "./layout/utils.tsx":
2549
- /*!**************************!*\
2550
- !*** ./layout/utils.tsx ***!
2551
- \**************************/
2552
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
2553
-
2554
- __webpack_require__.r(__webpack_exports__);
2555
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
2556
- /* harmony export */ "splitPositionedItems": () => (/* binding */ splitPositionedItems),
2557
- /* harmony export */ "linkParameters": () => (/* binding */ linkParameters),
2558
- /* harmony export */ "getText": () => (/* binding */ getText),
2559
- /* harmony export */ "getIcon": () => (/* binding */ getIcon)
2560
- /* harmony export */ });
2561
- /* harmony import */ var _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/toConsumableArray */ "@babel/runtime/helpers/toConsumableArray");
2562
- /* harmony import */ var _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0__);
2563
- /* harmony import */ var react_router_dom__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react-router-dom */ "react-router-dom");
2564
- /* harmony import */ var react_router_dom__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react_router_dom__WEBPACK_IMPORTED_MODULE_1__);
2565
- /* harmony import */ var semantic_ui_react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! semantic-ui-react */ "semantic-ui-react");
2566
- /* harmony import */ var semantic_ui_react__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(semantic_ui_react__WEBPACK_IMPORTED_MODULE_2__);
2567
- /* harmony import */ var _commonItems__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../commonItems */ "./commonItems.ts");
2568
- /* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! react/jsx-dev-runtime */ "react/jsx-dev-runtime");
2569
- /* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_4__);
2570
-
2571
- var _jsxFileName = "/home/mike/dev/imperium/packages/layout/src/layout/utils.tsx";
2572
-
2573
-
2574
-
2575
-
2576
-
2577
- /**
2578
- * Splits positioned items into left and right arrays (if horizontal)
2579
- * @param items
2580
- */
2581
- function splitPositionedItems(items) {
2582
- return items.reduce(function (memo, v) {
2583
- if ((0,_commonItems__WEBPACK_IMPORTED_MODULE_3__.isHorizontalPositionedItem)(v) && v.position === 'right') {
2584
- return {
2585
- leftItems: memo.leftItems,
2586
- rightItems: [].concat(_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0___default()(memo.rightItems), [v])
2587
- };
2588
- }
2589
-
2590
- return {
2591
- leftItems: [].concat(_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0___default()(memo.leftItems), [v]),
2592
- rightItems: memo.rightItems
2593
- };
2594
- }, {
2595
- leftItems: [],
2596
- rightItems: []
2597
- });
2598
- }
2599
- function linkParameters(item, data) {
2600
- return item.to ? {
2601
- as: react_router_dom__WEBPACK_IMPORTED_MODULE_1__.Link,
2602
- active: data.active,
2603
- to: typeof item.to === 'function' ? item.to(data) : item.to
2604
- } : {};
2605
- }
2606
- function getText(item, data) {
2607
- return typeof item.text === 'function' ? item.text(data) : item.text;
2608
- }
2609
- function getIcon(item, data) {
2610
- // Generate the icon component, if it exists
2611
- var iconName;
2612
-
2613
- if (item.icon) {
2614
- iconName = typeof item.icon === 'function' ? item.icon(data) : item.icon;
2615
- }
2616
-
2617
- return item.icon ? /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxDEV)(semantic_ui_react__WEBPACK_IMPORTED_MODULE_2__.Icon, {
2618
- name: iconName
2619
- }, void 0, false, {
2620
- fileName: _jsxFileName,
2621
- lineNumber: 50,
2622
- columnNumber: 21
2623
- }, this) : null;
2624
- }
2625
-
2626
- /***/ }),
2627
-
2628
- /***/ "./layout/withLayout.tsx":
2629
- /*!*******************************!*\
2630
- !*** ./layout/withLayout.tsx ***!
2631
- \*******************************/
2632
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
2633
-
2634
- __webpack_require__.r(__webpack_exports__);
2635
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
2636
- /* harmony export */ "withLayout": () => (/* binding */ withLayout)
2637
- /* harmony export */ });
2638
- /* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/defineProperty */ "@babel/runtime/helpers/defineProperty");
2639
- /* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__);
2640
- /* harmony import */ var _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/toConsumableArray */ "@babel/runtime/helpers/toConsumableArray");
2641
- /* harmony import */ var _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_1__);
2642
- /* harmony import */ var debug__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! debug */ "debug");
2643
- /* harmony import */ var debug__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(debug__WEBPACK_IMPORTED_MODULE_2__);
2644
- /* harmony import */ var _datahooks_DataHooks__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../datahooks/DataHooks */ "./datahooks/DataHooks.tsx");
2645
- /* harmony import */ var _datahooks_PermissionHooks__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../datahooks/PermissionHooks */ "./datahooks/PermissionHooks.tsx");
2646
- /* harmony import */ var _types__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../types */ "./types.ts");
2647
- /* harmony import */ var _components_Layout__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./components/Layout */ "./layout/components/Layout.tsx");
2648
- /* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! react/jsx-dev-runtime */ "react/jsx-dev-runtime");
2649
- /* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_7__);
2650
-
2651
-
2652
- var _jsxFileName = "/home/mike/dev/imperium/packages/layout/src/layout/withLayout.tsx";
2653
-
2654
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
2655
-
2656
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
2657
-
2658
-
2659
-
2660
-
2661
-
2662
-
2663
-
2664
-
2665
- var d = debug__WEBPACK_IMPORTED_MODULE_2___default()('imperium.layout.withLayout');
2666
- var initialLayoutModuleData = {
2667
- dataHooks: [],
2668
- permissionSelectorHooks: [],
2669
- primaryMenu: [],
2670
- statusbar: [],
2671
- secondaryMenu: [],
2672
- footer: []
2673
- };
2674
- function withLayout(client) {
2675
- var layoutModuleData = client.modules.reduce(function (memo, module) {
2676
- if ((0,_types__WEBPACK_IMPORTED_MODULE_5__.isImperiumLayoutClientModule)(module)) {
2677
- return {
2678
- dataHooks: [].concat(_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_1___default()(memo.dataHooks || []), _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_1___default()(module.layout.dataHooks || [])),
2679
- permissionSelectorHooks: [].concat(_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_1___default()(memo.permissionSelectorHooks || []), _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_1___default()(module.layout.permissionSelectorHooks || [])),
2680
- primaryMenu: [].concat(_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_1___default()(memo.primaryMenu || []), _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_1___default()(module.layout.primaryMenu || [])),
2681
- statusbar: [].concat(_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_1___default()(memo.statusbar || []), _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_1___default()(module.layout.statusbar || [])),
2682
- secondaryMenu: [].concat(_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_1___default()(memo.secondaryMenu || []), _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_1___default()(module.layout.secondaryMenu || [])),
2683
- footer: [].concat(_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_1___default()(memo.footer || []), _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_1___default()(module.layout.footer || []))
2684
- };
2685
- }
2686
-
2687
- return memo;
2688
- }, initialLayoutModuleData);
2689
- d('Layout items processed', layoutModuleData); // eslint-disable-next-line @typescript-eslint/no-explicit-any
2690
-
2691
- return function layoutHoc(Wrapped) {
2692
- var displayName = Wrapped.displayName || Wrapped.name || '';
2693
-
2694
- function WithLayout(props) {
2695
- return /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_7__.jsxDEV)(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_7__.Fragment, {
2696
- children: [/*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_7__.jsxDEV)(_components_Layout__WEBPACK_IMPORTED_MODULE_6__.Layout, _objectSpread(_objectSpread({}, layoutModuleData), {}, {
2697
- children: /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_7__.jsxDEV)(Wrapped, _objectSpread(_objectSpread({}, props), {}, {
2698
- layout: layoutModuleData
2699
- }), void 0, false, {
2700
- fileName: _jsxFileName,
2701
- lineNumber: 45,
2702
- columnNumber: 7
2703
- }, this)
2704
- }), void 0, false, {
2705
- fileName: _jsxFileName,
2706
- lineNumber: 44,
2707
- columnNumber: 6
2708
- }, this), /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_7__.jsxDEV)(_datahooks_DataHooks__WEBPACK_IMPORTED_MODULE_3__.DataHooks, {
2709
- dataHooks: layoutModuleData.dataHooks
2710
- }, void 0, false, {
2711
- fileName: _jsxFileName,
2712
- lineNumber: 47,
2713
- columnNumber: 6
2714
- }, this), /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_7__.jsxDEV)(_datahooks_PermissionHooks__WEBPACK_IMPORTED_MODULE_4__.PermissionHooks, {
2715
- permissionHooks: layoutModuleData.permissionSelectorHooks
2716
- }, void 0, false, {
2717
- fileName: _jsxFileName,
2718
- lineNumber: 48,
2719
- columnNumber: 6
2720
- }, this)]
2721
- }, void 0, true);
2722
- }
2723
-
2724
- WithLayout.displayName = "withLayout(".concat(displayName, ")");
2725
- return WithLayout;
2726
- };
2727
- }
2728
-
2729
- /***/ }),
2730
-
2731
- /***/ "./state.ts":
2732
- /*!******************!*\
2733
- !*** ./state.ts ***!
2734
- \******************/
2735
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
2736
-
2737
- __webpack_require__.r(__webpack_exports__);
2738
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
2739
- /* harmony export */ "state": () => (/* binding */ state),
2740
- /* harmony export */ "useLayoutState": () => (/* binding */ useLayoutState),
2741
- /* harmony export */ "actions": () => (/* binding */ actions)
2742
- /* harmony export */ });
2743
- /* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/defineProperty */ "@babel/runtime/helpers/defineProperty");
2744
- /* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__);
2745
- /* harmony import */ var _imperium_state__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @imperium/state */ "@imperium/state");
2746
- /* harmony import */ var _imperium_state__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_imperium_state__WEBPACK_IMPORTED_MODULE_1__);
2747
- /* harmony import */ var _reduxjs_toolkit__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @reduxjs/toolkit */ "@reduxjs/toolkit");
2748
- /* harmony import */ var _reduxjs_toolkit__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_reduxjs_toolkit__WEBPACK_IMPORTED_MODULE_2__);
2749
-
2750
-
2751
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
2752
-
2753
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
2754
-
2755
- /* eslint-disable no-param-reassign */
2756
-
2757
-
2758
- var state = (0,_reduxjs_toolkit__WEBPACK_IMPORTED_MODULE_2__.createSlice)({
2759
- name: 'imperiumLayout',
2760
- initialState: {
2761
- isMobile: false,
2762
- params: {},
2763
- permissions: {}
2764
- },
2765
- reducers: {
2766
- setMobile: function setMobile(st, action) {
2767
- return _objectSpread(_objectSpread({}, st), {}, {
2768
- isMobile: action.payload
2769
- });
2770
- },
2771
- setParams: function setParams(st, action) {
2772
- st.params = action.payload;
2773
- },
2774
- setPermission: function setPermission(st, action) {
2775
- st.permissions[action.payload.permission] = action.payload.result;
2776
- }
2777
- }
2778
- });
2779
- var useLayoutState = (0,_imperium_state__WEBPACK_IMPORTED_MODULE_1__.createSliceHook)(state);
2780
- var actions = state.actions;
2781
-
2782
-
2783
- /***/ }),
2784
-
2785
- /***/ "./types.ts":
2786
- /*!******************!*\
2787
- !*** ./types.ts ***!
2788
- \******************/
2789
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
2790
-
2791
- __webpack_require__.r(__webpack_exports__);
2792
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
2793
- /* harmony export */ "isImperiumLayoutClientModule": () => (/* binding */ isImperiumLayoutClientModule)
2794
- /* harmony export */ });
2795
- /**
2796
- * A hook that selects from redux state.
2797
- */
2798
-
2799
- /**
2800
- * The visibility query can either be a mingo query or a function that returns a boolean. The data is an object with the router path merged with any state selector hook data.
2801
- */
2802
- function isImperiumLayoutClientModule(module) {
2803
- var layoutModule = module;
2804
- return layoutModule.layout !== undefined;
2805
- }
2806
-
2807
- /***/ }),
2808
-
2809
- /***/ "./utils.ts":
2810
- /*!******************!*\
2811
- !*** ./utils.ts ***!
2812
- \******************/
2813
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
2814
-
2815
- __webpack_require__.r(__webpack_exports__);
2816
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
2817
- /* harmony export */ "sortWeightedItems": () => (/* binding */ sortWeightedItems)
2818
- /* harmony export */ });
2819
- /* harmony import */ var lodash_memoize__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash/memoize */ "lodash/memoize");
2820
- /* harmony import */ var lodash_memoize__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash_memoize__WEBPACK_IMPORTED_MODULE_0__);
2821
- /* harmony import */ var lodash_sortBy__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! lodash/sortBy */ "lodash/sortBy");
2822
- /* harmony import */ var lodash_sortBy__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(lodash_sortBy__WEBPACK_IMPORTED_MODULE_1__);
2823
-
2824
-
2825
-
2826
- /**
2827
- * Sorts weighted items
2828
- */
2829
- var sortWeightedItems = lodash_memoize__WEBPACK_IMPORTED_MODULE_0___default()(function sortWeightedItemsImpl(items) {
2830
- return lodash_sortBy__WEBPACK_IMPORTED_MODULE_1___default()(items, function (v) {
2831
- return v.weight || 0;
2832
- });
2833
- });
2834
-
2835
- /***/ }),
2836
-
2837
- /***/ "./content/components/styles.css":
2838
- /*!***************************************!*\
2839
- !*** ./content/components/styles.css ***!
2840
- \***************************************/
2841
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
2842
-
2843
- __webpack_require__.r(__webpack_exports__);
2844
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
2845
- /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
2846
- /* harmony export */ });
2847
- /* harmony import */ var _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js");
2848
- /* harmony import */ var _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__);
2849
- /* harmony import */ var _node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js */ "../../../node_modules/style-loader/dist/runtime/styleDomAPI.js");
2850
- /* harmony import */ var _node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__);
2851
- /* harmony import */ var _node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js */ "../../../node_modules/style-loader/dist/runtime/insertBySelector.js");
2852
- /* harmony import */ var _node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__);
2853
- /* harmony import */ var _node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js */ "../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js");
2854
- /* harmony import */ var _node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__);
2855
- /* harmony import */ var _node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! !../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js */ "../../../node_modules/style-loader/dist/runtime/insertStyleElement.js");
2856
- /* harmony import */ var _node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__);
2857
- /* harmony import */ var _node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! !../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js */ "../../../node_modules/style-loader/dist/runtime/styleTagTransform.js");
2858
- /* harmony import */ var _node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__);
2859
- /* harmony import */ var _node_modules_css_loader_dist_cjs_js_ruleSet_1_rules_2_use_2_styles_css__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! !!../../../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[2].use[2]!./styles.css */ "../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[2].use[2]!./content/components/styles.css");
2860
-
2861
-
2862
-
2863
-
2864
-
2865
-
2866
-
2867
-
2868
-
2869
-
2870
-
2871
- var options = {};
2872
-
2873
- options.styleTagTransform = (_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default());
2874
- options.setAttributes = (_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default());
2875
-
2876
- options.insert = _node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, "head");
2877
-
2878
- options.domAPI = (_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default());
2879
- options.insertStyleElement = (_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default());
2880
-
2881
- var update = _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_node_modules_css_loader_dist_cjs_js_ruleSet_1_rules_2_use_2_styles_css__WEBPACK_IMPORTED_MODULE_6__["default"], options);
2882
-
2883
-
2884
-
2885
-
2886
- /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_node_modules_css_loader_dist_cjs_js_ruleSet_1_rules_2_use_2_styles_css__WEBPACK_IMPORTED_MODULE_6__["default"] && _node_modules_css_loader_dist_cjs_js_ruleSet_1_rules_2_use_2_styles_css__WEBPACK_IMPORTED_MODULE_6__["default"].locals ? _node_modules_css_loader_dist_cjs_js_ruleSet_1_rules_2_use_2_styles_css__WEBPACK_IMPORTED_MODULE_6__["default"].locals : undefined);
2887
-
2888
-
2889
- /***/ }),
2890
-
2891
- /***/ "./layout/components/styles.css":
2892
- /*!**************************************!*\
2893
- !*** ./layout/components/styles.css ***!
2894
- \**************************************/
2895
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
2896
-
2897
- __webpack_require__.r(__webpack_exports__);
2898
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
2899
- /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
2900
- /* harmony export */ });
2901
- /* harmony import */ var _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js");
2902
- /* harmony import */ var _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__);
2903
- /* harmony import */ var _node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js */ "../../../node_modules/style-loader/dist/runtime/styleDomAPI.js");
2904
- /* harmony import */ var _node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__);
2905
- /* harmony import */ var _node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js */ "../../../node_modules/style-loader/dist/runtime/insertBySelector.js");
2906
- /* harmony import */ var _node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__);
2907
- /* harmony import */ var _node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js */ "../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js");
2908
- /* harmony import */ var _node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__);
2909
- /* harmony import */ var _node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! !../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js */ "../../../node_modules/style-loader/dist/runtime/insertStyleElement.js");
2910
- /* harmony import */ var _node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__);
2911
- /* harmony import */ var _node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! !../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js */ "../../../node_modules/style-loader/dist/runtime/styleTagTransform.js");
2912
- /* harmony import */ var _node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__);
2913
- /* harmony import */ var _node_modules_css_loader_dist_cjs_js_ruleSet_1_rules_2_use_2_styles_css__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! !!../../../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[2].use[2]!./styles.css */ "../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[2].use[2]!./layout/components/styles.css");
2914
-
2915
-
2916
-
2917
-
2918
-
2919
-
2920
-
2921
-
2922
-
2923
-
2924
-
2925
- var options = {};
2926
-
2927
- options.styleTagTransform = (_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default());
2928
- options.setAttributes = (_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default());
2929
-
2930
- options.insert = _node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, "head");
2931
-
2932
- options.domAPI = (_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default());
2933
- options.insertStyleElement = (_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default());
2934
-
2935
- var update = _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_node_modules_css_loader_dist_cjs_js_ruleSet_1_rules_2_use_2_styles_css__WEBPACK_IMPORTED_MODULE_6__["default"], options);
2936
-
2937
-
2938
-
2939
-
2940
- /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_node_modules_css_loader_dist_cjs_js_ruleSet_1_rules_2_use_2_styles_css__WEBPACK_IMPORTED_MODULE_6__["default"] && _node_modules_css_loader_dist_cjs_js_ruleSet_1_rules_2_use_2_styles_css__WEBPACK_IMPORTED_MODULE_6__["default"].locals ? _node_modules_css_loader_dist_cjs_js_ruleSet_1_rules_2_use_2_styles_css__WEBPACK_IMPORTED_MODULE_6__["default"].locals : undefined);
2941
-
2942
-
2943
- /***/ }),
2944
-
2945
- /***/ "../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js":
2946
- /*!***********************************************************************************!*\
2947
- !*** ../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js ***!
2948
- \***********************************************************************************/
2949
- /***/ ((module) => {
2950
-
2951
-
2952
-
2953
- var stylesInDOM = [];
2954
-
2955
- function getIndexByIdentifier(identifier) {
2956
- var result = -1;
2957
-
2958
- for (var i = 0; i < stylesInDOM.length; i++) {
2959
- if (stylesInDOM[i].identifier === identifier) {
2960
- result = i;
2961
- break;
2962
- }
2963
- }
2964
-
2965
- return result;
2966
- }
2967
-
2968
- function modulesToDom(list, options) {
2969
- var idCountMap = {};
2970
- var identifiers = [];
2971
-
2972
- for (var i = 0; i < list.length; i++) {
2973
- var item = list[i];
2974
- var id = options.base ? item[0] + options.base : item[0];
2975
- var count = idCountMap[id] || 0;
2976
- var identifier = "".concat(id, " ").concat(count);
2977
- idCountMap[id] = count + 1;
2978
- var indexByIdentifier = getIndexByIdentifier(identifier);
2979
- var obj = {
2980
- css: item[1],
2981
- media: item[2],
2982
- sourceMap: item[3],
2983
- supports: item[4],
2984
- layer: item[5]
2985
- };
2986
-
2987
- if (indexByIdentifier !== -1) {
2988
- stylesInDOM[indexByIdentifier].references++;
2989
- stylesInDOM[indexByIdentifier].updater(obj);
2990
- } else {
2991
- var updater = addElementStyle(obj, options);
2992
- options.byIndex = i;
2993
- stylesInDOM.splice(i, 0, {
2994
- identifier: identifier,
2995
- updater: updater,
2996
- references: 1
2997
- });
2998
- }
2999
-
3000
- identifiers.push(identifier);
3001
- }
3002
-
3003
- return identifiers;
3004
- }
3005
-
3006
- function addElementStyle(obj, options) {
3007
- var api = options.domAPI(options);
3008
- api.update(obj);
3009
-
3010
- var updater = function updater(newObj) {
3011
- if (newObj) {
3012
- if (newObj.css === obj.css && newObj.media === obj.media && newObj.sourceMap === obj.sourceMap && newObj.supports === obj.supports && newObj.layer === obj.layer) {
3013
- return;
3014
- }
3015
-
3016
- api.update(obj = newObj);
3017
- } else {
3018
- api.remove();
3019
- }
3020
- };
3021
-
3022
- return updater;
3023
- }
3024
-
3025
- module.exports = function (list, options) {
3026
- options = options || {};
3027
- list = list || [];
3028
- var lastIdentifiers = modulesToDom(list, options);
3029
- return function update(newList) {
3030
- newList = newList || [];
3031
-
3032
- for (var i = 0; i < lastIdentifiers.length; i++) {
3033
- var identifier = lastIdentifiers[i];
3034
- var index = getIndexByIdentifier(identifier);
3035
- stylesInDOM[index].references--;
3036
- }
3037
-
3038
- var newLastIdentifiers = modulesToDom(newList, options);
3039
-
3040
- for (var _i = 0; _i < lastIdentifiers.length; _i++) {
3041
- var _identifier = lastIdentifiers[_i];
3042
-
3043
- var _index = getIndexByIdentifier(_identifier);
3044
-
3045
- if (stylesInDOM[_index].references === 0) {
3046
- stylesInDOM[_index].updater();
3047
-
3048
- stylesInDOM.splice(_index, 1);
3049
- }
3050
- }
3051
-
3052
- lastIdentifiers = newLastIdentifiers;
3053
- };
3054
- };
3055
-
3056
- /***/ }),
3057
-
3058
- /***/ "../../../node_modules/style-loader/dist/runtime/insertBySelector.js":
3059
- /*!***************************************************************************!*\
3060
- !*** ../../../node_modules/style-loader/dist/runtime/insertBySelector.js ***!
3061
- \***************************************************************************/
3062
- /***/ ((module) => {
3063
-
3064
-
3065
-
3066
- var memo = {};
3067
- /* istanbul ignore next */
3068
-
3069
- function getTarget(target) {
3070
- if (typeof memo[target] === "undefined") {
3071
- var styleTarget = document.querySelector(target); // Special case to return head of iframe instead of iframe itself
3072
-
3073
- if (window.HTMLIFrameElement && styleTarget instanceof window.HTMLIFrameElement) {
3074
- try {
3075
- // This will throw an exception if access to iframe is blocked
3076
- // due to cross-origin restrictions
3077
- styleTarget = styleTarget.contentDocument.head;
3078
- } catch (e) {
3079
- // istanbul ignore next
3080
- styleTarget = null;
3081
- }
3082
- }
3083
-
3084
- memo[target] = styleTarget;
3085
- }
3086
-
3087
- return memo[target];
3088
- }
3089
- /* istanbul ignore next */
3090
-
3091
-
3092
- function insertBySelector(insert, style) {
3093
- var target = getTarget(insert);
3094
-
3095
- if (!target) {
3096
- throw new Error("Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.");
3097
- }
3098
-
3099
- target.appendChild(style);
3100
- }
3101
-
3102
- module.exports = insertBySelector;
3103
-
3104
- /***/ }),
3105
-
3106
- /***/ "../../../node_modules/style-loader/dist/runtime/insertStyleElement.js":
3107
- /*!*****************************************************************************!*\
3108
- !*** ../../../node_modules/style-loader/dist/runtime/insertStyleElement.js ***!
3109
- \*****************************************************************************/
3110
- /***/ ((module) => {
3111
-
3112
-
3113
-
3114
- /* istanbul ignore next */
3115
- function insertStyleElement(options) {
3116
- var element = document.createElement("style");
3117
- options.setAttributes(element, options.attributes);
3118
- options.insert(element, options.options);
3119
- return element;
3120
- }
3121
-
3122
- module.exports = insertStyleElement;
3123
-
3124
- /***/ }),
3125
-
3126
- /***/ "../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js":
3127
- /*!*****************************************************************************************!*\
3128
- !*** ../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js ***!
3129
- \*****************************************************************************************/
3130
- /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
3131
-
3132
-
3133
-
3134
- /* istanbul ignore next */
3135
- function setAttributesWithoutAttributes(styleElement) {
3136
- var nonce = true ? __webpack_require__.nc : 0;
3137
-
3138
- if (nonce) {
3139
- styleElement.setAttribute("nonce", nonce);
3140
- }
3141
- }
3142
-
3143
- module.exports = setAttributesWithoutAttributes;
3144
-
3145
- /***/ }),
3146
-
3147
- /***/ "../../../node_modules/style-loader/dist/runtime/styleDomAPI.js":
3148
- /*!**********************************************************************!*\
3149
- !*** ../../../node_modules/style-loader/dist/runtime/styleDomAPI.js ***!
3150
- \**********************************************************************/
3151
- /***/ ((module) => {
3152
-
3153
-
3154
-
3155
- /* istanbul ignore next */
3156
- function apply(styleElement, options, obj) {
3157
- var css = "";
3158
-
3159
- if (obj.supports) {
3160
- css += "@supports (".concat(obj.supports, ") {");
3161
- }
3162
-
3163
- if (obj.media) {
3164
- css += "@media ".concat(obj.media, " {");
3165
- }
3166
-
3167
- var needLayer = typeof obj.layer !== "undefined";
3168
-
3169
- if (needLayer) {
3170
- css += "@layer".concat(obj.layer.length > 0 ? " ".concat(obj.layer) : "", " {");
3171
- }
3172
-
3173
- css += obj.css;
3174
-
3175
- if (needLayer) {
3176
- css += "}";
3177
- }
3178
-
3179
- if (obj.media) {
3180
- css += "}";
3181
- }
3182
-
3183
- if (obj.supports) {
3184
- css += "}";
3185
- }
3186
-
3187
- var sourceMap = obj.sourceMap;
3188
-
3189
- if (sourceMap && typeof btoa !== "undefined") {
3190
- css += "\n/*# sourceMappingURL=data:application/json;base64,".concat(btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))), " */");
3191
- } // For old IE
3192
-
3193
- /* istanbul ignore if */
3194
-
3195
-
3196
- options.styleTagTransform(css, styleElement, options.options);
3197
- }
3198
-
3199
- function removeStyleElement(styleElement) {
3200
- // istanbul ignore if
3201
- if (styleElement.parentNode === null) {
3202
- return false;
3203
- }
3204
-
3205
- styleElement.parentNode.removeChild(styleElement);
3206
- }
3207
- /* istanbul ignore next */
3208
-
3209
-
3210
- function domAPI(options) {
3211
- var styleElement = options.insertStyleElement(options);
3212
- return {
3213
- update: function update(obj) {
3214
- apply(styleElement, options, obj);
3215
- },
3216
- remove: function remove() {
3217
- removeStyleElement(styleElement);
3218
- }
3219
- };
3220
- }
3221
-
3222
- module.exports = domAPI;
3223
-
3224
- /***/ }),
3225
-
3226
- /***/ "../../../node_modules/style-loader/dist/runtime/styleTagTransform.js":
3227
- /*!****************************************************************************!*\
3228
- !*** ../../../node_modules/style-loader/dist/runtime/styleTagTransform.js ***!
3229
- \****************************************************************************/
3230
- /***/ ((module) => {
3231
-
3232
-
3233
-
3234
- /* istanbul ignore next */
3235
- function styleTagTransform(css, styleElement) {
3236
- if (styleElement.styleSheet) {
3237
- styleElement.styleSheet.cssText = css;
3238
- } else {
3239
- while (styleElement.firstChild) {
3240
- styleElement.removeChild(styleElement.firstChild);
3241
- }
3242
-
3243
- styleElement.appendChild(document.createTextNode(css));
3244
- }
3245
- }
3246
-
3247
- module.exports = styleTagTransform;
3248
-
3249
- /***/ }),
3250
-
3251
- /***/ "@babel/runtime/helpers/defineProperty":
3252
- /*!********************************************************!*\
3253
- !*** external "@babel/runtime/helpers/defineProperty" ***!
3254
- \********************************************************/
3255
- /***/ ((module) => {
3256
-
3257
- module.exports = require("@babel/runtime/helpers/defineProperty");
3258
-
3259
- /***/ }),
3260
-
3261
- /***/ "@babel/runtime/helpers/objectWithoutProperties":
3262
- /*!*****************************************************************!*\
3263
- !*** external "@babel/runtime/helpers/objectWithoutProperties" ***!
3264
- \*****************************************************************/
3265
- /***/ ((module) => {
3266
-
3267
- module.exports = require("@babel/runtime/helpers/objectWithoutProperties");
3268
-
3269
- /***/ }),
3270
-
3271
- /***/ "@babel/runtime/helpers/slicedToArray":
3272
- /*!*******************************************************!*\
3273
- !*** external "@babel/runtime/helpers/slicedToArray" ***!
3274
- \*******************************************************/
3275
- /***/ ((module) => {
3276
-
3277
- module.exports = require("@babel/runtime/helpers/slicedToArray");
3278
-
3279
- /***/ }),
3280
-
3281
- /***/ "@babel/runtime/helpers/toConsumableArray":
3282
- /*!***********************************************************!*\
3283
- !*** external "@babel/runtime/helpers/toConsumableArray" ***!
3284
- \***********************************************************/
3285
- /***/ ((module) => {
3286
-
3287
- module.exports = require("@babel/runtime/helpers/toConsumableArray");
3288
-
3289
- /***/ }),
3290
-
3291
- /***/ "@imperium/auth-client":
3292
- /*!****************************************!*\
3293
- !*** external "@imperium/auth-client" ***!
3294
- \****************************************/
3295
- /***/ ((module) => {
3296
-
3297
- module.exports = require("@imperium/auth-client");
3298
-
3299
- /***/ }),
3300
-
3301
- /***/ "@imperium/state":
3302
- /*!**********************************!*\
3303
- !*** external "@imperium/state" ***!
3304
- \**********************************/
3305
- /***/ ((module) => {
3306
-
3307
- module.exports = require("@imperium/state");
3308
-
3309
- /***/ }),
3310
-
3311
- /***/ "@reduxjs/toolkit":
3312
- /*!***********************************!*\
3313
- !*** external "@reduxjs/toolkit" ***!
3314
- \***********************************/
3315
- /***/ ((module) => {
3316
-
3317
- module.exports = require("@reduxjs/toolkit");
3318
-
3319
- /***/ }),
3320
-
3321
- /***/ "@thx/controls":
3322
- /*!********************************!*\
3323
- !*** external "@thx/controls" ***!
3324
- \********************************/
3325
- /***/ ((module) => {
3326
-
3327
- module.exports = require("@thx/controls");
3328
-
3329
- /***/ }),
3330
-
3331
- /***/ "debug":
3332
- /*!************************!*\
3333
- !*** external "debug" ***!
3334
- \************************/
3335
- /***/ ((module) => {
3336
-
3337
- module.exports = require("debug");
3338
-
3339
- /***/ }),
3340
-
3341
- /***/ "lodash":
3342
- /*!*************************!*\
3343
- !*** external "lodash" ***!
3344
- \*************************/
3345
- /***/ ((module) => {
3346
-
3347
- module.exports = require("lodash");
3348
-
3349
- /***/ }),
3350
-
3351
- /***/ "lodash/compact":
3352
- /*!*********************************!*\
3353
- !*** external "lodash/compact" ***!
3354
- \*********************************/
3355
- /***/ ((module) => {
3356
-
3357
- module.exports = require("lodash/compact");
3358
-
3359
- /***/ }),
3360
-
3361
- /***/ "lodash/flowRight":
3362
- /*!***********************************!*\
3363
- !*** external "lodash/flowRight" ***!
3364
- \***********************************/
3365
- /***/ ((module) => {
3366
-
3367
- module.exports = require("lodash/flowRight");
3368
-
3369
- /***/ }),
3370
-
3371
- /***/ "lodash/fp":
3372
- /*!****************************!*\
3373
- !*** external "lodash/fp" ***!
3374
- \****************************/
3375
- /***/ ((module) => {
3376
-
3377
- module.exports = require("lodash/fp");
3378
-
3379
- /***/ }),
3380
-
3381
- /***/ "lodash/groupBy":
3382
- /*!*********************************!*\
3383
- !*** external "lodash/groupBy" ***!
3384
- \*********************************/
3385
- /***/ ((module) => {
3386
-
3387
- module.exports = require("lodash/groupBy");
3388
-
3389
- /***/ }),
3390
-
3391
- /***/ "lodash/memoize":
3392
- /*!*********************************!*\
3393
- !*** external "lodash/memoize" ***!
3394
- \*********************************/
3395
- /***/ ((module) => {
3396
-
3397
- module.exports = require("lodash/memoize");
3398
-
3399
- /***/ }),
3400
-
3401
- /***/ "lodash/merge":
3402
- /*!*******************************!*\
3403
- !*** external "lodash/merge" ***!
3404
- \*******************************/
3405
- /***/ ((module) => {
3406
-
3407
- module.exports = require("lodash/merge");
3408
-
3409
- /***/ }),
3410
-
3411
- /***/ "lodash/sortBy":
3412
- /*!********************************!*\
3413
- !*** external "lodash/sortBy" ***!
3414
- \********************************/
3415
- /***/ ((module) => {
3416
-
3417
- module.exports = require("lodash/sortBy");
3418
-
3419
- /***/ }),
3420
-
3421
- /***/ "mingo":
3422
- /*!************************!*\
3423
- !*** external "mingo" ***!
3424
- \************************/
3425
- /***/ ((module) => {
3426
-
3427
- module.exports = require("mingo");
3428
-
3429
- /***/ }),
3430
-
3431
- /***/ "querystring":
3432
- /*!******************************!*\
3433
- !*** external "querystring" ***!
3434
- \******************************/
3435
- /***/ ((module) => {
3436
-
3437
- module.exports = require("querystring");
3438
-
3439
- /***/ }),
3440
-
3441
- /***/ "react":
3442
- /*!************************!*\
3443
- !*** external "react" ***!
3444
- \************************/
3445
- /***/ ((module) => {
3446
-
3447
- module.exports = require("react");
3448
-
3449
- /***/ }),
3450
-
3451
- /***/ "react-redux":
3452
- /*!******************************!*\
3453
- !*** external "react-redux" ***!
3454
- \******************************/
3455
- /***/ ((module) => {
3456
-
3457
- module.exports = require("react-redux");
3458
-
3459
- /***/ }),
3460
-
3461
- /***/ "react-responsive":
3462
- /*!***********************************!*\
3463
- !*** external "react-responsive" ***!
3464
- \***********************************/
3465
- /***/ ((module) => {
3466
-
3467
- module.exports = require("react-responsive");
3468
-
3469
- /***/ }),
3470
-
3471
- /***/ "react-router":
3472
- /*!*******************************!*\
3473
- !*** external "react-router" ***!
3474
- \*******************************/
3475
- /***/ ((module) => {
3476
-
3477
- module.exports = require("react-router");
3478
-
3479
- /***/ }),
3480
-
3481
- /***/ "react-router-dom":
3482
- /*!***********************************!*\
3483
- !*** external "react-router-dom" ***!
3484
- \***********************************/
3485
- /***/ ((module) => {
3486
-
3487
- module.exports = require("react-router-dom");
3488
-
3489
- /***/ }),
3490
-
3491
- /***/ "react/jsx-dev-runtime":
3492
- /*!****************************************!*\
3493
- !*** external "react/jsx-dev-runtime" ***!
3494
- \****************************************/
3495
- /***/ ((module) => {
3496
-
3497
- module.exports = require("react/jsx-dev-runtime");
3498
-
3499
- /***/ }),
3500
-
3501
- /***/ "semantic-ui-react":
3502
- /*!************************************!*\
3503
- !*** external "semantic-ui-react" ***!
3504
- \************************************/
3505
- /***/ ((module) => {
3506
-
3507
- module.exports = require("semantic-ui-react");
3508
-
3509
- /***/ })
3510
-
3511
- /******/ });
3512
- /************************************************************************/
3513
- /******/ // The module cache
3514
- /******/ var __webpack_module_cache__ = {};
3515
- /******/
3516
- /******/ // The require function
3517
- /******/ function __webpack_require__(moduleId) {
3518
- /******/ // Check if module is in cache
3519
- /******/ var cachedModule = __webpack_module_cache__[moduleId];
3520
- /******/ if (cachedModule !== undefined) {
3521
- /******/ return cachedModule.exports;
3522
- /******/ }
3523
- /******/ // Create a new module (and put it into the cache)
3524
- /******/ var module = __webpack_module_cache__[moduleId] = {
3525
- /******/ id: moduleId,
3526
- /******/ // no module.loaded needed
3527
- /******/ exports: {}
3528
- /******/ };
3529
- /******/
3530
- /******/ // Execute the module function
3531
- /******/ __webpack_modules__[moduleId](module, module.exports, __webpack_require__);
3532
- /******/
3533
- /******/ // Return the exports of the module
3534
- /******/ return module.exports;
3535
- /******/ }
3536
- /******/
3537
- /************************************************************************/
3538
- /******/ /* webpack/runtime/compat get default export */
3539
- /******/ (() => {
3540
- /******/ // getDefaultExport function for compatibility with non-harmony modules
3541
- /******/ __webpack_require__.n = (module) => {
3542
- /******/ var getter = module && module.__esModule ?
3543
- /******/ () => (module['default']) :
3544
- /******/ () => (module);
3545
- /******/ __webpack_require__.d(getter, { a: getter });
3546
- /******/ return getter;
3547
- /******/ };
3548
- /******/ })();
3549
- /******/
3550
- /******/ /* webpack/runtime/define property getters */
3551
- /******/ (() => {
3552
- /******/ // define getter functions for harmony exports
3553
- /******/ __webpack_require__.d = (exports, definition) => {
3554
- /******/ for(var key in definition) {
3555
- /******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {
3556
- /******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });
3557
- /******/ }
3558
- /******/ }
3559
- /******/ };
3560
- /******/ })();
3561
- /******/
3562
- /******/ /* webpack/runtime/hasOwnProperty shorthand */
3563
- /******/ (() => {
3564
- /******/ __webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))
3565
- /******/ })();
3566
- /******/
3567
- /******/ /* webpack/runtime/make namespace object */
3568
- /******/ (() => {
3569
- /******/ // define __esModule on exports
3570
- /******/ __webpack_require__.r = (exports) => {
3571
- /******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
3572
- /******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
3573
- /******/ }
3574
- /******/ Object.defineProperty(exports, '__esModule', { value: true });
3575
- /******/ };
3576
- /******/ })();
3577
- /******/
3578
- /************************************************************************/
3579
- var __webpack_exports__ = {};
3580
- // This entry need to be wrapped in an IIFE because it need to be isolated against other modules in the chunk.
3581
- (() => {
3582
- /*!******************!*\
3583
- !*** ./index.ts ***!
3584
- \******************/
3585
- __webpack_require__.r(__webpack_exports__);
3586
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
3587
- /* harmony export */ "layoutClientModule": () => (/* binding */ layoutClientModule),
3588
- /* harmony export */ "useLayoutState": () => (/* reexport safe */ _state__WEBPACK_IMPORTED_MODULE_2__.useLayoutState),
3589
- /* harmony export */ "layoutActions": () => (/* reexport safe */ _state__WEBPACK_IMPORTED_MODULE_2__.actions),
3590
- /* harmony export */ "createPages": () => (/* reexport safe */ _content_createPages__WEBPACK_IMPORTED_MODULE_3__.createPages),
3591
- /* harmony export */ "dividerSidebarItem": () => (/* reexport safe */ _content_dividerSidebarItem__WEBPACK_IMPORTED_MODULE_4__.dividerSidebarItem)
3592
- /* harmony export */ });
3593
- /* harmony import */ var _layout_hooks_useMobileLayout__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./layout/hooks/useMobileLayout */ "./layout/hooks/useMobileLayout.ts");
3594
- /* harmony import */ var _layout_withLayout__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./layout/withLayout */ "./layout/withLayout.tsx");
3595
- /* harmony import */ var _state__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./state */ "./state.ts");
3596
- /* harmony import */ var _content_createPages__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./content/createPages */ "./content/createPages.tsx");
3597
- /* harmony import */ var _content_dividerSidebarItem__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./content/dividerSidebarItem */ "./content/dividerSidebarItem.ts");
3598
-
3599
-
3600
-
3601
- function layoutClientModule() {
3602
- return {
3603
- name: '@imperium/layout',
3604
- order: 30,
3605
- hocs: [_layout_withLayout__WEBPACK_IMPORTED_MODULE_1__.withLayout],
3606
- state: _state__WEBPACK_IMPORTED_MODULE_2__.state,
3607
- layout: {
3608
- dataHooks: [_layout_hooks_useMobileLayout__WEBPACK_IMPORTED_MODULE_0__.useMobileLayout]
3609
- }
3610
- };
3611
- }
3612
-
3613
-
3614
-
3615
- })();
3616
-
3617
- module.exports = __webpack_exports__;
3618
- /******/ })()
3619
- ;
3620
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,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TztBQUNOZCxJQUFBQSxJQUFJLEVBQUUsa0JBREE7QUFFTmUsSUFBQUEsS0FBSyxFQUFFLEVBRkQ7QUFHTkMsSUFBQUEsSUFBSSxFQUFFLENBQUN6QiwwREFBRCxDQUhBO0FBSU41RixJQUFBQSxLQUFLLEVBQUxBLHlDQUpNO0FBS05pRyxJQUFBQSxNQUFNLEVBQUU7QUFDUHhLLE1BQUFBLFNBQVMsRUFBRSxDQUFDb0osMEVBQUQ7QUFESjtBQUxGLEdBQVA7QUFTQTtBQUdEO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9jb250ZW50L2NvbXBvbmVudHMvc3R5bGVzLmNzcyIsIndlYnBhY2s6Ly8vLi9sYXlvdXQvY29tcG9uZW50cy9zdHlsZXMuY3NzIiwid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvYXBpLmpzIiwid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvc291cmNlTWFwcy5qcyIsIndlYnBhY2s6Ly8vLi9jb21tb25JdGVtcy50cyIsIndlYnBhY2s6Ly8vLi9jb250ZW50L2NvbXBvbmVudHMvQWN0aW9uRm9ybS50c3giLCJ3ZWJwYWNrOi8vLy4vY29udGVudC9jb21wb25lbnRzL0FjdGlvbkZvcm1TaWRlYmFySXRlbUNvbXBvbmVudC50c3giLCJ3ZWJwYWNrOi8vLy4vY29udGVudC9jb21wb25lbnRzL0FjdGlvblNpZGViYXJJdGVtQ29tcG9uZW50LnRzeCIsIndlYnBhY2s6Ly8vLi9jb250ZW50L2NvbXBvbmVudHMvQ29udGVudENvbXBvbmVudC50c3giLCJ3ZWJwYWNrOi8vLy4vY29udGVudC9jb21wb25lbnRzL0N1c3RvbVNpZGViYXJJdGVtQ29tcG9uZW50LnRzeCIsIndlYnBhY2s6Ly8vLi9jb250ZW50L2NvbXBvbmVudHMvSGVhZGVyLnRzeCIsIndlYnBhY2s6Ly8vLi9jb250ZW50L2NvbXBvbmVudHMvUGxhaW5TaWRlYmFySXRlbS50c3giLCJ3ZWJwYWNrOi8vLy4vY29udGVudC9jb21wb25lbnRzL1NpZGViYXJJdGVtV3JhcHBlci50c3giLCJ3ZWJwYWNrOi8vLy4vY29udGVudC9jcmVhdGVQYWdlcy50c3giLCJ3ZWJwYWNrOi8vLy4vY29udGVudC9kaXZpZGVyU2lkZWJhckl0ZW0udHMiLCJ3ZWJwYWNrOi8vLy4vY29udGVudC9ob29rcy91c2VCdWlsZENvbnRlbnREYXRhLnRzIiwid2VicGFjazovLy8uL2NvbnRlbnQvdHlwZXMudHMiLCJ3ZWJwYWNrOi8vLy4vY29udGVudC91dGlscy50c3giLCJ3ZWJwYWNrOi8vLy4vZGF0YWhvb2tzL0RhdGFIb29rcy50c3giLCJ3ZWJwYWNrOi8vLy4vZGF0YWhvb2tzL0V4ZWN1dGVEYXRhSG9vay50c3giLCJ3ZWJwYWNrOi8vLy4vZGF0YWhvb2tzL0V4ZWN1dGVQZXJtaXNzaW9uSG9vay50c3giLCJ3ZWJwYWNrOi8vLy4vZGF0YWhvb2tzL1Blcm1pc3Npb25Ib29rcy50c3giLCJ3ZWJwYWNrOi8vLy4vaG9va3MvdXNlQnVpbGREYXRhLnRzIiwid2VicGFjazovLy8uL2hvb2tzL3VzZUlzQWN0aXZlUm91dGUudHMiLCJ3ZWJwYWNrOi8vLy4vaG9va3MvdXNlU2VsZWN0UGVybWlzc2lvbi50cyIsIndlYnBhY2s6Ly8vLi9ob29rcy91c2VTZWxlY3RTdGF0ZS50cyIsIndlYnBhY2s6Ly8vLi9sYXlvdXQvY29tcG9uZW50cy9DdXN0b21MYXlvdXRJdGVtQ29tcG9uZW50LnRzeCIsIndlYnBhY2s6Ly8vLi9sYXlvdXQvY29tcG9uZW50cy9Ecm9wZG93bkl0ZW0udHN4Iiwid2VicGFjazovLy8uL2xheW91dC9jb21wb25lbnRzL0xheW91dC50c3giLCJ3ZWJwYWNrOi8vLy4vbGF5b3V0L2NvbXBvbmVudHMvTGF5b3V0SXRlbUJhci50c3giLCJ3ZWJwYWNrOi8vLy4vbGF5b3V0L2NvbXBvbmVudHMvTGF5b3V0SXRlbVdyYXBwZXIudHN4Iiwid2VicGFjazovLy8uL2xheW91dC9jb21wb25lbnRzL01lbnVJdGVtLnRzeCIsIndlYnBhY2s6Ly8vLi9sYXlvdXQvY29tcG9uZW50cy9QbGFpbkl0ZW0udHN4Iiwid2VicGFjazovLy8uL2xheW91dC9jb21wb25lbnRzL1NlY29uZGFyeU1lbnVUb2dnbGVJdGVtLnRzeCIsIndlYnBhY2s6Ly8vLi9sYXlvdXQvaG9va3MvdXNlTW9iaWxlTGF5b3V0LnRzIiwid2VicGFjazovLy8uL2xheW91dC9tb3ZlSXRlbXMudHMiLCJ3ZWJwYWNrOi8vLy4vbGF5b3V0L3R5cGVzLnRzIiwid2VicGFjazovLy8uL2xheW91dC91dGlscy50c3giLCJ3ZWJwYWNrOi8vLy4vbGF5b3V0L3dpdGhMYXlvdXQudHN4Iiwid2VicGFjazovLy8uL3N0YXRlLnRzIiwid2VicGFjazovLy8uL3R5cGVzLnRzIiwid2VicGFjazovLy8uL3V0aWxzLnRzIiwid2VicGFjazovLy8uL2NvbnRlbnQvY29tcG9uZW50cy9zdHlsZXMuY3NzP2QxZjUiLCJ3ZWJwYWNrOi8vLy4vbGF5b3V0L2NvbXBvbmVudHMvc3R5bGVzLmNzcz8xNmYwIiwid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbmplY3RTdHlsZXNJbnRvU3R5bGVUYWcuanMiLCJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luc2VydEJ5U2VsZWN0b3IuanMiLCJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luc2VydFN0eWxlRWxlbWVudC5qcyIsIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc2V0QXR0cmlidXRlc1dpdGhvdXRBdHRyaWJ1dGVzLmpzIiwid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zdHlsZURvbUFQSS5qcyIsIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc3R5bGVUYWdUcmFuc2Zvcm0uanMiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIGNvbW1vbmpzIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9kZWZpbmVQcm9wZXJ0eVwiIiwid2VicGFjazovLy9leHRlcm5hbCBjb21tb25qcyBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvb2JqZWN0V2l0aG91dFByb3BlcnRpZXNcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgY29tbW9uanMgXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL3NsaWNlZFRvQXJyYXlcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgY29tbW9uanMgXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL3RvQ29uc3VtYWJsZUFycmF5XCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIGNvbW1vbmpzIFwiQGltcGVyaXVtL2F1dGgtY2xpZW50XCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIGNvbW1vbmpzIFwiQGltcGVyaXVtL3N0YXRlXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIGNvbW1vbmpzIFwiQHJlZHV4anMvdG9vbGtpdFwiIiwid2VicGFjazovLy9leHRlcm5hbCBjb21tb25qcyBcIkB0aHgvY29udHJvbHNcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgY29tbW9uanMgXCJkZWJ1Z1wiIiwid2VicGFjazovLy9leHRlcm5hbCBjb21tb25qcyBcImxvZGFzaFwiIiwid2VicGFjazovLy9leHRlcm5hbCBjb21tb25qcyBcImxvZGFzaC9jb21wYWN0XCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIGNvbW1vbmpzIFwibG9kYXNoL2Zsb3dSaWdodFwiIiwid2VicGFjazovLy9leHRlcm5hbCBjb21tb25qcyBcImxvZGFzaC9mcFwiIiwid2VicGFjazovLy9leHRlcm5hbCBjb21tb25qcyBcImxvZGFzaC9ncm91cEJ5XCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIGNvbW1vbmpzIFwibG9kYXNoL21lbW9pemVcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgY29tbW9uanMgXCJsb2Rhc2gvbWVyZ2VcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgY29tbW9uanMgXCJsb2Rhc2gvc29ydEJ5XCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIGNvbW1vbmpzIFwibWluZ29cIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgY29tbW9uanMgXCJxdWVyeXN0cmluZ1wiIiwid2VicGFjazovLy9leHRlcm5hbCBjb21tb25qcyBcInJlYWN0XCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIGNvbW1vbmpzIFwicmVhY3QtcmVkdXhcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgY29tbW9uanMgXCJyZWFjdC1yZXNwb25zaXZlXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIGNvbW1vbmpzIFwicmVhY3Qtcm91dGVyXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIGNvbW1vbmpzIFwicmVhY3Qtcm91dGVyLWRvbVwiIiwid2VicGFjazovLy9leHRlcm5hbCBjb21tb25qcyBcInJlYWN0L2pzeC1kZXYtcnVudGltZVwiIiwid2VicGFjazovLy9leHRlcm5hbCBjb21tb25qcyBcInNlbWFudGljLXVpLXJlYWN0XCIiLCJ3ZWJwYWNrOi8vL3dlYnBhY2svYm9vdHN0cmFwIiwid2VicGFjazovLy93ZWJwYWNrL3J1bnRpbWUvY29tcGF0IGdldCBkZWZhdWx0IGV4cG9ydCIsIndlYnBhY2s6Ly8vd2VicGFjay9ydW50aW1lL2RlZmluZSBwcm9wZXJ0eSBnZXR0ZXJzIiwid2VicGFjazovLy93ZWJwYWNrL3J1bnRpbWUvaGFzT3duUHJvcGVydHkgc2hvcnRoYW5kIiwid2VicGFjazovLy93ZWJwYWNrL3J1bnRpbWUvbWFrZSBuYW1lc3BhY2Ugb2JqZWN0Iiwid2VicGFjazovLy8uL2luZGV4LnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIEltcG9ydHNcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fIGZyb20gXCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvc291cmNlTWFwcy5qc1wiO1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyBmcm9tIFwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2FwaS5qc1wiO1xudmFyIF9fX0NTU19MT0FERVJfRVhQT1JUX19fID0gX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fKF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18pO1xuLy8gTW9kdWxlXG5fX19DU1NfTE9BREVSX0VYUE9SVF9fXy5wdXNoKFttb2R1bGUuaWQsIFwiLmNvbnRlbnQtY29tcG9uZW50cy1zdHlsZXNfX3BhcmVudC0tcWNacXcge1xcblxcdGZsZXg6IDE7XFxuXFx0ZGlzcGxheTogZmxleDtcXG5cXHRmbGV4LWRpcmVjdGlvbjogcm93O1xcblxcdGhlaWdodDogMTAwJTtcXG59XFxuXFxuLmNvbnRlbnQtY29tcG9uZW50cy1zdHlsZXNfX3dyYXBwZXItLW1ielNpIHtcXG5cXHRmbGV4OiAxO1xcblxcdGZsZXgtYmFzaXM6IGNhbGMoNjUlKTtcXG59XFxuXFxuLmNvbnRlbnQtY29tcG9uZW50cy1zdHlsZXNfX2NvbnRlbnQtLWZoU1hHIHtcXG5cXHRtYXJnaW46IDAgMC44cmVtIDAuOHJlbSAwLjhyZW07XFxufVxcblxcbi5jb250ZW50LWNvbXBvbmVudHMtc3R5bGVzX19jb250ZW50RnVsbC0ta1VXM18ge1xcblxcdGhlaWdodDogMTAwJTtcXG5cXHRtYXJnaW46IDAgMDtcXG59XFxuXFxuLmNvbnRlbnQtY29tcG9uZW50cy1zdHlsZXNfX2hlYWRlci0tTk9HeWMge1xcblxcdHBhZGRpbmc6IDAuOHJlbSAwLjhyZW0gMCAwLjhyZW07XFxuXFx0bWFyZ2luLWJvdHRvbTogMC44cmVtO1xcbn1cXG5cXG4uY29udGVudC1jb21wb25lbnRzLXN0eWxlc19fc2lkZWJhci0tckxVNVIge1xcblxcdG1pbi13aWR0aDogMjUwcHg7XFxuXFx0cGFkZGluZzogMTBweDtcXG5cXHRvdmVyZmxvdy15OiBhdXRvO1xcblxcdG92ZXJmbG93LXg6IGhpZGRlbjtcXG59XFxuXFxuLmNvbnRlbnQtY29tcG9uZW50cy1zdHlsZXNfX3NpZGViYXJJdGVtLS1FeWxnZiB7XFxuXFx0bWFyZ2luLWJvdHRvbTogNXB4O1xcbn1cXG5cXG4uY29udGVudC1jb21wb25lbnRzLXN0eWxlc19fYWN0aW9uc0hlYWRlci0tTjZ6ek0ge1xcblxcdGRpc3BsYXk6IG5vbmU7XFxufVxcblxcbkBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1heC13aWR0aDogNzY4cHgpIHtcXG5cXHQuY29udGVudC1jb21wb25lbnRzLXN0eWxlc19fcGFyZW50LS1xY1pxdyB7XFxuXFx0XFx0ZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcXG5cXHRcXHRoZWlnaHQ6IGF1dG87XFxuXFx0fVxcblxcdC5jb250ZW50LWNvbXBvbmVudHMtc3R5bGVzX193cmFwcGVyLS1tYnpTaSB7XFxuXFx0XFx0Ym9yZGVyLXJpZ2h0OiBub25lO1xcblxcdFxcdHBhZGRpbmctYm90dG9tOiAyMHB4O1xcblxcdH1cXG5cXHQuY29udGVudC1jb21wb25lbnRzLXN0eWxlc19fc2lkZWJhci0tckxVNVIge1xcblxcdFxcdG1pbi13aWR0aDogYXV0bztcXG5cXHR9XFxuXFx0LmNvbnRlbnQtY29tcG9uZW50cy1zdHlsZXNfX2FjdGlvbnNIZWFkZXItLU42enpNIHtcXG5cXHRcXHRkaXNwbGF5OiBibG9jaztcXG5cXHRcXHRtYXJnaW4tYm90dG9tOiA1cHg7XFxuXFx0fVxcbn1cXG5cIiwgXCJcIix7XCJ2ZXJzaW9uXCI6MyxcInNvdXJjZXNcIjpbXCJ3ZWJwYWNrOi8vLi9jb250ZW50L2NvbXBvbmVudHMvc3R5bGVzLmNzc1wiXSxcIm5hbWVzXCI6W10sXCJtYXBwaW5nc1wiOlwiQUFBQTtDQUNDLE9BQU87Q0FDUCxhQUFhO0NBQ2IsbUJBQW1CO0NBQ25CLFlBQVk7QUFDYjs7QUFFQTtDQUNDLE9BQU87Q0FDUCxxQkFBcUI7QUFDdEI7O0FBRUE7Q0FDQyw4QkFBOEI7QUFDL0I7O0FBRUE7Q0FDQyxZQUFZO0NBQ1osV0FBVztBQUNaOztBQUVBO0NBQ0MsK0JBQStCO0NBQy9CLHFCQUFxQjtBQUN0Qjs7QUFFQTtDQUNDLGdCQUFnQjtDQUNoQixhQUFhO0NBQ2IsZ0JBQWdCO0NBQ2hCLGtCQUFrQjtBQUNuQjs7QUFFQTtDQUNDLGtCQUFrQjtBQUNuQjs7QUFFQTtDQUNDLGFBQWE7QUFDZDs7QUFFQTtDQUNDO0VBQ0Msc0JBQXNCO0VBQ3RCLFlBQVk7Q0FDYjtDQUNBO0VBQ0Msa0JBQWtCO0VBQ2xCLG9CQUFvQjtDQUNyQjtDQUNBO0VBQ0MsZUFBZTtDQUNoQjtDQUNBO0VBQ0MsY0FBYztFQUNkLGtCQUFrQjtDQUNuQjtBQUNEXCIsXCJzb3VyY2VzQ29udGVudFwiOltcIi5wYXJlbnQge1xcblxcdGZsZXg6IDE7XFxuXFx0ZGlzcGxheTogZmxleDtcXG5cXHRmbGV4LWRpcmVjdGlvbjogcm93O1xcblxcdGhlaWdodDogMTAwJTtcXG59XFxuXFxuLndyYXBwZXIge1xcblxcdGZsZXg6IDE7XFxuXFx0ZmxleC1iYXNpczogY2FsYyg2NSUpO1xcbn1cXG5cXG4uY29udGVudCB7XFxuXFx0bWFyZ2luOiAwIDAuOHJlbSAwLjhyZW0gMC44cmVtO1xcbn1cXG5cXG4uY29udGVudEZ1bGwge1xcblxcdGhlaWdodDogMTAwJTtcXG5cXHRtYXJnaW46IDAgMDtcXG59XFxuXFxuLmhlYWRlciB7XFxuXFx0cGFkZGluZzogMC44cmVtIDAuOHJlbSAwIDAuOHJlbTtcXG5cXHRtYXJnaW4tYm90dG9tOiAwLjhyZW07XFxufVxcblxcbi5zaWRlYmFyIHtcXG5cXHRtaW4td2lkdGg6IDI1MHB4O1xcblxcdHBhZGRpbmc6IDEwcHg7XFxuXFx0b3ZlcmZsb3cteTogYXV0bztcXG5cXHRvdmVyZmxvdy14OiBoaWRkZW47XFxufVxcblxcbi5zaWRlYmFySXRlbSB7XFxuXFx0bWFyZ2luLWJvdHRvbTogNXB4O1xcbn1cXG5cXG4uYWN0aW9uc0hlYWRlciB7XFxuXFx0ZGlzcGxheTogbm9uZTtcXG59XFxuXFxuQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA3NjhweCkge1xcblxcdC5wYXJlbnQge1xcblxcdFxcdGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XFxuXFx0XFx0aGVpZ2h0OiBhdXRvO1xcblxcdH1cXG5cXHQud3JhcHBlciB7XFxuXFx0XFx0Ym9yZGVyLXJpZ2h0OiBub25lO1xcblxcdFxcdHBhZGRpbmctYm90dG9tOiAyMHB4O1xcblxcdH1cXG5cXHQuc2lkZWJhciB7XFxuXFx0XFx0bWluLXdpZHRoOiBhdXRvO1xcblxcdH1cXG5cXHQuYWN0aW9uc0hlYWRlciB7XFxuXFx0XFx0ZGlzcGxheTogYmxvY2s7XFxuXFx0XFx0bWFyZ2luLWJvdHRvbTogNXB4O1xcblxcdH1cXG59XFxuXCJdLFwic291cmNlUm9vdFwiOlwiXCJ9XSk7XG4vLyBFeHBvcnRzXG5fX19DU1NfTE9BREVSX0VYUE9SVF9fXy5sb2NhbHMgPSB7XG5cdFwicGFyZW50XCI6IFwiY29udGVudC1jb21wb25lbnRzLXN0eWxlc19fcGFyZW50LS1xY1pxd1wiLFxuXHRcIndyYXBwZXJcIjogXCJjb250ZW50LWNvbXBvbmVudHMtc3R5bGVzX193cmFwcGVyLS1tYnpTaVwiLFxuXHRcImNvbnRlbnRcIjogXCJjb250ZW50LWNvbXBvbmVudHMtc3R5bGVzX19jb250ZW50LS1maFNYR1wiLFxuXHRcImNvbnRlbnRGdWxsXCI6IFwiY29udGVudC1jb21wb25lbnRzLXN0eWxlc19fY29udGVudEZ1bGwtLWtVVzNfXCIsXG5cdFwiaGVhZGVyXCI6IFwiY29udGVudC1jb21wb25lbnRzLXN0eWxlc19faGVhZGVyLS1OT0d5Y1wiLFxuXHRcInNpZGViYXJcIjogXCJjb250ZW50LWNvbXBvbmVudHMtc3R5bGVzX19zaWRlYmFyLS1yTFU1UlwiLFxuXHRcInNpZGViYXJJdGVtXCI6IFwiY29udGVudC1jb21wb25lbnRzLXN0eWxlc19fc2lkZWJhckl0ZW0tLUV5bGdmXCIsXG5cdFwiYWN0aW9uc0hlYWRlclwiOiBcImNvbnRlbnQtY29tcG9uZW50cy1zdHlsZXNfX2FjdGlvbnNIZWFkZXItLU42enpNXCJcbn07XG5leHBvcnQgZGVmYXVsdCBfX19DU1NfTE9BREVSX0VYUE9SVF9fXztcbiIsIi8vIEltcG9ydHNcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fIGZyb20gXCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvc291cmNlTWFwcy5qc1wiO1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyBmcm9tIFwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2FwaS5qc1wiO1xudmFyIF9fX0NTU19MT0FERVJfRVhQT1JUX19fID0gX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fKF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18pO1xuLy8gTW9kdWxlXG5fX19DU1NfTE9BREVSX0VYUE9SVF9fXy5wdXNoKFttb2R1bGUuaWQsIFwiLyogTmVlZCB0byBwYXNzIDEwMCUgaGVpZ2h0IGFsbCB0aGUgd2F5IGRvd24gKi9cXG4jcm9vdCB7XFxuXFx0aGVpZ2h0OiAxMDAlO1xcbn1cXG4jcm9vdCA+IGRpdiB7XFxuXFx0aGVpZ2h0OiAxMDAlO1xcbn1cXG5cXG4ubGF5b3V0LWNvbXBvbmVudHMtc3R5bGVzX19wYXJlbnQtLXN3czhPIHtcXG5cXHRtaW4taGVpZ2h0OiAxMDAlO1xcblxcdGRpc3BsYXk6IGZsZXg7XFxuXFx0ZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcXG59XFxuXFxuLmxheW91dC1jb21wb25lbnRzLXN0eWxlc19fbWVudWJhci0tV01jWG4ge1xcblxcdGJvcmRlci1yYWRpdXM6IDAgIWltcG9ydGFudDtcXG5cXHRtYXJnaW46IDAgIWltcG9ydGFudDtcXG59XFxuXFxuLmxheW91dC1jb21wb25lbnRzLXN0eWxlc19fc3RhdHVzYmFyLS1IYTRmXyB7XFxuXFx0bWFyZ2luOiAwICFpbXBvcnRhbnQ7XFxuXFx0Ym9yZGVyLXJhZGl1czogMCAhaW1wb3J0YW50O1xcbn1cXG5cXG4ubGF5b3V0LWNvbXBvbmVudHMtc3R5bGVzX19zZWNvbmRhcnlNZW51LS1ieXU2eSB7XFxuXFx0bWluLXdpZHRoOiAyMjBweCAhaW1wb3J0YW50O1xcblxcdHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7XFxuXFx0aGVpZ2h0OiAxMDAlICFpbXBvcnRhbnQ7XFxuXFx0Ym9yZGVyLXJhZGl1czogMCAhaW1wb3J0YW50O1xcblxcdG1hcmdpbjogMCAhaW1wb3J0YW50O1xcblxcdG92ZXJmbG93LXg6IGF1dG87IC8qIGFkZGVkIHRvIG1ha2UgdGhlIGNvbnRlbnQgc2Nyb2xsIGFuZCBub3QgdGhlIHdob2xlIGxheW91dCAqL1xcblxcdHRyYW5zaXRpb246IG1hcmdpbi1sZWZ0IDAuM3MgZWFzZS1pbi1vdXQ7XFxufVxcblxcbi5sYXlvdXQtY29tcG9uZW50cy1zdHlsZXNfX3NlY29uZGFyeU1lbnVIaWRkZW4tLWVrN1F6IHtcXG5cXHRtYXJnaW4tbGVmdDogLTIyMHB4ICFpbXBvcnRhbnQ7XFxufVxcblxcbi5sYXlvdXQtY29tcG9uZW50cy1zdHlsZXNfX2NvbnRlbnRXcmFwcGVyLS1TYVlHbiB7XFxuXFx0ZmxleDogMTtcXG5cXHRkaXNwbGF5OiBmbGV4O1xcblxcdGZsZXgtZGlyZWN0aW9uOiByb3c7XFxuXFx0ZmxleC13cmFwOiBub3dyYXA7XFxuXFx0cGFkZGluZzogMCAhaW1wb3J0YW50O1xcblxcdGJvcmRlcjogMCBzb2xpZCB0cmFuc3BhcmVudCAhaW1wb3J0YW50OyAvKiB0aGlzIGlzIGEgc2VnbWVudCwgYW5kIHRoZXkgc2VlbSB0byBoYXZlIGEgMXB4IHdoaXRlIGJvcmRlciBieSBkZWZhdWx0ICovXFxuXFx0b3ZlcmZsb3cteTogYXV0bzsgLyogYWRkZWQgdG8gbWFrZSB0aGUgY29udGVudCBzY3JvbGwgYW5kIG5vdCB0aGUgd2hvbGUgbGF5b3V0ICovXFxufVxcblxcbi5sYXlvdXQtY29tcG9uZW50cy1zdHlsZXNfX2NvbnRlbnQtLUpHRHVXIHtcXG5cXHRmbGV4OiAxOyAvKiBjaGFuZ2VkIHRoaXMgdG8gaGF2ZSBhIGZsZXggb2Ygb25lIGluc3RlYWQgb2YgYXV0byBzbyB0aGUgc2lkZSBtZW51IGRvZXNuJ3QgZ2V0IHNxdWlzaGVkICovXFxuXFx0YWxpZ24tY29udGVudDogZmxleC1zdGFydDtcXG5cXHRoZWlnaHQ6IDEwMCU7XFxuXFx0bWF4LWhlaWdodDogMTAwJTsgLyogYWRkZWQgdG8gbWFrZSB0aGUgY29udGVudCBzY3JvbGwgYW5kIG5vdCB0aGUgd2hvbGUgbGF5b3V0ICovXFxuXFx0b3ZlcmZsb3cteDogaGlkZGVuOyAvKiBhZGRlZCB0byBtYWtlIHRoZSBjb250ZW50IHNjcm9sbCBhbmQgbm90IHRoZSB3aG9sZSBsYXlvdXQgKi9cXG59XFxuXFxuLmxheW91dC1jb21wb25lbnRzLXN0eWxlc19fZm9vdGVyLS1BN0xTSCB7XFxuXFx0bWFyZ2luOiAwICFpbXBvcnRhbnQ7XFxuXFx0Ym9yZGVyLXJhZGl1czogMCAhaW1wb3J0YW50O1xcbn1cXG5cXG4ubGF5b3V0LWNvbXBvbmVudHMtc3R5bGVzX192ZXJ0aWNhbERyb3Bkb3duSWNvbi0tVjY5Q3cge1xcblxcdHRyYW5zZm9ybTogcm90YXRlKDBkZWcpO1xcblxcdHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjNzIDtcXG5cXHRjdXJzb3I6IHBvaW50ZXI7XFxufVxcblxcbi5sYXlvdXQtY29tcG9uZW50cy1zdHlsZXNfX3ZlcnRpY2FsRHJvcGRvd25JY29uUm90YXRlZC0tYlp5Tk8ge1xcblxcdHRyYW5zZm9ybTogcm90YXRlKDkwZGVnKTtcXG5cXHR0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMC4zcyA7XFxuXFx0Y3Vyc29yOiBwb2ludGVyO1xcbn1cXG5cXG4ubGF5b3V0LWNvbXBvbmVudHMtc3R5bGVzX192ZXJ0aWNhbERyb3Bkb3duVGl0bGUtLXM2QXNxIHtcXG5cXHRwYWRkaW5nOiAwO1xcblxcdGNvbG9yOiAjZmZmICFpbXBvcnRhbnQ7XFxufVxcblxcbi5sYXlvdXQtY29tcG9uZW50cy1zdHlsZXNfX3ZlcnRpY2FsRHJvcGRvd25Db250ZW50LS14R0h4YSB7XFxuXFx0cGFkZGluZy10b3A6IDAgIWltcG9ydGFudDtcXG5cXHRtYXJnaW46IDAgLTEuMTQyODU3MTRlbSAwIDA7XFxuXFx0Ym9yZGVyLXJhZGl1czogMDtcXG59XFxuXFxuLmxheW91dC1jb21wb25lbnRzLXN0eWxlc19faWNvbi0tR3RsNHQge1xcblxcdHRyYW5zZm9ybTogcm90YXRlKDBkZWcpO1xcblxcdHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjRzIGxpbmVhcjtcXG5cXHRjdXJzb3I6IHBvaW50ZXI7XFxufVxcblxcbi5sYXlvdXQtY29tcG9uZW50cy1zdHlsZXNfX2ljb25Sb3RhdGVkLS1YQjY3WSB7XFxuXFx0dHJhbnNmb3JtOiByb3RhdGUoLTE4MGRlZyk7XFxuXFx0dHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuNXM7XFxuXFx0Y3Vyc29yOiBwb2ludGVyO1xcbn1cXG5cIiwgXCJcIix7XCJ2ZXJzaW9uXCI6MyxcInNvdXJjZXNcIjpbXCJ3ZWJwYWNrOi8vLi9sYXlvdXQvY29tcG9uZW50cy9zdHlsZXMuY3NzXCJdLFwibmFtZXNcIjpbXSxcIm1hcHBpbmdzXCI6XCJBQUFBLDhDQUE4QztBQUM5QztDQUNDLFlBQVk7QUFDYjtBQUNBO0NBQ0MsWUFBWTtBQUNiOztBQUVBO0NBQ0MsZ0JBQWdCO0NBQ2hCLGFBQWE7Q0FDYixzQkFBc0I7QUFDdkI7O0FBRUE7Q0FDQywyQkFBMkI7Q0FDM0Isb0JBQW9CO0FBQ3JCOztBQUVBO0NBQ0Msb0JBQW9CO0NBQ3BCLDJCQUEyQjtBQUM1Qjs7QUFFQTtDQUNDLDJCQUEyQjtDQUMzQixzQkFBc0I7Q0FDdEIsdUJBQXVCO0NBQ3ZCLDJCQUEyQjtDQUMzQixvQkFBb0I7Q0FDcEIsZ0JBQWdCLEVBQUUsOERBQThEO0NBQ2hGLHdDQUF3QztBQUN6Qzs7QUFFQTtDQUNDLDhCQUE4QjtBQUMvQjs7QUFFQTtDQUNDLE9BQU87Q0FDUCxhQUFhO0NBQ2IsbUJBQW1CO0NBQ25CLGlCQUFpQjtDQUNqQixxQkFBcUI7Q0FDckIsc0NBQXNDLEVBQUUsMkVBQTJFO0NBQ25ILGdCQUFnQixFQUFFLDhEQUE4RDtBQUNqRjs7QUFFQTtDQUNDLE9BQU8sRUFBRSw2RkFBNkY7Q0FDdEcseUJBQXlCO0NBQ3pCLFlBQVk7Q0FDWixnQkFBZ0IsRUFBRSw4REFBOEQ7Q0FDaEYsa0JBQWtCLEVBQUUsOERBQThEO0FBQ25GOztBQUVBO0NBQ0Msb0JBQW9CO0NBQ3BCLDJCQUEyQjtBQUM1Qjs7QUFFQTtDQUNDLHVCQUF1QjtDQUN2QiwyQkFBMkI7Q0FDM0IsZUFBZTtBQUNoQjs7QUFFQTtDQUNDLHdCQUF3QjtDQUN4QiwyQkFBMkI7Q0FDM0IsZUFBZTtBQUNoQjs7QUFFQTtDQUNDLFVBQVU7Q0FDVixzQkFBc0I7QUFDdkI7O0FBRUE7Q0FDQyx5QkFBeUI7Q0FDekIsMkJBQTJCO0NBQzNCLGdCQUFnQjtBQUNqQjs7QUFFQTtDQUNDLHVCQUF1QjtDQUN2QixpQ0FBaUM7Q0FDakMsZUFBZTtBQUNoQjs7QUFFQTtDQUNDLDBCQUEwQjtDQUMxQiwwQkFBMEI7Q0FDMUIsZUFBZTtBQUNoQlwiLFwic291cmNlc0NvbnRlbnRcIjpbXCIvKiBOZWVkIHRvIHBhc3MgMTAwJSBoZWlnaHQgYWxsIHRoZSB3YXkgZG93biAqL1xcbjpnbG9iYWwoI3Jvb3QpIHtcXG5cXHRoZWlnaHQ6IDEwMCU7XFxufVxcbjpnbG9iYWwoI3Jvb3QpID4gZGl2IHtcXG5cXHRoZWlnaHQ6IDEwMCU7XFxufVxcblxcbi5wYXJlbnQge1xcblxcdG1pbi1oZWlnaHQ6IDEwMCU7XFxuXFx0ZGlzcGxheTogZmxleDtcXG5cXHRmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xcbn1cXG5cXG4ubWVudWJhciB7XFxuXFx0Ym9yZGVyLXJhZGl1czogMCAhaW1wb3J0YW50O1xcblxcdG1hcmdpbjogMCAhaW1wb3J0YW50O1xcbn1cXG5cXG4uc3RhdHVzYmFyIHtcXG5cXHRtYXJnaW46IDAgIWltcG9ydGFudDtcXG5cXHRib3JkZXItcmFkaXVzOiAwICFpbXBvcnRhbnQ7XFxufVxcblxcbi5zZWNvbmRhcnlNZW51IHtcXG5cXHRtaW4td2lkdGg6IDIyMHB4ICFpbXBvcnRhbnQ7XFxuXFx0d2lkdGg6IDEwMCUgIWltcG9ydGFudDtcXG5cXHRoZWlnaHQ6IDEwMCUgIWltcG9ydGFudDtcXG5cXHRib3JkZXItcmFkaXVzOiAwICFpbXBvcnRhbnQ7XFxuXFx0bWFyZ2luOiAwICFpbXBvcnRhbnQ7XFxuXFx0b3ZlcmZsb3cteDogYXV0bzsgLyogYWRkZWQgdG8gbWFrZSB0aGUgY29udGVudCBzY3JvbGwgYW5kIG5vdCB0aGUgd2hvbGUgbGF5b3V0ICovXFxuXFx0dHJhbnNpdGlvbjogbWFyZ2luLWxlZnQgMC4zcyBlYXNlLWluLW91dDtcXG59XFxuXFxuLnNlY29uZGFyeU1lbnVIaWRkZW4ge1xcblxcdG1hcmdpbi1sZWZ0OiAtMjIwcHggIWltcG9ydGFudDtcXG59XFxuXFxuLmNvbnRlbnRXcmFwcGVyIHtcXG5cXHRmbGV4OiAxO1xcblxcdGRpc3BsYXk6IGZsZXg7XFxuXFx0ZmxleC1kaXJlY3Rpb246IHJvdztcXG5cXHRmbGV4LXdyYXA6IG5vd3JhcDtcXG5cXHRwYWRkaW5nOiAwICFpbXBvcnRhbnQ7XFxuXFx0Ym9yZGVyOiAwIHNvbGlkIHRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7IC8qIHRoaXMgaXMgYSBzZWdtZW50LCBhbmQgdGhleSBzZWVtIHRvIGhhdmUgYSAxcHggd2hpdGUgYm9yZGVyIGJ5IGRlZmF1bHQgKi9cXG5cXHRvdmVyZmxvdy15OiBhdXRvOyAvKiBhZGRlZCB0byBtYWtlIHRoZSBjb250ZW50IHNjcm9sbCBhbmQgbm90IHRoZSB3aG9sZSBsYXlvdXQgKi9cXG59XFxuXFxuLmNvbnRlbnQge1xcblxcdGZsZXg6IDE7IC8qIGNoYW5nZWQgdGhpcyB0byBoYXZlIGEgZmxleCBvZiBvbmUgaW5zdGVhZCBvZiBhdXRvIHNvIHRoZSBzaWRlIG1lbnUgZG9lc24ndCBnZXQgc3F1aXNoZWQgKi9cXG5cXHRhbGlnbi1jb250ZW50OiBmbGV4LXN0YXJ0O1xcblxcdGhlaWdodDogMTAwJTtcXG5cXHRtYXgtaGVpZ2h0OiAxMDAlOyAvKiBhZGRlZCB0byBtYWtlIHRoZSBjb250ZW50IHNjcm9sbCBhbmQgbm90IHRoZSB3aG9sZSBsYXlvdXQgKi9cXG5cXHRvdmVyZmxvdy14OiBoaWRkZW47IC8qIGFkZGVkIHRvIG1ha2UgdGhlIGNvbnRlbnQgc2Nyb2xsIGFuZCBub3QgdGhlIHdob2xlIGxheW91dCAqL1xcbn1cXG5cXG4uZm9vdGVyIHtcXG5cXHRtYXJnaW46IDAgIWltcG9ydGFudDtcXG5cXHRib3JkZXItcmFkaXVzOiAwICFpbXBvcnRhbnQ7XFxufVxcblxcbi52ZXJ0aWNhbERyb3Bkb3duSWNvbiB7XFxuXFx0dHJhbnNmb3JtOiByb3RhdGUoMGRlZyk7XFxuXFx0dHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuM3MgO1xcblxcdGN1cnNvcjogcG9pbnRlcjtcXG59XFxuXFxuLnZlcnRpY2FsRHJvcGRvd25JY29uUm90YXRlZCB7XFxuXFx0dHJhbnNmb3JtOiByb3RhdGUoOTBkZWcpO1xcblxcdHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjNzIDtcXG5cXHRjdXJzb3I6IHBvaW50ZXI7XFxufVxcblxcbi52ZXJ0aWNhbERyb3Bkb3duVGl0bGUge1xcblxcdHBhZGRpbmc6IDA7XFxuXFx0Y29sb3I6ICNmZmYgIWltcG9ydGFudDtcXG59XFxuXFxuLnZlcnRpY2FsRHJvcGRvd25Db250ZW50IHtcXG5cXHRwYWRkaW5nLXRvcDogMCAhaW1wb3J0YW50O1xcblxcdG1hcmdpbjogMCAtMS4xNDI4NTcxNGVtIDAgMDtcXG5cXHRib3JkZXItcmFkaXVzOiAwO1xcbn1cXG5cXG4uaWNvbiB7XFxuXFx0dHJhbnNmb3JtOiByb3RhdGUoMGRlZyk7XFxuXFx0dHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuNHMgbGluZWFyO1xcblxcdGN1cnNvcjogcG9pbnRlcjtcXG59XFxuXFxuLmljb25Sb3RhdGVkIHtcXG5cXHR0cmFuc2Zvcm06IHJvdGF0ZSgtMTgwZGVnKTtcXG5cXHR0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMC41cztcXG5cXHRjdXJzb3I6IHBvaW50ZXI7XFxufVxcblwiXSxcInNvdXJjZVJvb3RcIjpcIlwifV0pO1xuLy8gRXhwb3J0c1xuX19fQ1NTX0xPQURFUl9FWFBPUlRfX18ubG9jYWxzID0ge1xuXHRcInBhcmVudFwiOiBcImxheW91dC1jb21wb25lbnRzLXN0eWxlc19fcGFyZW50LS1zd3M4T1wiLFxuXHRcIm1lbnViYXJcIjogXCJsYXlvdXQtY29tcG9uZW50cy1zdHlsZXNfX21lbnViYXItLVdNY1huXCIsXG5cdFwic3RhdHVzYmFyXCI6IFwibGF5b3V0LWNvbXBvbmVudHMtc3R5bGVzX19zdGF0dXNiYXItLUhhNGZfXCIsXG5cdFwic2Vjb25kYXJ5TWVudVwiOiBcImxheW91dC1jb21wb25lbnRzLXN0eWxlc19fc2Vjb25kYXJ5TWVudS0tYnl1NnlcIixcblx0XCJzZWNvbmRhcnlNZW51SGlkZGVuXCI6IFwibGF5b3V0LWNvbXBvbmVudHMtc3R5bGVzX19zZWNvbmRhcnlNZW51SGlkZGVuLS1lazdRelwiLFxuXHRcImNvbnRlbnRXcmFwcGVyXCI6IFwibGF5b3V0LWNvbXBvbmVudHMtc3R5bGVzX19jb250ZW50V3JhcHBlci0tU2FZR25cIixcblx0XCJjb250ZW50XCI6IFwibGF5b3V0LWNvbXBvbmVudHMtc3R5bGVzX19jb250ZW50LS1KR0R1V1wiLFxuXHRcImZvb3RlclwiOiBcImxheW91dC1jb21wb25lbnRzLXN0eWxlc19fZm9vdGVyLS1BN0xTSFwiLFxuXHRcInZlcnRpY2FsRHJvcGRvd25JY29uXCI6IFwibGF5b3V0LWNvbXBvbmVudHMtc3R5bGVzX192ZXJ0aWNhbERyb3Bkb3duSWNvbi0tVjY5Q3dcIixcblx0XCJ2ZXJ0aWNhbERyb3Bkb3duSWNvblJvdGF0ZWRcIjogXCJsYXlvdXQtY29tcG9uZW50cy1zdHlsZXNfX3ZlcnRpY2FsRHJvcGRvd25JY29uUm90YXRlZC0tYlp5Tk9cIixcblx0XCJ2ZXJ0aWNhbERyb3Bkb3duVGl0bGVcIjogXCJsYXlvdXQtY29tcG9uZW50cy1zdHlsZXNfX3ZlcnRpY2FsRHJvcGRvd25UaXRsZS0tczZBc3FcIixcblx0XCJ2ZXJ0aWNhbERyb3Bkb3duQ29udGVudFwiOiBcImxheW91dC1jb21wb25lbnRzLXN0eWxlc19fdmVydGljYWxEcm9wZG93bkNvbnRlbnQtLXhHSHhhXCIsXG5cdFwiaWNvblwiOiBcImxheW91dC1jb21wb25lbnRzLXN0eWxlc19faWNvbi0tR3RsNHRcIixcblx0XCJpY29uUm90YXRlZFwiOiBcImxheW91dC1jb21wb25lbnRzLXN0eWxlc19faWNvblJvdGF0ZWQtLVhCNjdZXCJcbn07XG5leHBvcnQgZGVmYXVsdCBfX19DU1NfTE9BREVSX0VYUE9SVF9fXztcbiIsIlwidXNlIHN0cmljdFwiO1xuXG4vKlxuICBNSVQgTGljZW5zZSBodHRwOi8vd3d3Lm9wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL21pdC1saWNlbnNlLnBocFxuICBBdXRob3IgVG9iaWFzIEtvcHBlcnMgQHNva3JhXG4qL1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoY3NzV2l0aE1hcHBpbmdUb1N0cmluZykge1xuICB2YXIgbGlzdCA9IFtdOyAvLyByZXR1cm4gdGhlIGxpc3Qgb2YgbW9kdWxlcyBhcyBjc3Mgc3RyaW5nXG5cbiAgbGlzdC50b1N0cmluZyA9IGZ1bmN0aW9uIHRvU3RyaW5nKCkge1xuICAgIHJldHVybiB0aGlzLm1hcChmdW5jdGlvbiAoaXRlbSkge1xuICAgICAgdmFyIGNvbnRlbnQgPSBcIlwiO1xuICAgICAgdmFyIG5lZWRMYXllciA9IHR5cGVvZiBpdGVtWzVdICE9PSBcInVuZGVmaW5lZFwiO1xuXG4gICAgICBpZiAoaXRlbVs0XSkge1xuICAgICAgICBjb250ZW50ICs9IFwiQHN1cHBvcnRzIChcIi5jb25jYXQoaXRlbVs0XSwgXCIpIHtcIik7XG4gICAgICB9XG5cbiAgICAgIGlmIChpdGVtWzJdKSB7XG4gICAgICAgIGNvbnRlbnQgKz0gXCJAbWVkaWEgXCIuY29uY2F0KGl0ZW1bMl0sIFwiIHtcIik7XG4gICAgICB9XG5cbiAgICAgIGlmIChuZWVkTGF5ZXIpIHtcbiAgICAgICAgY29udGVudCArPSBcIkBsYXllclwiLmNvbmNhdChpdGVtWzVdLmxlbmd0aCA+IDAgPyBcIiBcIi5jb25jYXQoaXRlbVs1XSkgOiBcIlwiLCBcIiB7XCIpO1xuICAgICAgfVxuXG4gICAgICBjb250ZW50ICs9IGNzc1dpdGhNYXBwaW5nVG9TdHJpbmcoaXRlbSk7XG5cbiAgICAgIGlmIChuZWVkTGF5ZXIpIHtcbiAgICAgICAgY29udGVudCArPSBcIn1cIjtcbiAgICAgIH1cblxuICAgICAgaWYgKGl0ZW1bMl0pIHtcbiAgICAgICAgY29udGVudCArPSBcIn1cIjtcbiAgICAgIH1cblxuICAgICAgaWYgKGl0ZW1bNF0pIHtcbiAgICAgICAgY29udGVudCArPSBcIn1cIjtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGNvbnRlbnQ7XG4gICAgfSkuam9pbihcIlwiKTtcbiAgfTsgLy8gaW1wb3J0IGEgbGlzdCBvZiBtb2R1bGVzIGludG8gdGhlIGxpc3RcblxuXG4gIGxpc3QuaSA9IGZ1bmN0aW9uIGkobW9kdWxlcywgbWVkaWEsIGRlZHVwZSwgc3VwcG9ydHMsIGxheWVyKSB7XG4gICAgaWYgKHR5cGVvZiBtb2R1bGVzID09PSBcInN0cmluZ1wiKSB7XG4gICAgICBtb2R1bGVzID0gW1tudWxsLCBtb2R1bGVzLCB1bmRlZmluZWRdXTtcbiAgICB9XG5cbiAgICB2YXIgYWxyZWFkeUltcG9ydGVkTW9kdWxlcyA9IHt9O1xuXG4gICAgaWYgKGRlZHVwZSkge1xuICAgICAgZm9yICh2YXIgayA9IDA7IGsgPCB0aGlzLmxlbmd0aDsgaysrKSB7XG4gICAgICAgIHZhciBpZCA9IHRoaXNba11bMF07XG5cbiAgICAgICAgaWYgKGlkICE9IG51bGwpIHtcbiAgICAgICAgICBhbHJlYWR5SW1wb3J0ZWRNb2R1bGVzW2lkXSA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBmb3IgKHZhciBfayA9IDA7IF9rIDwgbW9kdWxlcy5sZW5ndGg7IF9rKyspIHtcbiAgICAgIHZhciBpdGVtID0gW10uY29uY2F0KG1vZHVsZXNbX2tdKTtcblxuICAgICAgaWYgKGRlZHVwZSAmJiBhbHJlYWR5SW1wb3J0ZWRNb2R1bGVzW2l0ZW1bMF1dKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAodHlwZW9mIGxheWVyICE9PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgICAgIGlmICh0eXBlb2YgaXRlbVs1XSA9PT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgICAgIGl0ZW1bNV0gPSBsYXllcjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpdGVtWzFdID0gXCJAbGF5ZXJcIi5jb25jYXQoaXRlbVs1XS5sZW5ndGggPiAwID8gXCIgXCIuY29uY2F0KGl0ZW1bNV0pIDogXCJcIiwgXCIge1wiKS5jb25jYXQoaXRlbVsxXSwgXCJ9XCIpO1xuICAgICAgICAgIGl0ZW1bNV0gPSBsYXllcjtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAobWVkaWEpIHtcbiAgICAgICAgaWYgKCFpdGVtWzJdKSB7XG4gICAgICAgICAgaXRlbVsyXSA9IG1lZGlhO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGl0ZW1bMV0gPSBcIkBtZWRpYSBcIi5jb25jYXQoaXRlbVsyXSwgXCIge1wiKS5jb25jYXQoaXRlbVsxXSwgXCJ9XCIpO1xuICAgICAgICAgIGl0ZW1bMl0gPSBtZWRpYTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoc3VwcG9ydHMpIHtcbiAgICAgICAgaWYgKCFpdGVtWzRdKSB7XG4gICAgICAgICAgaXRlbVs0XSA9IFwiXCIuY29uY2F0KHN1cHBvcnRzKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpdGVtWzFdID0gXCJAc3VwcG9ydHMgKFwiLmNvbmNhdChpdGVtWzRdLCBcIikge1wiKS5jb25jYXQoaXRlbVsxXSwgXCJ9XCIpO1xuICAgICAgICAgIGl0ZW1bNF0gPSBzdXBwb3J0cztcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBsaXN0LnB1c2goaXRlbSk7XG4gICAgfVxuICB9O1xuXG4gIHJldHVybiBsaXN0O1xufTsiLCJcInVzZSBzdHJpY3RcIjtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXRlbSkge1xuICB2YXIgY29udGVudCA9IGl0ZW1bMV07XG4gIHZhciBjc3NNYXBwaW5nID0gaXRlbVszXTtcblxuICBpZiAoIWNzc01hcHBpbmcpIHtcbiAgICByZXR1cm4gY29udGVudDtcbiAgfVxuXG4gIGlmICh0eXBlb2YgYnRvYSA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgdmFyIGJhc2U2NCA9IGJ0b2EodW5lc2NhcGUoZW5jb2RlVVJJQ29tcG9uZW50KEpTT04uc3RyaW5naWZ5KGNzc01hcHBpbmcpKSkpO1xuICAgIHZhciBkYXRhID0gXCJzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtjaGFyc2V0PXV0Zi04O2Jhc2U2NCxcIi5jb25jYXQoYmFzZTY0KTtcbiAgICB2YXIgc291cmNlTWFwcGluZyA9IFwiLyojIFwiLmNvbmNhdChkYXRhLCBcIiAqL1wiKTtcbiAgICB2YXIgc291cmNlVVJMcyA9IGNzc01hcHBpbmcuc291cmNlcy5tYXAoZnVuY3Rpb24gKHNvdXJjZSkge1xuICAgICAgcmV0dXJuIFwiLyojIHNvdXJjZVVSTD1cIi5jb25jYXQoY3NzTWFwcGluZy5zb3VyY2VSb290IHx8IFwiXCIpLmNvbmNhdChzb3VyY2UsIFwiICovXCIpO1xuICAgIH0pO1xuICAgIHJldHVybiBbY29udGVudF0uY29uY2F0KHNvdXJjZVVSTHMpLmNvbmNhdChbc291cmNlTWFwcGluZ10pLmpvaW4oXCJcXG5cIik7XG4gIH1cblxuICByZXR1cm4gW2NvbnRlbnRdLmpvaW4oXCJcXG5cIik7XG59OyIsImltcG9ydCB0eXBlIHtQZXJtaXNzaW9uU2VsZWN0b3JIb29rLCBTdGF0ZVNlbGVjdG9ySG9vaywgVmlzaWJpbGl0eVF1ZXJ5Rm59IGZyb20gJy4vdHlwZXMnO1xuXG4vKipcbiAqIERlc2NyaWJlcyBhbiBpdGVtIHRoYXQgY2FuIGhpZGUgaXRzZWxmIGJhc2VkIG9uIHJlZHV4IHN0YXRlXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVmlzaWJpbGl0eUl0ZW0ge1xuXHRzdGF0ZVNlbGVjdG9ySG9vaz86IFN0YXRlU2VsZWN0b3JIb29rIHwgU3RhdGVTZWxlY3Rvckhvb2tbXTsgLy8gSG9vayBvciBhcnJheSBvZiBob29rcyB0aGF0IHNlbGVjdCBzdGF0ZVxuXHRwZXJtaXNzaW9uU2VsZWN0b3JIb29rPzogUGVybWlzc2lvblNlbGVjdG9ySG9vayB8IFBlcm1pc3Npb25TZWxlY3Rvckhvb2tbXTsgLy8gSG9vayBvciBhcnJheSBvZiBob29rcyB0aGF0IHNlbGVjdCBwZXJtaXNzaW9uc1xuXHR2aXNpYmxlPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gfCBWaXNpYmlsaXR5UXVlcnlGbjtcbn1cblxuLyoqXG4gKiBEZXNjcmliZXMgYW4gaXRlbSB3aXRoIG9wdGlvbmFsIHdlaWdodFxuICovXG5leHBvcnQgaW50ZXJmYWNlIFdlaWdodGVkSXRlbSB7XG5cdHdlaWdodD86IG51bWJlcjsgLy8gTGFyZ2VyIG51bWJlcnMgbW92ZSByaWdodC9kb3duXG59XG5cbi8qKlxuICogRGVzY3JpYmVzIGFuIGl0ZW0gdGhhdCBsaW5rcyB0byBhIHJvdXRlXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUm91dGVJdGVtPFQ+IHtcblx0dG8/OiBzdHJpbmcgfCAoKGRhdGE6IFQpID0+IHN0cmluZyk7XG5cdGV4YWN0PzogYm9vbGVhbjtcblx0c3RyaWN0PzogYm9vbGVhbjtcblx0c2Vuc2l0aXZlPzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBEZXNjcmliZXMgYW4gaXRlbSB0aGF0IGNhbiBiZSBwb3NpdGlvbmVkIGhvcml6b250YWxseSBsZWZ0IG9yIHJpZ2h0XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSG9yaXpvbnRhbFBvc2l0aW9uZWRJdGVtIHtcblx0cG9zaXRpb24/OiAnbGVmdCcgfCAncmlnaHQnOyAvLyBEZWZhdWx0IGlzIGxlZnRcblx0c3RpY2tPbk1vYmlsZT86IGJvb2xlYW47IC8vIElmIHRydWUsIHdpbGwgbm90IGJlIGhpZGRlbiB3aGVuIGluIG1vYmlsZSBtb2RlXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0hvcml6b250YWxQb3NpdGlvbmVkSXRlbSh2YWx1ZTogYW55KTogdmFsdWUgaXMgSG9yaXpvbnRhbFBvc2l0aW9uZWRJdGVtIHtcblx0cmV0dXJuICEhKCh2YWx1ZSBhcyBIb3Jpem9udGFsUG9zaXRpb25lZEl0ZW0pLnBvc2l0aW9uIHx8ICh2YWx1ZSBhcyBIb3Jpem9udGFsUG9zaXRpb25lZEl0ZW0pLnN0aWNrT25Nb2JpbGUpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNSb3V0ZUl0ZW08VD4odmFsdWU6IGFueSk6IHZhbHVlIGlzIFJvdXRlSXRlbTxUPiB7XG5cdHJldHVybiAhISgodmFsdWUgYXMgUm91dGVJdGVtPFQ+KS50byB8fCAodmFsdWUgYXMgUm91dGVJdGVtPFQ+KS5leGFjdCB8fCAodmFsdWUgYXMgUm91dGVJdGVtPFQ+KS5zdHJpY3QgfHwgKHZhbHVlIGFzIFJvdXRlSXRlbTxUPikuc2Vuc2l0aXZlKTtcbn1cbiIsImltcG9ydCB0eXBlIHtEZWZpbmVSb3V0ZU9wdGlvbnN9IGZyb20gJ0BpbXBlcml1bS9yb3V0ZXInO1xuaW1wb3J0IHt1c2VURm9ybX0gZnJvbSAnQHRoeC9jb250cm9scyc7XG5pbXBvcnQgZGVidWcgZnJvbSAnZGVidWcnO1xuaW1wb3J0IHtCdXR0b24sIEZvcm0sIEljb24sIE1lc3NhZ2UsIFBvcHVwfSBmcm9tICdzZW1hbnRpYy11aS1yZWFjdCc7XG5pbXBvcnQgdHlwZSB7QWN0aW9uRm9ybVNpZGViYXJJdGVtLCBDb250ZW50RGF0YX0gZnJvbSAnLi4vdHlwZXMnO1xuXG5jb25zdCBkID0gZGVidWcoJ2ltcGVyaXVtLmxheW91dC5jb250ZW50LmNvbXBvbmVudHMuQWN0aW9uRm9ybScpO1xuXG5pbnRlcmZhY2UgQWN0aW9uRm9ybVByb3BzPFQgZXh0ZW5kcyBEZWZpbmVSb3V0ZU9wdGlvbnMsIEsgZXh0ZW5kcyBrZXlvZiBUPiB7XG5cdGl0ZW06IEFjdGlvbkZvcm1TaWRlYmFySXRlbTxULCBLPjtcblx0ZGF0YTogQ29udGVudERhdGE8VCwgSz47XG5cdG9uSGlkZUZvcm06ICgpID0+IHZvaWQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBBY3Rpb25Gb3JtPFQgZXh0ZW5kcyBEZWZpbmVSb3V0ZU9wdGlvbnMsIEsgZXh0ZW5kcyBrZXlvZiBUPih7aXRlbSwgZGF0YSwgb25IaWRlRm9ybX06IEFjdGlvbkZvcm1Qcm9wczxULCBLPikge1xuXHQvLyBHZXQgaW5pdGlhbCB2YWx1ZXNcblx0bGV0IGluaXRpYWxWYWx1ZXMgPSB7fTtcblx0aWYgKGl0ZW0uaW5pdGlhbFZhbHVlcykge1xuXHRcdGlmICh0eXBlb2YgaXRlbS5pbml0aWFsVmFsdWVzID09PSAnZnVuY3Rpb24nKSB7XG5cdFx0XHRpbml0aWFsVmFsdWVzID0gaXRlbS5pbml0aWFsVmFsdWVzKGRhdGEpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRpbml0aWFsVmFsdWVzID0gaXRlbS5pbml0aWFsVmFsdWVzO1xuXHRcdH1cblx0fVxuXG5cdC8vIFRGb3JtXG5cdGNvbnN0IHtoYXNFcnJvcnMsIGhhc1dhcm5pbmdzLCBoYW5kbGVTdWJtaXQsIGhhbmRsZUNoYW5nZSwgdmFsdWVzLCByZXNldEZvcm0sIGVycm9ycywgZmllbGRFcnJvcn0gPSB1c2VURm9ybSh7XG5cdFx0aW5pdGlhbFZhbHVlcyxcblx0XHRvblN1Ym1pdDogc3VibWl0VmFsdWVzID0+IHtcblx0XHRcdGlmIChpdGVtLm9uU3VibWl0KSB7XG5cdFx0XHRcdGl0ZW0ub25TdWJtaXQoc3VibWl0VmFsdWVzLCBkYXRhKTtcblx0XHRcdH1cblx0XHRcdG9uSGlkZUZvcm0oKTtcblx0XHR9LFxuXHRcdGVuYWJsZVJlaW5pdGlhbGl6ZTogdHJ1ZSxcblx0XHR2YWxpZGF0aW9uU2NoZW1hOiBpdGVtLnZhbGlkYXRpb25TY2hlbWEsXG5cdH0pO1xuXG5cdGNvbnN0IHNhdmVCdXR0b24gPSBoYXNXYXJuaW5ncyA/IChcblx0XHQ8UG9wdXBcblx0XHRcdHRyaWdnZXI9e1xuXHRcdFx0XHQ8QnV0dG9uIHBvc2l0aXZlIHR5cGU9XCJzdWJtaXRcIiBmbG9hdGVkPVwicmlnaHRcIiBpY29uIGxhYmVsUG9zaXRpb249XCJsZWZ0XCI+XG5cdFx0XHRcdFx0PEljb24gbmFtZT1cImV4Y2xhbWF0aW9uIGNpcmNsZVwiIGNvbG9yPVwicmVkXCIgLz5cblx0XHRcdFx0XHRTYXZlXG5cdFx0XHRcdDwvQnV0dG9uPlxuXHRcdFx0fVxuXHRcdFx0Y29udGVudD17PE1lc3NhZ2UgZXJyb3IgbGlzdD17T2JqZWN0LnZhbHVlcyhlcnJvcnMpfSAvPn1cblx0XHRcdG9uPVwiaG92ZXJcIlxuXHRcdC8+XG5cdCkgOiAoXG5cdFx0PEJ1dHRvbiBwb3NpdGl2ZSB0eXBlPVwic3VibWl0XCIgZmxvYXRlZD1cInJpZ2h0XCI+XG5cdFx0XHRTYXZlXG5cdFx0PC9CdXR0b24+XG5cdCk7XG5cblx0Ly8gUmVuZGVyIGZvcm1cblx0cmV0dXJuIChcblx0XHQ8Rm9ybSBlcnJvcj17aGFzRXJyb3JzfSB3YXJuaW5nPXtoYXNXYXJuaW5nc30gb25TdWJtaXQ9e2hhbmRsZVN1Ym1pdH0+XG5cdFx0XHR7aXRlbS5mb3JtKHtoYW5kbGVDaGFuZ2UsIHZhbHVlcywgZGF0YSwgZmllbGRFcnJvcn0pfVxuXHRcdFx0e3NhdmVCdXR0b259XG5cdFx0XHQ8QnV0dG9uXG5cdFx0XHRcdHR5cGU9XCJidXR0b25cIlxuXHRcdFx0XHRvbkNsaWNrPXsoKSA9PiB7XG5cdFx0XHRcdFx0cmVzZXRGb3JtKCk7XG5cdFx0XHRcdFx0b25IaWRlRm9ybSgpO1xuXHRcdFx0XHR9fVxuXHRcdFx0PlxuXHRcdFx0XHRDYW5jZWxcblx0XHRcdDwvQnV0dG9uPlxuXHRcdDwvRm9ybT5cblx0KTtcbn1cbiIsImltcG9ydCB0eXBlIHtEZWZpbmVSb3V0ZU9wdGlvbnN9IGZyb20gJ0BpbXBlcml1bS9yb3V0ZXInO1xuaW1wb3J0IGRlYnVnIGZyb20gJ2RlYnVnJztcbmltcG9ydCB7dXNlU3RhdGV9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7QnV0dG9ufSBmcm9tICdzZW1hbnRpYy11aS1yZWFjdCc7XG5pbXBvcnQgdHlwZSB7QWN0aW9uRm9ybVNpZGViYXJJdGVtLCBDb250ZW50RGF0YX0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHtnZXRDb2xvciwgZ2V0SWNvbiwgZ2V0VGV4dH0gZnJvbSAnLi4vdXRpbHMnO1xuaW1wb3J0IHtBY3Rpb25Gb3JtfSBmcm9tICcuL0FjdGlvbkZvcm0nO1xuXG5jb25zdCBkID0gZGVidWcoJ2ltcGVyaXVtLmxheW91dC5jb250ZW50LmNvbXBvbmVudHMuQWN0aW9uRm9ybVNpZGViYXJJdGVtQ29tcG9uZW50Jyk7XG5cbmludGVyZmFjZSBBY3Rpb25Gb3JtU2lkZWJhckl0ZW1Db21wb25lbnRQcm9wczxUIGV4dGVuZHMgRGVmaW5lUm91dGVPcHRpb25zLCBLIGV4dGVuZHMga2V5b2YgVD4ge1xuXHRpdGVtOiBBY3Rpb25Gb3JtU2lkZWJhckl0ZW08VCwgSz47XG5cdGRhdGE6IENvbnRlbnREYXRhPFQsIEs+O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gQWN0aW9uRm9ybVNpZGViYXJJdGVtQ29tcG9uZW50PFQgZXh0ZW5kcyBEZWZpbmVSb3V0ZU9wdGlvbnMsIEsgZXh0ZW5kcyBrZXlvZiBUPih7XG5cdGl0ZW0sXG5cdGRhdGEsXG59OiBBY3Rpb25Gb3JtU2lkZWJhckl0ZW1Db21wb25lbnRQcm9wczxULCBLPikge1xuXHRjb25zdCBbaXNFZGl0LCBzZXRJc0VkaXRdID0gdXNlU3RhdGUoZmFsc2UpO1xuXG5cdGlmIChpc0VkaXQpIHtcblx0XHRyZXR1cm4gKFxuXHRcdFx0PEFjdGlvbkZvcm1cblx0XHRcdFx0aXRlbT17aXRlbX1cblx0XHRcdFx0ZGF0YT17ZGF0YX1cblx0XHRcdFx0b25IaWRlRm9ybT17KCkgPT4ge1xuXHRcdFx0XHRcdHNldElzRWRpdChmYWxzZSk7XG5cdFx0XHRcdH19XG5cdFx0XHQvPlxuXHRcdCk7XG5cdH1cblxuXHRjb25zdCBpY29uID0gZ2V0SWNvbihpdGVtLCBkYXRhKTtcblxuXHQvLyBSZW5kZXIgYWN0aW9uIGJ1dHRvblxuXHRyZXR1cm4gKFxuXHRcdDxCdXR0b25cblx0XHRcdGZsdWlkXG5cdFx0XHRjb21wYWN0XG5cdFx0XHRjb2xvcj17Z2V0Q29sb3IoaXRlbSwgZGF0YSl9XG5cdFx0XHRpY29uPXshIWljb259XG5cdFx0XHRsYWJlbFBvc2l0aW9uPXtpY29uID8gJ2xlZnQnIDogdW5kZWZpbmVkfVxuXHRcdFx0b25DbGljaz17KCkgPT4ge1xuXHRcdFx0XHRzZXRJc0VkaXQodHJ1ZSk7XG5cdFx0XHR9fVxuXHRcdD5cblx0XHRcdHtpY29ufVxuXHRcdFx0e2dldFRleHQoaXRlbSwgZGF0YSl9XG5cdFx0PC9CdXR0b24+XG5cdCk7XG59XG4iLCJpbXBvcnQgdHlwZSB7RGVmaW5lUm91dGVPcHRpb25zfSBmcm9tICdAaW1wZXJpdW0vcm91dGVyJztcbmltcG9ydCB7QnV0dG9ufSBmcm9tICdzZW1hbnRpYy11aS1yZWFjdCc7XG5pbXBvcnQgdHlwZSB7QWN0aW9uU2lkZWJhckl0ZW0sIENvbnRlbnREYXRhfSBmcm9tICcuLi90eXBlcyc7XG5pbXBvcnQge2dldENvbG9yLCBnZXRJY29uLCBnZXRUZXh0fSBmcm9tICcuLi91dGlscyc7XG5cbmludGVyZmFjZSBBY3Rpb25TaWRlYmFySXRlbUNvbXBvbmVudFByb3BzPFQgZXh0ZW5kcyBEZWZpbmVSb3V0ZU9wdGlvbnMsIEsgZXh0ZW5kcyBrZXlvZiBUPiB7XG5cdGl0ZW06IEFjdGlvblNpZGViYXJJdGVtPFQsIEs+O1xuXHRkYXRhOiBDb250ZW50RGF0YTxULCBLPjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIEFjdGlvblNpZGViYXJJdGVtQ29tcG9uZW50PFQgZXh0ZW5kcyBEZWZpbmVSb3V0ZU9wdGlvbnMsIEsgZXh0ZW5kcyBrZXlvZiBUPih7aXRlbSwgZGF0YX06IEFjdGlvblNpZGViYXJJdGVtQ29tcG9uZW50UHJvcHM8VCwgSz4pIHtcblx0Y29uc3QgaWNvbiA9IGdldEljb24oaXRlbSwgZGF0YSk7XG5cblx0cmV0dXJuIChcblx0XHQ8QnV0dG9uXG5cdFx0XHRmbHVpZFxuXHRcdFx0Y29tcGFjdFxuXHRcdFx0Y29sb3I9e2dldENvbG9yKGl0ZW0sIGRhdGEpfVxuXHRcdFx0aWNvbj17ISFpY29ufVxuXHRcdFx0bGFiZWxQb3NpdGlvbj17aWNvbiA/ICdsZWZ0JyA6IHVuZGVmaW5lZH1cblx0XHRcdG9uQ2xpY2s9eygpID0+IHtcblx0XHRcdFx0aXRlbS5vbkNsaWNrKGRhdGEpO1xuXHRcdFx0fX1cblx0XHQ+XG5cdFx0XHR7aWNvbn1cblx0XHRcdHtnZXRUZXh0KGl0ZW0sIGRhdGEpfVxuXHRcdDwvQnV0dG9uPlxuXHQpO1xufVxuIiwiaW1wb3J0IHR5cGUge0RlZmluZVJvdXRlT3B0aW9uc30gZnJvbSAnQGltcGVyaXVtL3JvdXRlcic7XG5pbXBvcnQgZGVidWcgZnJvbSAnZGVidWcnO1xuaW1wb3J0IHtpc0VxdWFsfSBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHtEZXBlbmRlbmN5TGlzdCwgRWZmZWN0Q2FsbGJhY2ssIHVzZUVmZmVjdCwgdXNlUmVmfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQge3VzZURpc3BhdGNofSBmcm9tICdyZWFjdC1yZWR1eCc7XG5pbXBvcnQge0RhdGFIb29rc30gZnJvbSAnLi4vLi4vZGF0YWhvb2tzL0RhdGFIb29rcyc7XG5pbXBvcnQge2FjdGlvbnN9IGZyb20gJy4uLy4uL3N0YXRlJztcbmltcG9ydCB7c29ydFdlaWdodGVkSXRlbXN9IGZyb20gJy4uLy4uL3V0aWxzJztcbmltcG9ydCB7dXNlQnVpbGRDb250ZW50RGF0YX0gZnJvbSAnLi4vaG9va3MvdXNlQnVpbGRDb250ZW50RGF0YSc7XG5pbXBvcnQgdHlwZSB7UGFnZSwgUm91dGVQYXJhbWV0ZXJzfSBmcm9tICcuLi90eXBlcyc7XG5pbXBvcnQge0hlYWRlcn0gZnJvbSAnLi9IZWFkZXInO1xuaW1wb3J0IHtTaWRlYmFySXRlbVdyYXBwZXJ9IGZyb20gJy4vU2lkZWJhckl0ZW1XcmFwcGVyJztcbmltcG9ydCBzdHlsZXMgZnJvbSAnLi9zdHlsZXMuY3NzJztcblxuY29uc3QgZCA9IGRlYnVnKCdpbXBlcml1bS5sYXlvdXQuY29udGVudC5jb21wb25lbnRzLkNvbnRlbnRDb21wb25lbnQnKTtcblxuaW50ZXJmYWNlIENvbnRlbnRDb21wb25lbnRQcm9wczxUIGV4dGVuZHMgRGVmaW5lUm91dGVPcHRpb25zLCBLIGV4dGVuZHMga2V5b2YgVD4ge1xuXHRwYWdlOiBQYWdlPFQsIEs+O1xuXHRwYXJhbXM6IFJvdXRlUGFyYW1ldGVyczxUW0tdWydwYXJhbXMnXT47XG59XG5cbmZ1bmN0aW9uIHVzZURlZXBDb21wYXJlTWVtb2l6ZSh2YWx1ZTogYW55KSB7XG5cdGNvbnN0IHJlZiA9IHVzZVJlZigpO1xuXHRpZiAoIXZhbHVlICYmICFyZWYuY3VycmVudCkgcmV0dXJuIHJlZi5jdXJyZW50O1xuXHRpZiAoIWlzRXF1YWwodmFsdWUsIHJlZi5jdXJyZW50KSkge1xuXHRcdHJlZi5jdXJyZW50ID0gdmFsdWU7XG5cdH1cblx0cmV0dXJuIHJlZi5jdXJyZW50O1xufVxuXG5mdW5jdGlvbiB1c2VEZWVwQ29tcGFyZUVmZmVjdChjYWxsYmFjazogRWZmZWN0Q2FsbGJhY2ssIGRlcHM6IERlcGVuZGVuY3lMaXN0KSB7XG5cdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC1ob29rcy9leGhhdXN0aXZlLWRlcHNcblx0dXNlRWZmZWN0KGNhbGxiYWNrLCBkZXBzLm1hcCh1c2VEZWVwQ29tcGFyZU1lbW9pemUpKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIENvbnRlbnRDb21wb25lbnQ8VCBleHRlbmRzIERlZmluZVJvdXRlT3B0aW9ucywgSyBleHRlbmRzIGtleW9mIFQ+KHtwYWdlLCBwYXJhbXN9OiBDb250ZW50Q29tcG9uZW50UHJvcHM8VCwgSz4pIHtcblx0Y29uc3QgZGlzcGF0Y2ggPSB1c2VEaXNwYXRjaCgpO1xuXHRjb25zdCBkYXRhID0gdXNlQnVpbGRDb250ZW50RGF0YSh7c3RhdGVTZWxlY3Rvckhvb2s6IHBhZ2Uuc3RhdGVTZWxlY3Rvckhvb2ssIHBlcm1pc3Npb25TZWxlY3Rvckhvb2s6IHBhZ2UucGVybWlzc2lvblNlbGVjdG9ySG9vaywgcGFyYW1zfSk7XG5cblx0dXNlRGVlcENvbXBhcmVFZmZlY3QoKCkgPT4ge1xuXHRcdGRpc3BhdGNoKGFjdGlvbnMuc2V0UGFyYW1zKHBhcmFtcykpO1xuXHR9LCBbZGlzcGF0Y2gsIHBhcmFtc10pO1xuXG5cdGNvbnN0IGNvbnRlbnQgPSBwYWdlLmNvbnRlbnQoZGF0YSk7XG5cdGNvbnN0IHNpZGViYXJJdGVtcyA9IHNvcnRXZWlnaHRlZEl0ZW1zKHBhZ2Uuc2lkZWJhciB8fCBbXSk7XG5cblx0Y29uc3Qgc2lkZWJhciA9XG5cdFx0c2lkZWJhckl0ZW1zLmxlbmd0aCA+IDAgPyAoXG5cdFx0XHQ8ZGl2IGNsYXNzTmFtZT17YCR7c3R5bGVzLnNpZGViYXJ9IGltcGVyaXVtQ29udGVudFNpZGViYXJgfT5cblx0XHRcdFx0PGRpdiBjbGFzc05hbWU9e2Ake3N0eWxlcy5hY3Rpb25zSGVhZGVyfSBpbXBlcml1bUNvbnRlbnRTaWRlYmFySGVhZGVyYH0+XG5cdFx0XHRcdFx0PGgzPkFjdGlvbnM8L2gzPlxuXHRcdFx0XHQ8L2Rpdj5cblx0XHRcdFx0e3NpZGViYXJJdGVtcy5tYXAoKHNiLCBpbmRleCkgPT4ge1xuXHRcdFx0XHRcdHJldHVybiAoXG5cdFx0XHRcdFx0XHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3Qvbm8tYXJyYXktaW5kZXgta2V5XG5cdFx0XHRcdFx0XHQ8ZGl2IGNsYXNzTmFtZT17c3R5bGVzLnNpZGViYXJJdGVtfSBrZXk9e2luZGV4fT5cblx0XHRcdFx0XHRcdFx0PFNpZGViYXJJdGVtV3JhcHBlciBpdGVtPXtzYn0gcGFyYW1zPXtwYXJhbXN9IGRhdGE9e2RhdGF9IC8+XG5cdFx0XHRcdFx0XHQ8L2Rpdj5cblx0XHRcdFx0XHQpO1xuXHRcdFx0XHR9KX1cblx0XHRcdDwvZGl2PlxuXHRcdCkgOiBudWxsO1xuXG5cdHJldHVybiAoXG5cdFx0PGRpdiBjbGFzc05hbWU9e2Ake3N0eWxlcy5wYXJlbnR9IGltcGVyaXVtQ29udGVudFdyYXBwZXJQYXJlbnRgfT5cblx0XHRcdDxkaXYgY2xhc3NOYW1lPXtgJHtzdHlsZXMud3JhcHBlcn0gaW1wZXJpdW1Db250ZW50V3JhcHBlcmB9PlxuXHRcdFx0XHQ8SGVhZGVyIGhlYWRlcj17cGFnZS5oZWFkZXJ9IGRhdGE9e2RhdGF9IC8+XG5cdFx0XHRcdDxkaXYgY2xhc3NOYW1lPXtgJHtzdHlsZXMuY29udGVudH0gaW1wZXJpdW1Db250ZW50ICR7cGFnZS5mdWxsICYmIHN0eWxlcy5jb250ZW50RnVsbH1gfT57Y29udGVudH08L2Rpdj5cblx0XHRcdDwvZGl2PlxuXHRcdFx0e3NpZGViYXJ9XG5cdFx0XHQ8RGF0YUhvb2tzIGRhdGFIb29rcz17cGFnZS5kYXRhSG9va3MgfHwgW119IC8+XG5cdFx0PC9kaXY+XG5cdCk7XG59XG4iLCJpbXBvcnQgdHlwZSB7RGVmaW5lUm91dGVPcHRpb25zfSBmcm9tICdAaW1wZXJpdW0vcm91dGVyJztcbmltcG9ydCB0eXBlIHtDb250ZW50RGF0YSwgQ3VzdG9tU2lkZWJhckl0ZW19IGZyb20gJy4uL3R5cGVzJztcblxuaW50ZXJmYWNlIEN1c3RvbVNpZGViYXJJdGVtQ29tcG9uZW50UHJvcHM8VCBleHRlbmRzIERlZmluZVJvdXRlT3B0aW9ucywgSyBleHRlbmRzIGtleW9mIFQ+IHtcblx0aXRlbTogQ3VzdG9tU2lkZWJhckl0ZW08VCwgSz47XG5cdGRhdGE6IENvbnRlbnREYXRhPFQsIEs+O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gQ3VzdG9tU2lkZWJhckl0ZW1Db21wb25lbnQ8VCBleHRlbmRzIERlZmluZVJvdXRlT3B0aW9ucywgSyBleHRlbmRzIGtleW9mIFQ+KHtpdGVtLCBkYXRhfTogQ3VzdG9tU2lkZWJhckl0ZW1Db21wb25lbnRQcm9wczxULCBLPikge1xuXHRyZXR1cm4gaXRlbS5yZW5kZXIoZGF0YSk7XG59XG4iLCJpbXBvcnQgdHlwZSB7RGVmaW5lUm91dGVPcHRpb25zfSBmcm9tICdAaW1wZXJpdW0vcm91dGVyJztcbmltcG9ydCBkZWJ1ZyBmcm9tICdkZWJ1Zyc7XG5pbXBvcnQgdHlwZSB7Q29udGVudERhdGEsIENvbnRlbnRIZWFkZXJ9IGZyb20gJy4uL3R5cGVzJztcbmltcG9ydCBzdHlsZXMgZnJvbSAnLi9zdHlsZXMuY3NzJztcblxuY29uc3QgZCA9IGRlYnVnKCdpbXBlcml1bS5sYXlvdXQuY29udGVudC5jb21wb25lbnRzLkhlYWRlcicpO1xuXG5pbnRlcmZhY2UgSGVhZGVyUHJvcHM8VCBleHRlbmRzIERlZmluZVJvdXRlT3B0aW9ucywgSyBleHRlbmRzIGtleW9mIFQ+IHtcblx0aGVhZGVyOiBDb250ZW50SGVhZGVyPFQsIEs+O1xuXHRkYXRhOiBDb250ZW50RGF0YTxULCBLPjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIEhlYWRlcjxUIGV4dGVuZHMgRGVmaW5lUm91dGVPcHRpb25zLCBLIGV4dGVuZHMga2V5b2YgVD4oe2RhdGEsIGhlYWRlcn06IEhlYWRlclByb3BzPFQsIEs+KSB7XG5cdGlmIChoZWFkZXIpIHtcblx0XHRsZXQgaGVhZGVySW5mbyA9IHtcblx0XHRcdHRpdGxlOiAnJyxcblx0XHR9O1xuXHRcdGlmICh0eXBlb2YgaGVhZGVyID09PSAnc3RyaW5nJykge1xuXHRcdFx0aGVhZGVySW5mby50aXRsZSA9IGhlYWRlcjtcblx0XHR9IGVsc2UgaWYgKHR5cGVvZiBoZWFkZXIgPT09ICdmdW5jdGlvbicpIHtcblx0XHRcdGhlYWRlckluZm8gPSBoZWFkZXIoZGF0YSk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdGhlYWRlckluZm8gPSBoZWFkZXI7XG5cdFx0fVxuXHRcdHJldHVybiAoXG5cdFx0XHQ8ZGl2IGNsYXNzTmFtZT17YCR7c3R5bGVzLmhlYWRlcn0gaW1wZXJpdW1Db250ZW50SGVhZGVyYH0+XG5cdFx0XHRcdDxoMj57aGVhZGVySW5mby50aXRsZX08L2gyPlxuXHRcdFx0PC9kaXY+XG5cdFx0KTtcblx0fVxuXHRyZXR1cm4gbnVsbDtcbn1cbiIsImltcG9ydCB0eXBlIHtEZWZpbmVSb3V0ZU9wdGlvbnN9IGZyb20gJ0BpbXBlcml1bS9yb3V0ZXInO1xuaW1wb3J0IHtMaW5rfSBmcm9tICdyZWFjdC1yb3V0ZXItZG9tJztcbmltcG9ydCB7QnV0dG9ufSBmcm9tICdzZW1hbnRpYy11aS1yZWFjdCc7XG5pbXBvcnQgdHlwZSB7QWN0aW9uRm9ybVNpZGViYXJJdGVtLCBBY3Rpb25TaWRlYmFySXRlbSwgQ29udGVudERhdGEsIEN1c3RvbVNpZGViYXJJdGVtLCBEaXZpZGVyU2lkZWJhckl0ZW0sIFNpZGViYXJJdGVtfSBmcm9tICcuLi90eXBlcyc7XG5pbXBvcnQge2dldENvbG9yLCBnZXRJY29uLCBnZXRSb3V0ZVRvLCBnZXRUZXh0fSBmcm9tICcuLi91dGlscyc7XG5cbmludGVyZmFjZSBQbGFpblNpZGViYXJJdGVtUHJvcHM8VCBleHRlbmRzIERlZmluZVJvdXRlT3B0aW9ucywgSyBleHRlbmRzIGtleW9mIFQ+IHtcblx0aXRlbTogRXhjbHVkZTxTaWRlYmFySXRlbTxULCBLPiwgQ3VzdG9tU2lkZWJhckl0ZW08VCwgSz4gfCBBY3Rpb25TaWRlYmFySXRlbTxULCBLPiB8IEFjdGlvbkZvcm1TaWRlYmFySXRlbTxULCBLPiB8IERpdmlkZXJTaWRlYmFySXRlbTxULCBLPj47XG5cdGRhdGE6IENvbnRlbnREYXRhPFQsIEs+O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gUGxhaW5TaWRlYmFySXRlbTxUIGV4dGVuZHMgRGVmaW5lUm91dGVPcHRpb25zLCBLIGV4dGVuZHMga2V5b2YgVD4oe2l0ZW0sIGRhdGF9OiBQbGFpblNpZGViYXJJdGVtUHJvcHM8VCwgSz4pIHtcblx0Y29uc3QgaWNvbiA9IGdldEljb24oaXRlbSwgZGF0YSk7XG5cblx0cmV0dXJuIChcblx0XHQ8QnV0dG9uIGZsdWlkIGNvbXBhY3QgY29sb3I9e2dldENvbG9yKGl0ZW0sIGRhdGEpfSBpY29uPXshIWljb259IGxhYmVsUG9zaXRpb249e2ljb24gPyAnbGVmdCcgOiB1bmRlZmluZWR9IGFzPXtMaW5rfSB0bz17Z2V0Um91dGVUbyhpdGVtLCBkYXRhKX0+XG5cdFx0XHR7aWNvbn1cblx0XHRcdHtnZXRUZXh0KGl0ZW0sIGRhdGEpfVxuXHRcdDwvQnV0dG9uPlxuXHQpO1xufVxuIiwiaW1wb3J0IHR5cGUge0RlZmluZVJvdXRlT3B0aW9uc30gZnJvbSAnQGltcGVyaXVtL3JvdXRlcic7XG5pbXBvcnQgZGVidWcgZnJvbSAnZGVidWcnO1xuaW1wb3J0IHtRdWVyeX0gZnJvbSAnbWluZ28nO1xuaW1wb3J0IHtEaXZpZGVyfSBmcm9tICdzZW1hbnRpYy11aS1yZWFjdCc7XG5pbXBvcnQge3VzZUJ1aWxkQ29udGVudERhdGF9IGZyb20gJy4uL2hvb2tzL3VzZUJ1aWxkQ29udGVudERhdGEnO1xuaW1wb3J0IHR5cGUge0NvbnRlbnREYXRhLCBSb3V0ZVBhcmFtZXRlcnMsIFNpZGViYXJJdGVtfSBmcm9tICcuLi90eXBlcyc7XG5pbXBvcnQge2lzQWN0aW9uRm9ybVNpZGViYXJJdGVtLCBpc0FjdGlvblNpZGViYXJJdGVtLCBpc0N1c3RvbVNpZGViYXJJdGVtLCBpc0RpdmlkZXJTaWRlYmFySXRlbX0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHtBY3Rpb25Gb3JtU2lkZWJhckl0ZW1Db21wb25lbnR9IGZyb20gJy4vQWN0aW9uRm9ybVNpZGViYXJJdGVtQ29tcG9uZW50JztcbmltcG9ydCB7QWN0aW9uU2lkZWJhckl0ZW1Db21wb25lbnR9IGZyb20gJy4vQWN0aW9uU2lkZWJhckl0ZW1Db21wb25lbnQnO1xuaW1wb3J0IHtDdXN0b21TaWRlYmFySXRlbUNvbXBvbmVudH0gZnJvbSAnLi9DdXN0b21TaWRlYmFySXRlbUNvbXBvbmVudCc7XG5pbXBvcnQge1BsYWluU2lkZWJhckl0ZW19IGZyb20gJy4vUGxhaW5TaWRlYmFySXRlbSc7XG5cbmNvbnN0IGQgPSBkZWJ1ZygnaW1wZXJpdW0ubGF5b3V0LmNvbnRlbnQuY29tcG9uZW50cy5TaWRlYmFySXRlbVdyYXBwZXInKTtcblxuaW50ZXJmYWNlIFNpZGViYXJJdGVtV3JhcHBlclByb3BzPFQgZXh0ZW5kcyBEZWZpbmVSb3V0ZU9wdGlvbnMsIEsgZXh0ZW5kcyBrZXlvZiBUPiB7XG5cdGl0ZW06IFNpZGViYXJJdGVtPFQsIEs+O1xuXHRkYXRhPzogQ29udGVudERhdGE8VCwgSz47XG5cdHBhcmFtczogUm91dGVQYXJhbWV0ZXJzPFRbS11bJ3BhcmFtcyddPjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIFNpZGViYXJJdGVtV3JhcHBlcjxUIGV4dGVuZHMgRGVmaW5lUm91dGVPcHRpb25zLCBLIGV4dGVuZHMga2V5b2YgVD4oe2l0ZW0sIGRhdGE6IHBhcmVudERhdGEsIHBhcmFtc306IFNpZGViYXJJdGVtV3JhcHBlclByb3BzPFQsIEs+KSB7XG5cdGNvbnN0IGRhdGEgPSB1c2VCdWlsZENvbnRlbnREYXRhKHtcblx0XHRkYXRhOiBwYXJlbnREYXRhLFxuXHRcdHN0YXRlU2VsZWN0b3JIb29rOiBpdGVtLnN0YXRlU2VsZWN0b3JIb29rLFxuXHRcdHBlcm1pc3Npb25TZWxlY3Rvckhvb2s6IGl0ZW0ucGVybWlzc2lvblNlbGVjdG9ySG9vayxcblx0XHRwYXJhbXMsXG5cdH0pO1xuXG5cdC8vIENoZWNrIGlmIHZpc2libGVcblx0aWYgKGl0ZW0udmlzaWJsZSkge1xuXHRcdGlmICh0eXBlb2YgaXRlbS52aXNpYmxlID09PSAnZnVuY3Rpb24nKSB7XG5cdFx0XHRpZiAoIWl0ZW0udmlzaWJsZShkYXRhKSkgcmV0dXJuIG51bGw7XG5cdFx0fSBlbHNlIHtcblx0XHRcdGNvbnN0IHEgPSBuZXcgUXVlcnkoaXRlbS52aXNpYmxlIHx8IHt9KTtcblx0XHRcdGlmICghcS50ZXN0KGRhdGEpKSByZXR1cm4gbnVsbDtcblx0XHR9XG5cdH1cblxuXHRpZiAoaXNDdXN0b21TaWRlYmFySXRlbShpdGVtKSkge1xuXHRcdHJldHVybiA8Q3VzdG9tU2lkZWJhckl0ZW1Db21wb25lbnQgaXRlbT17aXRlbX0gZGF0YT17ZGF0YX0gLz47XG5cdH1cblxuXHRpZiAoaXNBY3Rpb25TaWRlYmFySXRlbShpdGVtKSkge1xuXHRcdHJldHVybiA8QWN0aW9uU2lkZWJhckl0ZW1Db21wb25lbnQgaXRlbT17aXRlbX0gZGF0YT17ZGF0YX0gLz47XG5cdH1cblxuXHRpZiAoaXNBY3Rpb25Gb3JtU2lkZWJhckl0ZW0oaXRlbSkpIHtcblx0XHRyZXR1cm4gPEFjdGlvbkZvcm1TaWRlYmFySXRlbUNvbXBvbmVudCBpdGVtPXtpdGVtfSBkYXRhPXtkYXRhfSAvPjtcblx0fVxuXG5cdGlmIChpc0RpdmlkZXJTaWRlYmFySXRlbShpdGVtKSkge1xuXHRcdHJldHVybiA8RGl2aWRlciAvPjtcblx0fVxuXG5cdC8vIEB0cy1pZ25vcmUgVGhlc2UgdHlwZXMgc2hvdWxkIHdvcmssIG5vdCBzdXJlIHdoeSBpdCdzIG5vdC4gUnVudGltZSBjb2RlIGlzIGZpbmUuXG5cdHJldHVybiA8UGxhaW5TaWRlYmFySXRlbSBpdGVtPXtpdGVtfSBkYXRhPXtkYXRhfSAvPjtcbn1cbiIsImltcG9ydCB0eXBlIHtSb3V0ZXMsIERlZmluZVJvdXRlT3B0aW9ucywgS2V5ZWRSb3V0ZVJlbmRlckZuc30gZnJvbSAnQGltcGVyaXVtL3JvdXRlcic7XG5pbXBvcnQgZGVidWcgZnJvbSAnZGVidWcnO1xuaW1wb3J0IHtDb250ZW50Q29tcG9uZW50fSBmcm9tICcuL2NvbXBvbmVudHMvQ29udGVudENvbXBvbmVudCc7XG5pbXBvcnQgdHlwZSB7UGFnZXMsIFJvdXRlUGFyYW1ldGVyc30gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQge2lzUGFnZX0gZnJvbSAnLi90eXBlcyc7XG5cbmNvbnN0IGQgPSBkZWJ1ZygnaW1wZXJpdW0ubGF5b3V0LmNvbnRlbnQuY3JlYXRlUGFnZXMnKTtcblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVBhZ2VzPFQgZXh0ZW5kcyBEZWZpbmVSb3V0ZU9wdGlvbnM+KHJvdXRlczogUm91dGVzPFQ+LCBwYWdlczogUGFnZXM8VD4pIHtcblx0Y29uc3QgcmVuZGVyUm91dGVQcm9wc09iaiA9IE9iamVjdC5rZXlzKHJvdXRlcy50eXBlcykucmVkdWNlKChtZW1vLCBrZXkpID0+IHtcblx0XHRyZXR1cm4ge1xuXHRcdFx0Li4ubWVtbyxcblx0XHRcdFtrZXldOiAocGFyYW1zOiBSb3V0ZVBhcmFtZXRlcnM8VFt0eXBlb2Yga2V5XVsncGFyYW1zJ10+KSA9PiB7XG5cdFx0XHRcdGNvbnN0IHBnID0gcGFnZXNba2V5XTtcblx0XHRcdFx0aWYgKGlzUGFnZShwZykpIHtcblx0XHRcdFx0XHRyZXR1cm4gPENvbnRlbnRDb21wb25lbnQgcGFnZT17cGd9IHBhcmFtcz17cGFyYW1zfSAvPjtcblx0XHRcdFx0fVxuXHRcdFx0XHRyZXR1cm4gKFxuXHRcdFx0XHRcdDxDb250ZW50Q29tcG9uZW50XG5cdFx0XHRcdFx0XHRwYWdlPXt7XG5cdFx0XHRcdFx0XHRcdGNvbnRlbnQ6IHBnLFxuXHRcdFx0XHRcdFx0fX1cblx0XHRcdFx0XHRcdHBhcmFtcz17cGFyYW1zfVxuXHRcdFx0XHRcdC8+XG5cdFx0XHRcdCk7XG5cdFx0XHR9LFxuXHRcdH07XG5cdH0sIHt9IGFzIEtleWVkUm91dGVSZW5kZXJGbnM8VD4pO1xuXG5cdHJldHVybiByb3V0ZXMucmVuZGVyUm91dGVQcm9wcyhyZW5kZXJSb3V0ZVByb3BzT2JqKTtcbn1cbiIsImltcG9ydCB0eXBlIHtEaXZpZGVyU2lkZWJhckl0ZW19IGZyb20gJy4vdHlwZXMnO1xuXG5leHBvcnQgY29uc3QgZGl2aWRlclNpZGViYXJJdGVtOiBEaXZpZGVyU2lkZWJhckl0ZW08YW55LCBhbnk+ID0ge1xuXHR0ZXh0OiAnJyxcblx0ZGl2aWRlcjogdHJ1ZSxcbn07XG4iLCJpbXBvcnQgdHlwZSB7RGVmaW5lUm91dGVPcHRpb25zfSBmcm9tICdAaW1wZXJpdW0vcm91dGVyJztcbmltcG9ydCB0eXBlIHtVc2VCdWlsZERhdGFQYXJhbXN9IGZyb20gJy4uLy4uL2hvb2tzL3VzZUJ1aWxkRGF0YSc7XG5pbXBvcnQge3VzZUJ1aWxkRGF0YX0gZnJvbSAnLi4vLi4vaG9va3MvdXNlQnVpbGREYXRhJztcbmltcG9ydCB0eXBlIHtDb250ZW50RGF0YSwgUm91dGVQYXJhbWV0ZXJzfSBmcm9tICcuLi90eXBlcyc7XG5cbmludGVyZmFjZSBVc2VCdWlsZENvbnRlbnREYXRhUGFyYW1zPFQgZXh0ZW5kcyBEZWZpbmVSb3V0ZU9wdGlvbnMsIEsgZXh0ZW5kcyBrZXlvZiBUPiBleHRlbmRzIFVzZUJ1aWxkRGF0YVBhcmFtcyB7XG5cdGRhdGE/OiBDb250ZW50RGF0YTxULCBLPjtcblx0cGFyYW1zOiBSb3V0ZVBhcmFtZXRlcnM8VFtLXVsncGFyYW1zJ10+O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdXNlQnVpbGRDb250ZW50RGF0YTxUIGV4dGVuZHMgRGVmaW5lUm91dGVPcHRpb25zLCBLIGV4dGVuZHMga2V5b2YgVD4oe1xuXHRkYXRhLFxuXHRzdGF0ZVNlbGVjdG9ySG9vayxcblx0cGVybWlzc2lvblNlbGVjdG9ySG9vayxcblx0cm91dGVJdGVtLFxuXHRwYXJhbXMsXG59OiBVc2VCdWlsZENvbnRlbnREYXRhUGFyYW1zPFQsIEs+KSB7XG5cdGNvbnN0IGJ1aWxkRGF0YSA9IHVzZUJ1aWxkRGF0YSh7ZGF0YSwgc3RhdGVTZWxlY3Rvckhvb2ssIHBlcm1pc3Npb25TZWxlY3Rvckhvb2ssIHJvdXRlSXRlbX0pO1xuXHRyZXR1cm4ge1xuXHRcdC4uLmJ1aWxkRGF0YSxcblx0XHRwYXJhbXMsXG5cdH07XG59XG4iLCJpbXBvcnQgdHlwZSB7RGVmaW5lUm91dGVPcHRpb25zLCBQYXJhbWV0ZXJzRnJvbUFzc2VydGlvbn0gZnJvbSAnQGltcGVyaXVtL3JvdXRlcic7XG5pbXBvcnQgdHlwZSBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgdHlwZSB7U2VtYW50aWNDT0xPUlMsIFNlbWFudGljSUNPTlN9IGZyb20gJ3NlbWFudGljLXVpLXJlYWN0JztcbmltcG9ydCB0eXBlIHtSb3V0ZUl0ZW0sIFZpc2liaWxpdHlJdGVtLCBXZWlnaHRlZEl0ZW19IGZyb20gJy4uL2NvbW1vbkl0ZW1zJztcbmltcG9ydCB0eXBlIHtEYXRhSG9va0l0ZW19IGZyb20gJy4uL2RhdGFob29rcy90eXBlcyc7XG5pbXBvcnQgdHlwZSB7RGF0YSwgUGVybWlzc2lvblNlbGVjdG9ySG9vaywgU3RhdGVTZWxlY3Rvckhvb2t9IGZyb20gJy4uL3R5cGVzJztcblxuZXhwb3J0IHR5cGUgUm91dGVQYXJhbWV0ZXJzPFQgZXh0ZW5kcyByZWFkb25seSBzdHJpbmdbXSB8IHVuZGVmaW5lZD4gPSBUIGV4dGVuZHMgcmVhZG9ubHkgc3RyaW5nW10gPyBQYXJhbWV0ZXJzRnJvbUFzc2VydGlvbjxUPiA6IG5ldmVyO1xuXG5leHBvcnQgaW50ZXJmYWNlIENvbnRlbnREYXRhPFQgZXh0ZW5kcyBEZWZpbmVSb3V0ZU9wdGlvbnMsIEsgZXh0ZW5kcyBrZXlvZiBUPiBleHRlbmRzIERhdGEge1xuXHRwYXJhbXM6IFJvdXRlUGFyYW1ldGVyczxUW0tdWydwYXJhbXMnXT47XG59XG5cbmV4cG9ydCB0eXBlIENvbnRlbnQ8VCBleHRlbmRzIERlZmluZVJvdXRlT3B0aW9ucywgSyBleHRlbmRzIGtleW9mIFQ+ID0gKGRhdGE6IENvbnRlbnREYXRhPFQsIEs+KSA9PiBKU1guRWxlbWVudDtcblxuZXhwb3J0IGludGVyZmFjZSBCYXNlU2lkZWJhckl0ZW08VCBleHRlbmRzIERlZmluZVJvdXRlT3B0aW9ucywgSyBleHRlbmRzIGtleW9mIFQ+IGV4dGVuZHMgV2VpZ2h0ZWRJdGVtLCBWaXNpYmlsaXR5SXRlbSB7XG5cdHRleHQ6IHN0cmluZyB8ICgoZGF0YTogQ29udGVudERhdGE8VCwgSz4pID0+IHN0cmluZyk7XG5cdGljb24/OiBTZW1hbnRpY0lDT05TIHwgKChkYXRhOiBDb250ZW50RGF0YTxULCBLPikgPT4gU2VtYW50aWNJQ09OUyk7XG5cdGNvbG9yPzogU2VtYW50aWNDT0xPUlMgfCAoKGRhdGE6IENvbnRlbnREYXRhPFQsIEs+KSA9PiBTZW1hbnRpY0NPTE9SUyk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGl2aWRlclNpZGViYXJJdGVtPFQgZXh0ZW5kcyBEZWZpbmVSb3V0ZU9wdGlvbnMsIEsgZXh0ZW5kcyBrZXlvZiBUPiBleHRlbmRzIEJhc2VTaWRlYmFySXRlbTxULCBLPiB7XG5cdGRpdmlkZXI6IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQWN0aW9uU2lkZWJhckl0ZW08VCBleHRlbmRzIERlZmluZVJvdXRlT3B0aW9ucywgSyBleHRlbmRzIGtleW9mIFQ+IGV4dGVuZHMgQmFzZVNpZGViYXJJdGVtPFQsIEs+IHtcblx0b25DbGljazogKGRhdGE6IENvbnRlbnREYXRhPFQsIEs+KSA9PiB2b2lkO1xufVxuXG5pbnRlcmZhY2UgQWN0aW9uRm9ybVNpZGViYXJJdGVtRm9ybVBhcmFtczxUIGV4dGVuZHMgRGVmaW5lUm91dGVPcHRpb25zLCBLIGV4dGVuZHMga2V5b2YgVD4ge1xuXHR2YWx1ZXM6IFJlY29yZDxzdHJpbmcsIGFueT47XG5cdGhhbmRsZUNoYW5nZTogKGU6IFJlYWN0LkNoYW5nZUV2ZW50PGFueT4pID0+IHZvaWQ7XG5cdGZpZWxkRXJyb3I6IChmaWVsZE5hbWU6IHN0cmluZyB8IG51bWJlcikgPT4gYm9vbGVhbjtcblx0ZGF0YTogQ29udGVudERhdGE8VCwgSz47XG59XG5leHBvcnQgaW50ZXJmYWNlIEFjdGlvbkZvcm1TaWRlYmFySXRlbTxUIGV4dGVuZHMgRGVmaW5lUm91dGVPcHRpb25zLCBLIGV4dGVuZHMga2V5b2YgVD4gZXh0ZW5kcyBCYXNlU2lkZWJhckl0ZW08VCwgSz4ge1xuXHRmb3JtOiAocGFyYW1zOiBBY3Rpb25Gb3JtU2lkZWJhckl0ZW1Gb3JtUGFyYW1zPFQsIEs+KSA9PiBKU1guRWxlbWVudCB8IG51bGw7XG5cdGluaXRpYWxWYWx1ZXM/OiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgKChkYXRhOiBDb250ZW50RGF0YTxULCBLPikgPT4gUmVjb3JkPHN0cmluZywgYW55Pik7XG5cdG9uU3VibWl0PzogKHZhbHVlczogUmVjb3JkPHN0cmluZywgYW55PiwgZGF0YTogQ29udGVudERhdGE8VCwgSz4pID0+IHZvaWQ7XG5cdHZhbGlkYXRpb25TY2hlbWE/OiBhbnk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ3VzdG9tU2lkZWJhckl0ZW08VCBleHRlbmRzIERlZmluZVJvdXRlT3B0aW9ucywgSyBleHRlbmRzIGtleW9mIFQ+IGV4dGVuZHMgV2VpZ2h0ZWRJdGVtLCBWaXNpYmlsaXR5SXRlbSB7XG5cdHJlbmRlcjogKGRhdGE6IENvbnRlbnREYXRhPFQsIEs+KSA9PiBKU1guRWxlbWVudCB8IG51bGw7XG59XG5cbmV4cG9ydCB0eXBlIFNpZGViYXJJdGVtPFQgZXh0ZW5kcyBEZWZpbmVSb3V0ZU9wdGlvbnMsIEsgZXh0ZW5kcyBrZXlvZiBUPiA9XG5cdHwgKEJhc2VTaWRlYmFySXRlbTxULCBLPiAmIFJvdXRlSXRlbTxDb250ZW50RGF0YTxULCBLPj4pXG5cdHwgQWN0aW9uU2lkZWJhckl0ZW08VCwgSz5cblx0fCBDdXN0b21TaWRlYmFySXRlbTxULCBLPlxuXHR8IEFjdGlvbkZvcm1TaWRlYmFySXRlbTxULCBLPlxuXHR8IERpdmlkZXJTaWRlYmFySXRlbTxULCBLPjtcblxuZXhwb3J0IHR5cGUgQ29udGVudEhlYWRlcjxUIGV4dGVuZHMgRGVmaW5lUm91dGVPcHRpb25zLCBLIGV4dGVuZHMga2V5b2YgVD4gPVxuXHR8IHN0cmluZ1xuXHR8IHt0aXRsZTogc3RyaW5nOyBpY29uPzogc3RyaW5nfSAvLyBUT0RPIGljb24gc2hvdWxkIHByb2JhYmx5IGJlIFNlbWFudGljSUNPTlNcblx0fCAoKGRhdGE6IENvbnRlbnREYXRhPFQsIEs+KSA9PiB7dGl0bGU6IHN0cmluZzsgaWNvbj86IHN0cmluZ30pXG5cdHwgdW5kZWZpbmVkO1xuXG5leHBvcnQgaW50ZXJmYWNlIFBhZ2U8VCBleHRlbmRzIERlZmluZVJvdXRlT3B0aW9ucywgSyBleHRlbmRzIGtleW9mIFQ+IHtcblx0ZGF0YUhvb2tzPzogRGF0YUhvb2tJdGVtW107XG5cdHN0YXRlU2VsZWN0b3JIb29rPzogU3RhdGVTZWxlY3Rvckhvb2sgfCBTdGF0ZVNlbGVjdG9ySG9va1tdO1xuXHRwZXJtaXNzaW9uU2VsZWN0b3JIb29rPzogUGVybWlzc2lvblNlbGVjdG9ySG9vayB8IFBlcm1pc3Npb25TZWxlY3Rvckhvb2tbXTtcblx0Y29udGVudDogQ29udGVudDxULCBLPjtcblx0aGVhZGVyPzogQ29udGVudEhlYWRlcjxULCBLPjtcblx0c2lkZWJhcj86IFNpZGViYXJJdGVtPFQsIEs+W107XG5cdGZ1bGw/OiBib29sZWFuO1xufVxuXG5leHBvcnQgdHlwZSBQYWdlczxUIGV4dGVuZHMgRGVmaW5lUm91dGVPcHRpb25zPiA9IHtcblx0W2tleSBpbiBrZXlvZiBUXTogUGFnZTxULCBrZXk+IHwgQ29udGVudDxULCBrZXk+O1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIGlzUGFnZTxUIGV4dGVuZHMgRGVmaW5lUm91dGVPcHRpb25zLCBLIGV4dGVuZHMga2V5b2YgVD4odmFsdWU6IGFueSk6IHZhbHVlIGlzIFBhZ2U8VCwgSz4ge1xuXHRyZXR1cm4gISEodmFsdWUgYXMgUGFnZTxULCBLPikuY29udGVudDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzQWN0aW9uU2lkZWJhckl0ZW08VCBleHRlbmRzIERlZmluZVJvdXRlT3B0aW9ucywgSyBleHRlbmRzIGtleW9mIFQ+KHZhbHVlOiBhbnkpOiB2YWx1ZSBpcyBBY3Rpb25TaWRlYmFySXRlbTxULCBLPiB7XG5cdHJldHVybiAhISh2YWx1ZSBhcyBBY3Rpb25TaWRlYmFySXRlbTxULCBLPikub25DbGljaztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzQWN0aW9uRm9ybVNpZGViYXJJdGVtPFQgZXh0ZW5kcyBEZWZpbmVSb3V0ZU9wdGlvbnMsIEsgZXh0ZW5kcyBrZXlvZiBUPih2YWx1ZTogYW55KTogdmFsdWUgaXMgQWN0aW9uRm9ybVNpZGViYXJJdGVtPFQsIEs+IHtcblx0cmV0dXJuICEhKHZhbHVlIGFzIEFjdGlvbkZvcm1TaWRlYmFySXRlbTxULCBLPikuZm9ybTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzQ3VzdG9tU2lkZWJhckl0ZW08VCBleHRlbmRzIERlZmluZVJvdXRlT3B0aW9ucywgSyBleHRlbmRzIGtleW9mIFQ+KHZhbHVlOiBhbnkpOiB2YWx1ZSBpcyBDdXN0b21TaWRlYmFySXRlbTxULCBLPiB7XG5cdHJldHVybiAhISh2YWx1ZSBhcyBDdXN0b21TaWRlYmFySXRlbTxULCBLPikucmVuZGVyO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNEaXZpZGVyU2lkZWJhckl0ZW08VCBleHRlbmRzIERlZmluZVJvdXRlT3B0aW9ucywgSyBleHRlbmRzIGtleW9mIFQ+KHZhbHVlOiBhbnkpOiB2YWx1ZSBpcyBEaXZpZGVyU2lkZWJhckl0ZW08VCwgSz4ge1xuXHRyZXR1cm4gKHZhbHVlIGFzIERpdmlkZXJTaWRlYmFySXRlbTxULCBLPikuZGl2aWRlcjtcbn1cbiIsImltcG9ydCB0eXBlIHtEZWZpbmVSb3V0ZU9wdGlvbnN9IGZyb20gJ0BpbXBlcml1bS9yb3V0ZXInO1xuaW1wb3J0IHtJY29uLCBTZW1hbnRpY0NPTE9SU30gZnJvbSAnc2VtYW50aWMtdWktcmVhY3QnO1xuaW1wb3J0IHR5cGUge1JvdXRlSXRlbX0gZnJvbSAnLi4vY29tbW9uSXRlbXMnO1xuaW1wb3J0IHR5cGUge0Jhc2VTaWRlYmFySXRlbSwgQ29udGVudERhdGF9IGZyb20gJy4vdHlwZXMnO1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0SWNvbjxUIGV4dGVuZHMgRGVmaW5lUm91dGVPcHRpb25zLCBLIGV4dGVuZHMga2V5b2YgVD4oaXRlbTogQmFzZVNpZGViYXJJdGVtPFQsIEs+LCBkYXRhOiBDb250ZW50RGF0YTxULCBLPikge1xuXHRpZiAoaXRlbS5pY29uKSB7XG5cdFx0Y29uc3QgaWNvbk5hbWUgPSB0eXBlb2YgaXRlbS5pY29uID09PSAnZnVuY3Rpb24nID8gaXRlbS5pY29uKGRhdGEpIDogaXRlbS5pY29uO1xuXHRcdHJldHVybiA8SWNvbiBuYW1lPXtpY29uTmFtZX0gLz47XG5cdH1cblx0cmV0dXJuIG51bGw7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRSb3V0ZVRvPFQgZXh0ZW5kcyBEZWZpbmVSb3V0ZU9wdGlvbnMsIEsgZXh0ZW5kcyBrZXlvZiBUPihpdGVtOiBSb3V0ZUl0ZW08Q29udGVudERhdGE8VCwgSz4+LCBkYXRhOiBDb250ZW50RGF0YTxULCBLPikge1xuXHRpZiAoaXRlbS50bykge1xuXHRcdHJldHVybiB0eXBlb2YgaXRlbS50byA9PT0gJ2Z1bmN0aW9uJyA/IGl0ZW0udG8oZGF0YSkgOiBpdGVtLnRvO1xuXHR9XG5cdHJldHVybiAnJztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFRleHQ8VCBleHRlbmRzIERlZmluZVJvdXRlT3B0aW9ucywgSyBleHRlbmRzIGtleW9mIFQ+KGl0ZW06IEJhc2VTaWRlYmFySXRlbTxULCBLPiwgZGF0YTogQ29udGVudERhdGE8VCwgSz4pIHtcblx0cmV0dXJuIHR5cGVvZiBpdGVtLnRleHQgPT09ICdmdW5jdGlvbicgPyBpdGVtLnRleHQoZGF0YSkgOiBpdGVtLnRleHQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRDb2xvcjxUIGV4dGVuZHMgRGVmaW5lUm91dGVPcHRpb25zLCBLIGV4dGVuZHMga2V5b2YgVD4oaXRlbTogQmFzZVNpZGViYXJJdGVtPFQsIEs+LCBkYXRhOiBDb250ZW50RGF0YTxULCBLPik6IFNlbWFudGljQ09MT1JTIHtcblx0aWYgKCFpdGVtLmNvbG9yKSByZXR1cm4gJ2JsdWUnO1xuXHRyZXR1cm4gdHlwZW9mIGl0ZW0uY29sb3IgPT09ICdmdW5jdGlvbicgPyBpdGVtLmNvbG9yKGRhdGEpIDogaXRlbS5jb2xvcjtcbn1cbiIsImltcG9ydCBkZWJ1ZyBmcm9tICdkZWJ1Zyc7XG5pbXBvcnQge2NvbXBvc2V9IGZyb20gJ2xvZGFzaC9mcCc7XG5pbXBvcnQge0ZyYWdtZW50fSBmcm9tICdyZWFjdCc7XG5pbXBvcnQge3VzZUxvY2F0aW9ufSBmcm9tICdyZWFjdC1yb3V0ZXItZG9tJztcbmltcG9ydCB7RXhlY3V0ZURhdGFIb29rfSBmcm9tICcuL0V4ZWN1dGVEYXRhSG9vayc7XG5pbXBvcnQgdHlwZSB7RGF0YUhvb2tJdGVtfSBmcm9tICcuL3R5cGVzJztcblxuY29uc3QgZCA9IGRlYnVnKCdpbXBlcml1bS5sYXlvdXQuZGF0YWhvb2tzLkRhdGFIb29rcycpO1xuXG5pbnRlcmZhY2UgRGF0YUhvb2tzUHJvcHMge1xuXHRkYXRhSG9va3M6IERhdGFIb29rSXRlbVtdO1xufVxuXG4vKipcbiAqIFJlbmRlcnMgbGF5b3V0IGRhdGEgaG9va3MuIFRoZXNlIGhvb2tzIHNob3VsZCByZXR1cm4gbm90aGluZy4gQWxsIGludGVyYWN0aW9uIHNob3VsZCBiZSBpbiBzaWRlIGVmZmVjdHMsIHVzdWFsbHkgcmV0cmlldmluZyBkYXRhIGFuZCBzZXR0aW5nIFJlZHV4IHN0YXRlLlxuICogQHBhcmFtIGRhdGFIb29rc1xuICogQGNvbnN0cnVjdG9yXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBEYXRhSG9va3Moe2RhdGFIb29rc306IERhdGFIb29rc1Byb3BzKSB7XG5cdGNvbnN0IHtwYXRobmFtZX0gPSB1c2VMb2NhdGlvbigpO1xuXG5cdHJldHVybiAoXG5cdFx0PD5cblx0XHRcdHtkYXRhSG9va3MubWFwKChob29rLCBpbmRleCkgPT4ge1xuXHRcdFx0XHRpZiAodHlwZW9mIGhvb2sgPT09ICdmdW5jdGlvbicpIHtcblx0XHRcdFx0XHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3Qvbm8tYXJyYXktaW5kZXgta2V5XG5cdFx0XHRcdFx0cmV0dXJuIDxFeGVjdXRlRGF0YUhvb2sga2V5PXtpbmRleH0gZGF0YUhvb2s9e2hvb2t9IC8+O1xuXHRcdFx0XHR9XG5cdFx0XHRcdGNvbnN0IGZuID0gQXJyYXkuaXNBcnJheShob29rLnJvdXRlTWF0Y2gpID8gY29tcG9zZShob29rLnJvdXRlTWF0Y2gpIDogaG9vay5yb3V0ZU1hdGNoO1xuXHRcdFx0XHRjb25zdCByb3V0ZVBhcmFtcyA9IGZuKHBhdGhuYW1lKTtcblx0XHRcdFx0aWYgKEFycmF5LmlzQXJyYXkoaG9vay5kYXRhSG9vaykpIHtcblx0XHRcdFx0XHRyZXR1cm4gKFxuXHRcdFx0XHRcdFx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0L25vLWFycmF5LWluZGV4LWtleVxuXHRcdFx0XHRcdFx0PEZyYWdtZW50IGtleT17aW5kZXh9PlxuXHRcdFx0XHRcdFx0XHR7aG9vay5kYXRhSG9vay5tYXAoKGRoLCBpbmRleDIpID0+IHtcblx0XHRcdFx0XHRcdFx0XHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3Qvbm8tYXJyYXktaW5kZXgta2V5XG5cdFx0XHRcdFx0XHRcdFx0cmV0dXJuIDxFeGVjdXRlRGF0YUhvb2sga2V5PXtpbmRleDJ9IGRhdGFIb29rPXtkaH0gcm91dGVQYXJhbXM9e3JvdXRlUGFyYW1zfSAvPjtcblx0XHRcdFx0XHRcdFx0fSl9XG5cdFx0XHRcdFx0XHQ8L0ZyYWdtZW50PlxuXHRcdFx0XHRcdCk7XG5cdFx0XHRcdH1cblx0XHRcdFx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0L25vLWFycmF5LWluZGV4LWtleVxuXHRcdFx0XHRyZXR1cm4gPEV4ZWN1dGVEYXRhSG9vayBkYXRhSG9vaz17aG9vay5kYXRhSG9va30ga2V5PXtpbmRleH0gcm91dGVQYXJhbXM9e3JvdXRlUGFyYW1zfSAvPjtcblx0XHRcdH0pfVxuXHRcdDwvPlxuXHQpO1xufVxuIiwiaW1wb3J0IHR5cGUge0RhdGFIb29rfSBmcm9tICcuL3R5cGVzJztcblxuaW50ZXJmYWNlIEV4ZWN1dGVEYXRhSG9va1Byb3BzIHtcblx0ZGF0YUhvb2s6IERhdGFIb29rO1xuXHRyb3V0ZVBhcmFtcz86IGFueTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIEV4ZWN1dGVEYXRhSG9vayh7ZGF0YUhvb2ssIHJvdXRlUGFyYW1zfTogRXhlY3V0ZURhdGFIb29rUHJvcHMpIHtcblx0ZGF0YUhvb2socm91dGVQYXJhbXMpO1xuXHRyZXR1cm4gbnVsbDtcbn1cbiIsImltcG9ydCB7dXNlRWZmZWN0fSBmcm9tICdyZWFjdCc7XG5pbXBvcnQge3VzZURpc3BhdGNofSBmcm9tICdyZWFjdC1yZWR1eCc7XG5pbXBvcnQge2FjdGlvbnN9IGZyb20gJy4uL3N0YXRlJztcbmltcG9ydCB0eXBlIHtQZXJtaXNzaW9uU2VsZWN0b3JIb29rfSBmcm9tICcuLi90eXBlcyc7XG5cbmludGVyZmFjZSBFeGVjdXRlUGVybWlzc2lvbkhvb2tQcm9wcyB7XG5cdHBlcm1pc3Npb25Ib29rOiBQZXJtaXNzaW9uU2VsZWN0b3JIb29rO1xuXHRyb3V0ZVBhcmFtcz86IGFueTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIEV4ZWN1dGVQZXJtaXNzaW9uSG9vayh7cGVybWlzc2lvbkhvb2ssIHJvdXRlUGFyYW1zfTogRXhlY3V0ZVBlcm1pc3Npb25Ib29rUHJvcHMpIHtcblx0Y29uc3QgZGlzcGF0Y2ggPSB1c2VEaXNwYXRjaCgpO1xuXHRjb25zdCBwZXJtcyA9IHBlcm1pc3Npb25Ib29rKHJvdXRlUGFyYW1zKTtcblxuXHR1c2VFZmZlY3QoKCkgPT4ge1xuXHRcdE9iamVjdC5rZXlzKHBlcm1zKS5mb3JFYWNoKHBlcm1pc3Npb24gPT4ge1xuXHRcdFx0ZGlzcGF0Y2goYWN0aW9ucy5zZXRQZXJtaXNzaW9uKHtwZXJtaXNzaW9uLCByZXN1bHQ6IHBlcm1zW3Blcm1pc3Npb25dfSkpO1xuXHRcdH0pO1xuXHR9LCBbZGlzcGF0Y2gsIHBlcm1zXSk7XG5cblx0cmV0dXJuIG51bGw7XG59XG4iLCJpbXBvcnQgZGVidWcgZnJvbSAnZGVidWcnO1xuaW1wb3J0IHR5cGUge1Blcm1pc3Npb25TZWxlY3Rvckhvb2t9IGZyb20gJy4uL3R5cGVzJztcbmltcG9ydCB7RXhlY3V0ZVBlcm1pc3Npb25Ib29rfSBmcm9tICcuL0V4ZWN1dGVQZXJtaXNzaW9uSG9vayc7XG5cbmNvbnN0IGQgPSBkZWJ1ZygnaW1wZXJpdW0ubGF5b3V0LmRhdGFob29rcy5QZXJtaXNzaW9uSG9va3MnKTtcblxuaW50ZXJmYWNlIFBlcm1pc3Npb25Ib29rc1Byb3BzIHtcblx0cGVybWlzc2lvbkhvb2tzOiBQZXJtaXNzaW9uU2VsZWN0b3JIb29rW107XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBQZXJtaXNzaW9uSG9va3Moe3Blcm1pc3Npb25Ib29rc306IFBlcm1pc3Npb25Ib29rc1Byb3BzKSB7XG5cdHJldHVybiAoXG5cdFx0PD5cblx0XHRcdHtwZXJtaXNzaW9uSG9va3MubWFwKChob29rLCBpbmRleCkgPT4ge1xuXHRcdFx0XHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3Qvbm8tYXJyYXktaW5kZXgta2V5XG5cdFx0XHRcdHJldHVybiA8RXhlY3V0ZVBlcm1pc3Npb25Ib29rIGtleT17aW5kZXh9IHBlcm1pc3Npb25Ib29rPXtob29rfSAvPjtcblx0XHRcdH0pfVxuXHRcdDwvPlxuXHQpO1xufVxuIiwiaW1wb3J0IHt1c2VBdXRofSBmcm9tICdAaW1wZXJpdW0vYXV0aC1jbGllbnQnO1xuaW1wb3J0IGRlYnVnIGZyb20gJ2RlYnVnJztcbmltcG9ydCB0eXBlIHtMb2NhdGlvbn0gZnJvbSAnaGlzdG9yeSc7XG5pbXBvcnQgY29tcGFjdCBmcm9tICdsb2Rhc2gvY29tcGFjdCc7XG5pbXBvcnQgbWVyZ2UgZnJvbSAnbG9kYXNoL21lcmdlJztcbmltcG9ydCBxdWVyeVN0cmluZyBmcm9tICdxdWVyeXN0cmluZyc7XG5pbXBvcnQge3VzZUxvY2F0aW9ufSBmcm9tICdyZWFjdC1yb3V0ZXItZG9tJztcbmltcG9ydCB7dXNlTGF5b3V0U3RhdGV9IGZyb20gJy4uL3N0YXRlJztcbmltcG9ydCB0eXBlIHtEYXRhLCBQZXJtaXNzaW9uU2VsZWN0b3JIb29rLCBTdGF0ZVNlbGVjdG9ySG9va30gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHt1c2VJc0FjdGl2ZVJvdXRlfSBmcm9tICcuL3VzZUlzQWN0aXZlUm91dGUnO1xuaW1wb3J0IHt1c2VTZWxlY3RQZXJtaXNzaW9ufSBmcm9tICcuL3VzZVNlbGVjdFBlcm1pc3Npb24nO1xuaW1wb3J0IHt1c2VTZWxlY3RTdGF0ZX0gZnJvbSAnLi91c2VTZWxlY3RTdGF0ZSc7XG5cbmNvbnN0IGQgPSBkZWJ1ZygnaW1wZXJpdW0ubGF5b3V0Lmhvb2tzLnVzZUJ1aWxkRGF0YScpO1xuXG5leHBvcnQgaW50ZXJmYWNlIFVzZUJ1aWxkRGF0YVBhcmFtcyB7XG5cdGRhdGE/OiBEYXRhO1xuXHRyb3V0ZUl0ZW0/OiBhbnk7XG5cdHN0YXRlU2VsZWN0b3JIb29rPzogU3RhdGVTZWxlY3Rvckhvb2sgfCBTdGF0ZVNlbGVjdG9ySG9va1tdO1xuXHRwZXJtaXNzaW9uU2VsZWN0b3JIb29rPzogUGVybWlzc2lvblNlbGVjdG9ySG9vayB8IFBlcm1pc3Npb25TZWxlY3Rvckhvb2tbXTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVzZUJ1aWxkRGF0YSh7c3RhdGVTZWxlY3Rvckhvb2ssIHBlcm1pc3Npb25TZWxlY3Rvckhvb2ssIGRhdGEsIHJvdXRlSXRlbX06IFVzZUJ1aWxkRGF0YVBhcmFtcykge1xuXHRjb25zdCB7aWR9ID0gdXNlQXV0aCgpO1xuXHRjb25zdCB7cGVybWlzc2lvbnN9ID0gdXNlTGF5b3V0U3RhdGUoKTtcblx0Y29uc3Qgc3RhdGUgPSB1c2VTZWxlY3RTdGF0ZShzdGF0ZVNlbGVjdG9ySG9vayk7XG5cdGNvbnN0IGxvYyA9IHVzZUxvY2F0aW9uKCkgYXMgTG9jYXRpb247XG5cdGNvbnN0IHJvdXRlID0ge1xuXHRcdHBhdGg6IGNvbXBhY3QobG9jLnBhdGhuYW1lLnNwbGl0KCcvJykpLFxuXHRcdGhhc2g6IGxvYy5oYXNoLFxuXHRcdHNlYXJjaDogcXVlcnlTdHJpbmcucGFyc2UobG9jLnNlYXJjaCksXG5cdH07XG5cdGNvbnN0IGFjdGl2ZSA9IHVzZUlzQWN0aXZlUm91dGUoe2xvYywgcm91dGUsIHN0YXRlLCBhY3RpdmU6IGZhbHNlLCBpZCwgcGVybWlzc2lvbnN9LCByb3V0ZUl0ZW0pO1xuXHRjb25zdCBwZXJtaXNzaW9uc1ggPSB1c2VTZWxlY3RQZXJtaXNzaW9uKHtzdGF0ZSwgbG9jLCBhY3RpdmUsIHJvdXRlLCBpZCwgcGVybWlzc2lvbnN9LCBwZXJtaXNzaW9uU2VsZWN0b3JIb29rKTtcblx0Y29uc3QgbmV3RGF0YTogRGF0YSA9IHtzdGF0ZSwgbG9jLCBhY3RpdmUsIHJvdXRlLCBwZXJtaXNzaW9uczogey4uLnBlcm1pc3Npb25zLCAuLi5wZXJtaXNzaW9uc1h9LCBpZH07XG5cdHJldHVybiBkYXRhID8gbWVyZ2UoZGF0YSwgbmV3RGF0YSkgOiBuZXdEYXRhO1xufVxuIiwiaW1wb3J0IHt1c2VSb3V0ZU1hdGNofSBmcm9tICdyZWFjdC1yb3V0ZXInO1xuaW1wb3J0IHR5cGUge1JvdXRlUHJvcHN9IGZyb20gJ3JlYWN0LXJvdXRlci1kb20nO1xuaW1wb3J0IHtpc1JvdXRlSXRlbX0gZnJvbSAnLi4vY29tbW9uSXRlbXMnO1xuaW1wb3J0IHR5cGUge0RhdGF9IGZyb20gJy4uL3R5cGVzJztcblxuZXhwb3J0IGZ1bmN0aW9uIHVzZUlzQWN0aXZlUm91dGUoZGF0YTogRGF0YSwgaXRlbT86IGFueSkge1xuXHQvLyBEZXRlcm1pbmUgaWYgdGhlIGN1cnJlbnQgcm91dGUgbWF0Y2hlcyB0aGUgdG8gcm91dGUgdG8gc2VlIGlmIHRoZSBsaW5rIGlzIGFjdGl2ZVxuXHRjb25zdCByb3V0ZU1hdGNoT2JqZWN0OiBSb3V0ZVByb3BzID0ge307XG5cdGlmIChpdGVtICYmIGlzUm91dGVJdGVtKGl0ZW0pKSB7XG5cdFx0aWYgKHR5cGVvZiBpdGVtLnRvID09PSAnc3RyaW5nJykge1xuXHRcdFx0cm91dGVNYXRjaE9iamVjdC5wYXRoID0gaXRlbS50bztcblx0XHR9XG5cdFx0aWYgKHR5cGVvZiBpdGVtLnRvID09PSAnZnVuY3Rpb24nKSB7XG5cdFx0XHRyb3V0ZU1hdGNoT2JqZWN0LnBhdGggPSBpdGVtLnRvKGRhdGEpO1xuXHRcdH1cblx0XHRyb3V0ZU1hdGNoT2JqZWN0LmV4YWN0ID0gaXRlbS5leGFjdCAhPT0gZmFsc2U7XG5cdFx0cm91dGVNYXRjaE9iamVjdC5zZW5zaXRpdmUgPSBpdGVtLnNlbnNpdGl2ZTtcblx0XHRyb3V0ZU1hdGNoT2JqZWN0LnN0cmljdCA9IGl0ZW0uc3RyaWN0O1xuXHR9XG5cdGNvbnN0IHJvdXRlTWF0Y2ggPSB1c2VSb3V0ZU1hdGNoKHJvdXRlTWF0Y2hPYmplY3QpO1xuXHRyZXR1cm4gcm91dGVNYXRjaCAhPT0gbnVsbDtcbn1cbiIsImltcG9ydCBmbG93UmlnaHQgZnJvbSAnbG9kYXNoL2Zsb3dSaWdodCc7XG5pbXBvcnQgdHlwZSB7RGF0YSwgUGVybWlzc2lvblNlbGVjdG9ySG9va30gZnJvbSAnLi4vdHlwZXMnO1xuXG5leHBvcnQgZnVuY3Rpb24gdXNlU2VsZWN0UGVybWlzc2lvbihkYXRhOiBEYXRhLCBwZXJtaXNzaW9uU2VsZWN0b3JIb29rPzogUGVybWlzc2lvblNlbGVjdG9ySG9vayB8IFBlcm1pc3Npb25TZWxlY3Rvckhvb2tbXSkge1xuXHRsZXQgZmluYWxTZWxlY3Rvckhvb2s6IFBlcm1pc3Npb25TZWxlY3Rvckhvb2sgPSAoKSA9PiAoe30pO1xuXHRpZiAocGVybWlzc2lvblNlbGVjdG9ySG9vaykge1xuXHRcdGZpbmFsU2VsZWN0b3JIb29rID0gQXJyYXkuaXNBcnJheShwZXJtaXNzaW9uU2VsZWN0b3JIb29rKSA/IGZsb3dSaWdodChwZXJtaXNzaW9uU2VsZWN0b3JIb29rKSA6IHBlcm1pc3Npb25TZWxlY3Rvckhvb2s7XG5cdH1cblx0cmV0dXJuIGZpbmFsU2VsZWN0b3JIb29rKGRhdGEpO1xufVxuIiwiaW1wb3J0IGZsb3dSaWdodCBmcm9tICdsb2Rhc2gvZmxvd1JpZ2h0JztcbmltcG9ydCB0eXBlIHtTdGF0ZVNlbGVjdG9ySG9va30gZnJvbSAnLi4vdHlwZXMnO1xuXG5leHBvcnQgZnVuY3Rpb24gdXNlU2VsZWN0U3RhdGUoc3RhdGVTZWxlY3Rvckhvb2s/OiBTdGF0ZVNlbGVjdG9ySG9vayB8IFN0YXRlU2VsZWN0b3JIb29rW10pIHtcblx0bGV0IGZpbmFsU2VsZWN0b3JIb29rOiAoKSA9PiBhbnkgPSAoKSA9PiAoe30pO1xuXHRpZiAoc3RhdGVTZWxlY3Rvckhvb2spIHtcblx0XHRmaW5hbFNlbGVjdG9ySG9vayA9IEFycmF5LmlzQXJyYXkoc3RhdGVTZWxlY3Rvckhvb2spID8gZmxvd1JpZ2h0KHN0YXRlU2VsZWN0b3JIb29rKSA6IHN0YXRlU2VsZWN0b3JIb29rO1xuXHR9XG5cdHJldHVybiBmaW5hbFNlbGVjdG9ySG9vaygpO1xufVxuIiwiaW1wb3J0IHR5cGUge0RhdGF9IGZyb20gJy4uLy4uL3R5cGVzJztcbmltcG9ydCB0eXBlIHtDdXN0b21MYXlvdXRJdGVtfSBmcm9tICcuLi90eXBlcyc7XG5cbmludGVyZmFjZSBDdXN0b21MYXlvdXRJdGVtQ29tcG9uZW50UHJvcHMge1xuXHRpdGVtOiBDdXN0b21MYXlvdXRJdGVtO1xuXHRkYXRhOiBEYXRhO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gQ3VzdG9tTGF5b3V0SXRlbUNvbXBvbmVudCh7aXRlbSwgZGF0YX06IEN1c3RvbUxheW91dEl0ZW1Db21wb25lbnRQcm9wcykge1xuXHRyZXR1cm4gaXRlbS5yZW5kZXIoZGF0YSk7XG59XG4iLCJpbXBvcnQgZGVidWcgZnJvbSAnZGVidWcnO1xuaW1wb3J0IHt1c2VTdGF0ZX0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHtBY2NvcmRpb24sIERyb3Bkb3duLCBJY29uLCBNZW51fSBmcm9tICdzZW1hbnRpYy11aS1yZWFjdCc7XG5pbXBvcnQgdHlwZSB7RGF0YX0gZnJvbSAnLi4vLi4vdHlwZXMnO1xuaW1wb3J0IHR5cGUge0Ryb3Bkb3duTGF5b3V0SXRlbX0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHtnZXRUZXh0fSBmcm9tICcuLi91dGlscyc7XG5pbXBvcnQgc3R5bGVzIGZyb20gJy4vc3R5bGVzLmNzcyc7XG5cbmNvbnN0IGQgPSBkZWJ1ZygnaW1wZXJpdW0ubGF5b3V0LmNvbXBvbmVudHMuRHJvcGRvd25JdGVtJyk7XG5cbmludGVyZmFjZSBEcm9wZG93bkl0ZW1Qcm9wcyB7XG5cdGl0ZW06IERyb3Bkb3duTGF5b3V0SXRlbTtcblx0Y2hpbGRyZW46IEpTWC5FbGVtZW50W107XG5cdGRhdGE6IERhdGE7XG5cdHZlcnRpY2FsPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIERyb3Bkb3duSXRlbSh7aXRlbSwgdmVydGljYWwsIGNoaWxkcmVuLCBkYXRhfTogRHJvcGRvd25JdGVtUHJvcHMpIHtcblx0Y29uc3QgW29wZW4sIHNldE9wZW5dID0gdXNlU3RhdGUoZmFsc2UpO1xuXG5cdGlmICh2ZXJ0aWNhbCkge1xuXHRcdHJldHVybiAoXG5cdFx0XHQ8TWVudS5JdGVtIGNsYXNzTmFtZT1cImltcGVyaXVtVmVydGljYWxEcm9wZG93blwiPlxuXHRcdFx0XHQ8QWNjb3JkaW9uIGZsdWlkPlxuXHRcdFx0XHRcdDxBY2NvcmRpb24uVGl0bGVcblx0XHRcdFx0XHRcdGNsYXNzTmFtZT17c3R5bGVzLnZlcnRpY2FsRHJvcGRvd25UaXRsZX1cblx0XHRcdFx0XHRcdG9uQ2xpY2s9e2V2ID0+IHtcblx0XHRcdFx0XHRcdFx0ZXYuc3RvcFByb3BhZ2F0aW9uKCk7XG5cdFx0XHRcdFx0XHRcdHNldE9wZW4oIW9wZW4pO1xuXHRcdFx0XHRcdFx0fX1cblx0XHRcdFx0XHQ+XG5cdFx0XHRcdFx0XHQ8SWNvbiBjbGFzc05hbWU9e29wZW4gPyBzdHlsZXMudmVydGljYWxEcm9wZG93bkljb25Sb3RhdGVkIDogc3R5bGVzLnZlcnRpY2FsRHJvcGRvd25JY29ufSBuYW1lPVwiYXJyb3cgcmlnaHRcIiAvPlxuXHRcdFx0XHRcdFx0e2l0ZW0udGV4dH1cblx0XHRcdFx0XHQ8L0FjY29yZGlvbi5UaXRsZT5cblx0XHRcdFx0XHQ8QWNjb3JkaW9uLkNvbnRlbnQgYWN0aXZlPXtvcGVufSBjbGFzc05hbWU9e2Ake3N0eWxlcy52ZXJ0aWNhbERyb3Bkb3duQ29udGVudH0gaW1wZXJpdW1WZXJ0aWNhbERyb3Bkb3duQ29udGVudGB9IGNoaWxkcmVuPXtjaGlsZHJlbn0gLz5cblx0XHRcdFx0PC9BY2NvcmRpb24+XG5cdFx0XHQ8L01lbnUuSXRlbT5cblx0XHQpO1xuXHR9XG5cblx0cmV0dXJuIChcblx0XHQ8RHJvcGRvd24gaXRlbSB0ZXh0PXtnZXRUZXh0KGl0ZW0sIGRhdGEpfSBjbGFzc05hbWU9XCJpbXBlcml1bURyb3Bkb3duXCI+XG5cdFx0XHQ8RHJvcGRvd24uTWVudSBjbGFzc05hbWU9XCJpbXBlcml1bURyb3Bkb3duQ29udGVudFwiPntjaGlsZHJlbn08L0Ryb3Bkb3duLk1lbnU+XG5cdFx0PC9Ecm9wZG93bj5cblx0KTtcbn1cbiIsImltcG9ydCBkZWJ1ZyBmcm9tICdkZWJ1Zyc7XG5pbXBvcnQge1JlYWN0Tm9kZSwgdXNlU3RhdGV9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7U2VnbWVudH0gZnJvbSAnc2VtYW50aWMtdWktcmVhY3QnO1xuaW1wb3J0IHt1c2VMYXlvdXRTdGF0ZX0gZnJvbSAnLi4vLi4vc3RhdGUnO1xuaW1wb3J0IHttb3ZlSXRlbXN9IGZyb20gJy4uL21vdmVJdGVtcyc7XG5pbXBvcnQgdHlwZSB7TGF5b3V0RGF0YX0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHtMYXlvdXRJdGVtQmFyfSBmcm9tICcuL0xheW91dEl0ZW1CYXInO1xuaW1wb3J0IHtTZWNvbmRhcnlNZW51VG9nZ2xlSXRlbX0gZnJvbSAnLi9TZWNvbmRhcnlNZW51VG9nZ2xlSXRlbSc7XG5pbXBvcnQgc3R5bGVzIGZyb20gJy4vc3R5bGVzLmNzcyc7XG5cbmNvbnN0IGQgPSBkZWJ1ZygnaW1wZXJpdW0ubGF5b3V0LmNvbXBvbmVudHMuTGF5b3V0Jyk7XG5cbmludGVyZmFjZSBMYXlvdXRQcm9wcyBleHRlbmRzIFJlcXVpcmVkPExheW91dERhdGE+IHtcblx0Y2hpbGRyZW4/OiBSZWFjdE5vZGU7XG59XG5cbi8qKlxuICogUmVuZGVycyB0aGUgbWFpbiBsYXlvdXQuXG4gKiBIaWRlcy9zaG93cy9jb2xsYXBzZXMgdGhpbmdzIGFzIG5lZWQgZm9yIG1vYmlsZSBsYXlvdXQuXG4gKiBUcmFja3Mgc3RhdGUgdG8gd2hldGhlciB0aGUgc2lkZSBtZW51IGlzIG9wZW4gb3Igbm90LlxuICogQHBhcmFtIGZvb3RlclxuICogQHBhcmFtIG1lbnViYXJcbiAqIEBwYXJhbSBzdGF0dXNiYXJcbiAqIEBwYXJhbSBjaGlsZHJlblxuICogQGNvbnN0cnVjdG9yXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBMYXlvdXQoe2Zvb3RlciwgcHJpbWFyeU1lbnUsIHN0YXR1c2Jhciwgc2Vjb25kYXJ5TWVudSwgY2hpbGRyZW59OiBMYXlvdXRQcm9wcykge1xuXHRjb25zdCB7aXNNb2JpbGV9ID0gdXNlTGF5b3V0U3RhdGUoKTtcblx0Y29uc3QgW21lbnVPcGVuLCBzZXRNZW51T3Blbl0gPSB1c2VTdGF0ZSh0cnVlKTtcblxuXHRjb25zdCBwcmltYXJ5TWVudVRvZ2dsZSA9IHtcblx0XHRzdGlja09uTW9iaWxlOiB0cnVlLFxuXHRcdHdlaWdodDogLTE5OTk5LFxuXHRcdHJlbmRlcjogKCkgPT4ge1xuXHRcdFx0aWYgKCFpc01vYmlsZSkgcmV0dXJuIG51bGw7XG5cdFx0XHRyZXR1cm4gPFNlY29uZGFyeU1lbnVUb2dnbGVJdGVtIG1lbnVPcGVuPXttZW51T3Blbn0gc2V0TWVudU9wZW49e3NldE1lbnVPcGVufSAvPjtcblx0XHR9LFxuXHR9O1xuXG5cdC8vIERldGVybWluZSBtZW51YmFyIGl0ZW1zXG5cdGNvbnN0IHByaW1hcnlNZW51SXRlbXMgPSBtb3ZlSXRlbXMoXG5cdFx0aXNNb2JpbGUgPyBbcHJpbWFyeU1lbnVUb2dnbGUsIC4uLnByaW1hcnlNZW51XS5maWx0ZXIodiA9PiB2LnN0aWNrT25Nb2JpbGUgPT09IHRydWUpIDogW3ByaW1hcnlNZW51VG9nZ2xlLCAuLi5wcmltYXJ5TWVudV0sXG5cdCk7XG5cblx0Ly8gY29uc3QgcG1pID0gbWVyZ2VJdGVtcyhwcmltYXJ5TWVudUl0ZW1zKTtcblxuXHQvLyBEZXRlcm1pbmUgc2lkZWJhciBpdGVtc1xuXHRjb25zdCBzZWNvbmRhcnlNZW51SXRlbXMgPSBtb3ZlSXRlbXMoXG5cdFx0aXNNb2JpbGVcblx0XHRcdD8gW1xuXHRcdFx0XHRcdC4uLnNlY29uZGFyeU1lbnUsXG5cdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0dGV4dDogJycsXG5cdFx0XHRcdFx0XHRtZW51OiBbcHJpbWFyeU1lbnVUb2dnbGUsIC4uLnByaW1hcnlNZW51XS5maWx0ZXIodiA9PiB2LnN0aWNrT25Nb2JpbGUgIT09IHRydWUpLFxuXHRcdFx0XHRcdH0sXG5cdFx0XHQgIF1cblx0XHRcdDogc2Vjb25kYXJ5TWVudSxcblx0KTtcblxuXHRjb25zdCBzZWNvbmRhcnlNZW51Q29tcCA9XG5cdFx0c2Vjb25kYXJ5TWVudUl0ZW1zLmxlbmd0aCA+IDAgPyAoXG5cdFx0XHQ8ZGl2IGNsYXNzTmFtZT1cImltcGVyaXVtU2Vjb25kYXJ5TWVudVdyYXBwZXJcIj5cblx0XHRcdFx0PExheW91dEl0ZW1CYXJcblx0XHRcdFx0XHRpdGVtcz17c2Vjb25kYXJ5TWVudUl0ZW1zfVxuXHRcdFx0XHRcdGludmVydGVkXG5cdFx0XHRcdFx0dmVydGljYWxcblx0XHRcdFx0XHRjbGFzc05hbWU9e1xuXHRcdFx0XHRcdFx0aXNNb2JpbGUgJiYgIW1lbnVPcGVuXG5cdFx0XHRcdFx0XHRcdD8gYCR7c3R5bGVzLnNlY29uZGFyeU1lbnV9ICR7c3R5bGVzLnNlY29uZGFyeU1lbnVIaWRkZW59IGltcGVyaXVtU2Vjb25kYXJ5TWVudWBcblx0XHRcdFx0XHRcdFx0OiBgJHtzdHlsZXMuc2Vjb25kYXJ5TWVudX0gaW1wZXJpdW1TZWNvbmRhcnlNZW51YFxuXHRcdFx0XHRcdH1cblx0XHRcdFx0Lz5cblx0XHRcdDwvZGl2PlxuXHRcdCkgOiBudWxsO1xuXG5cdC8vIERldGVybWluZSBmb290ZXIgaXRlbXNcblx0Y29uc3QgZm9vdGVySXRlbXMgPSBtb3ZlSXRlbXMoZm9vdGVyKTtcblx0Y29uc3QgZm9vdGVyQ29tcCA9XG5cdFx0Zm9vdGVySXRlbXMubGVuZ3RoID4gMCA/IChcblx0XHRcdDxMYXlvdXRJdGVtQmFyIG5hbWU9XCJmb290ZXJcIiBpdGVtcz17Zm9vdGVySXRlbXN9IGNsYXNzTmFtZT17YCR7c3R5bGVzLmZvb3Rlcn0gaW1wZXJpdW1Gb290ZXJgfSBpbnZlcnRlZCBib3JkZXJsZXNzIC8+XG5cdFx0KSA6IG51bGw7XG5cblx0Ly8gRGV0ZXJtaW5lIHN0YXR1cyBiYXIgaXRlbXNcblx0Y29uc3Qgc3RhdHVzYmFySXRlbXMgPSBtb3ZlSXRlbXMoc3RhdHVzYmFyKTtcblx0Y29uc3Qgc3RhdHVzYmFyQ29tcCA9XG5cdFx0c3RhdHVzYmFySXRlbXMubGVuZ3RoID4gMCA/IDxMYXlvdXRJdGVtQmFyIGl0ZW1zPXtzdGF0dXNiYXJJdGVtc30gaW52ZXJ0ZWQgY2xhc3NOYW1lPXtgJHtzdHlsZXMuc3RhdHVzYmFyfSBpbXBlcml1bVN0YXR1c2JhcmB9IC8+IDogbnVsbDtcblxuXHRyZXR1cm4gKFxuXHRcdDxkaXYgY2xhc3NOYW1lPXtgJHtzdHlsZXMucGFyZW50fSBpbXBlcml1bUxheW91dCAke2lzTW9iaWxlID8gJ2ltcGVyaXVtTW9iaWxlJyA6ICdpbXBlcml1bU5vdE1vYmlsZSd9YH0+XG5cdFx0XHQ8ZGl2IGNsYXNzTmFtZT1cImltcGVyaXVtUHJpbWFyeU1lbnVXcmFwcGVyXCI+XG5cdFx0XHRcdDxMYXlvdXRJdGVtQmFyIGl0ZW1zPXtwcmltYXJ5TWVudUl0ZW1zfSBpbnZlcnRlZCBib3JkZXJsZXNzIGNsYXNzTmFtZT17YCR7c3R5bGVzLm1lbnViYXJ9IGltcGVyaXVtUHJpbWFyeU1lbnVgfSAvPlxuXHRcdFx0XHR7c3RhdHVzYmFyQ29tcH1cblx0XHRcdDwvZGl2PlxuXHRcdFx0PFNlZ21lbnQgYXR0YWNoZWQgY2xhc3NOYW1lPXtgJHtzdHlsZXMuY29udGVudFdyYXBwZXJ9IGltcGVyaXVtTGF5b3V0Q29udGVudFdyYXBwZXJgfT5cblx0XHRcdFx0e3NlY29uZGFyeU1lbnVDb21wfVxuXHRcdFx0XHQ8ZGl2IGNsYXNzTmFtZT17YCR7c3R5bGVzLmNvbnRlbnR9IGltcGVyaXVtTGF5b3V0Q29udGVudGB9PntjaGlsZHJlbn08L2Rpdj5cblx0XHRcdDwvU2VnbWVudD5cblx0XHRcdHtmb290ZXJDb21wfVxuXHRcdDwvZGl2PlxuXHQpO1xufVxuIiwiaW1wb3J0IGRlYnVnIGZyb20gJ2RlYnVnJztcbmltcG9ydCB0eXBlIHtNZW51UHJvcHN9IGZyb20gJ3NlbWFudGljLXVpLXJlYWN0JztcbmltcG9ydCB7TWVudX0gZnJvbSAnc2VtYW50aWMtdWktcmVhY3QnO1xuaW1wb3J0IHtzb3J0V2VpZ2h0ZWRJdGVtc30gZnJvbSAnLi4vLi4vdXRpbHMnO1xuaW1wb3J0IHR5cGUge0xheW91dEl0ZW19IGZyb20gJy4uL3R5cGVzJztcbmltcG9ydCB7c3BsaXRQb3NpdGlvbmVkSXRlbXN9IGZyb20gJy4uL3V0aWxzJztcbmltcG9ydCB7TGF5b3V0SXRlbVdyYXBwZXJ9IGZyb20gJy4vTGF5b3V0SXRlbVdyYXBwZXInO1xuXG5jb25zdCBkID0gZGVidWcoJ2ltcGVyaXVtLmxheW91dC5jb21wb25lbnRzLkxheW91dEl0ZW1CYXInKTtcblxuaW50ZXJmYWNlIEl0ZW1CYXJQcm9wcyBleHRlbmRzIE1lbnVQcm9wcyB7XG5cdGl0ZW1zOiBMYXlvdXRJdGVtW107XG59XG5cbi8qKlxuICogUmVuZGVycyBhIGhvcml6b250YWwgb3IgdmVydGljYWwgYmFyIG9mIG1lbnUgaXRlbXMuXG4gKiBAcGFyYW0gbmFtZVxuICogQHBhcmFtIGl0ZW1zXG4gKiBAcGFyYW0gcmVzdFxuICogQGNvbnN0cnVjdG9yXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBMYXlvdXRJdGVtQmFyKHtpdGVtcywgLi4ucmVzdH06IEl0ZW1CYXJQcm9wcykge1xuXHRjb25zdCBpbXMgPSBzcGxpdFBvc2l0aW9uZWRJdGVtcyhpdGVtcyk7XG5cblx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0L25vLWFycmF5LWluZGV4LWtleVxuXHRjb25zdCBsZWZ0SXRlbXMgPSBzb3J0V2VpZ2h0ZWRJdGVtcyhpbXMubGVmdEl0ZW1zKS5tYXAoKGl0ZW0sIGluZGV4KSA9PiA8TGF5b3V0SXRlbVdyYXBwZXIgaXRlbT17aXRlbX0ga2V5PXtpbmRleH0gdmVydGljYWw9e3Jlc3QudmVydGljYWx9IC8+KTtcblx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0L25vLWFycmF5LWluZGV4LWtleVxuXHRjb25zdCByaWdodEl0ZW1zID0gc29ydFdlaWdodGVkSXRlbXMoaW1zLnJpZ2h0SXRlbXMpLm1hcCgoaXRlbSwgaW5kZXgpID0+IDxMYXlvdXRJdGVtV3JhcHBlciBpdGVtPXtpdGVtfSBrZXk9e2luZGV4fSB2ZXJ0aWNhbD17cmVzdC52ZXJ0aWNhbH0gLz4pO1xuXG5cdHJldHVybiAoXG5cdFx0PE1lbnUgey4uLnJlc3R9PlxuXHRcdFx0e2xlZnRJdGVtc31cblx0XHRcdHtyZXN0LnZlcnRpY2FsID8gcmlnaHRJdGVtcyA6IDxNZW51Lk1lbnUgcG9zaXRpb249XCJyaWdodFwiPntyaWdodEl0ZW1zfTwvTWVudS5NZW51Pn1cblx0XHQ8L01lbnU+XG5cdCk7XG59XG4iLCJpbXBvcnQgZGVidWcgZnJvbSAnZGVidWcnO1xuaW1wb3J0IHtRdWVyeX0gZnJvbSAnbWluZ28nO1xuaW1wb3J0IHR5cGUge0NvbXBvbmVudENsYXNzfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQge0Ryb3Bkb3dufSBmcm9tICdzZW1hbnRpYy11aS1yZWFjdCc7XG5pbXBvcnQge3VzZUJ1aWxkRGF0YX0gZnJvbSAnLi4vLi4vaG9va3MvdXNlQnVpbGREYXRhJztcbmltcG9ydCB0eXBlIHtEYXRhfSBmcm9tICcuLi8uLi90eXBlcyc7XG5pbXBvcnQge3NvcnRXZWlnaHRlZEl0ZW1zfSBmcm9tICcuLi8uLi91dGlscyc7XG5pbXBvcnQgdHlwZSB7TGF5b3V0SXRlbX0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHtpc0N1c3RvbUxheW91dEl0ZW0sIGlzRHJvcGRvd25MYXlvdXRJdGVtLCBpc01lbnVMYXlvdXRJdGVtfSBmcm9tICcuLi90eXBlcyc7XG5pbXBvcnQge0N1c3RvbUxheW91dEl0ZW1Db21wb25lbnR9IGZyb20gJy4vQ3VzdG9tTGF5b3V0SXRlbUNvbXBvbmVudCc7XG5pbXBvcnQge0Ryb3Bkb3duSXRlbX0gZnJvbSAnLi9Ecm9wZG93bkl0ZW0nO1xuaW1wb3J0IHtNZW51SXRlbX0gZnJvbSAnLi9NZW51SXRlbSc7XG5pbXBvcnQge1BsYWluSXRlbX0gZnJvbSAnLi9QbGFpbkl0ZW0nO1xuXG5jb25zdCBkID0gZGVidWcoJ2ltcGVyaXVtLmxheW91dC5jb21wb25lbnRzLkxheW91dEl0ZW1XcmFwcGVyJyk7XG5cbmludGVyZmFjZSBJdGVtV3JhcHBlclByb3BzIHtcblx0aXRlbTogTGF5b3V0SXRlbTtcblx0YXM/OiBDb21wb25lbnRDbGFzcztcblx0dmVydGljYWw/OiBib29sZWFuO1xuXHRkYXRhPzogRGF0YTtcbn1cblxuLyoqXG4gKiBSZW5kZXJzIGFueSB0eXBlIG9mIEl0ZW0uIEdhdGhlcnMgc3RhdGUsIHJvdXRlIGFuZCBvdGhlciBkYXRhIGFuZCBjaGVja3MgZm9yIHZpc2liaWxpdHkuXG4gKiBAcGFyYW0gaXRlbVxuICogQHBhcmFtIGFzXG4gKiBAcGFyYW0gdmVydGljYWxcbiAqIEBwYXJhbSBwYXJlbnREYXRhXG4gKiBAY29uc3RydWN0b3JcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIExheW91dEl0ZW1XcmFwcGVyKHtpdGVtLCBhcywgdmVydGljYWwsIGRhdGE6IHBhcmVudERhdGF9OiBJdGVtV3JhcHBlclByb3BzKSB7XG5cdGNvbnN0IGRhdGEgPSB1c2VCdWlsZERhdGEoe1xuXHRcdHN0YXRlU2VsZWN0b3JIb29rOiBpdGVtLnN0YXRlU2VsZWN0b3JIb29rLFxuXHRcdHBlcm1pc3Npb25TZWxlY3Rvckhvb2s6IGl0ZW0ucGVybWlzc2lvblNlbGVjdG9ySG9vayxcblx0XHRyb3V0ZUl0ZW06IGl0ZW0sXG5cdFx0ZGF0YTogcGFyZW50RGF0YSxcblx0fSk7XG5cblx0Ly8gQ2hlY2sgaWYgdmlzaWJsZVxuXHRpZiAoaXRlbS52aXNpYmxlKSB7XG5cdFx0aWYgKHR5cGVvZiBpdGVtLnZpc2libGUgPT09ICdmdW5jdGlvbicpIHtcblx0XHRcdGlmICghaXRlbS52aXNpYmxlKGRhdGEpKSByZXR1cm4gbnVsbDtcblx0XHR9IGVsc2Uge1xuXHRcdFx0Y29uc3QgcSA9IG5ldyBRdWVyeShpdGVtLnZpc2libGUgfHwge30pO1xuXHRcdFx0aWYgKCFxLnRlc3QoZGF0YSkpIHJldHVybiBudWxsO1xuXHRcdH1cblx0fVxuXG5cdGlmIChpc0N1c3RvbUxheW91dEl0ZW0oaXRlbSkpIHtcblx0XHRyZXR1cm4gPEN1c3RvbUxheW91dEl0ZW1Db21wb25lbnQgaXRlbT17aXRlbX0gZGF0YT17ZGF0YX0gLz47XG5cdH1cblx0aWYgKGlzRHJvcGRvd25MYXlvdXRJdGVtKGl0ZW0pKSB7XG5cdFx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0L25vLWFycmF5LWluZGV4LWtleVxuXHRcdGNvbnN0IGNoaWxkcmVuID0gc29ydFdlaWdodGVkSXRlbXMoaXRlbS5kcm9wZG93bikubWFwKCh2LCBpbmRleCkgPT4gPExheW91dEl0ZW1XcmFwcGVyIGtleT17aW5kZXh9IGl0ZW09e3Z9IGFzPXtEcm9wZG93bi5JdGVtfSBkYXRhPXtkYXRhfSAvPik7XG5cdFx0cmV0dXJuIDxEcm9wZG93bkl0ZW0gaXRlbT17aXRlbX0gY2hpbGRyZW49e2NoaWxkcmVufSB2ZXJ0aWNhbD17dmVydGljYWx9IGRhdGE9e2RhdGF9IC8+O1xuXHR9XG5cdGlmIChpc01lbnVMYXlvdXRJdGVtKGl0ZW0pKSB7XG5cdFx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0L25vLWFycmF5LWluZGV4LWtleVxuXHRcdGNvbnN0IGNoaWxkcmVuID0gc29ydFdlaWdodGVkSXRlbXMoaXRlbS5tZW51KS5tYXAoKHYsIGluZGV4KSA9PiAoXG5cdFx0XHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3Qvbm8tYXJyYXktaW5kZXgta2V5XG5cdFx0XHQ8TGF5b3V0SXRlbVdyYXBwZXIga2V5PXtpbmRleH0gaXRlbT17dn0gYXM9e0Ryb3Bkb3duLkl0ZW19IHZlcnRpY2FsPXt2ZXJ0aWNhbH0gZGF0YT17ZGF0YX0gLz5cblx0XHQpKTtcblx0XHRyZXR1cm4gPE1lbnVJdGVtIGl0ZW09e2l0ZW19IGNoaWxkcmVuPXtjaGlsZHJlbn0gLz47XG5cdH1cblx0cmV0dXJuIDxQbGFpbkl0ZW0gaXRlbT17aXRlbX0gZGF0YT17ZGF0YX0gYXM9e2FzfSAvPjtcbn1cbiIsImltcG9ydCB7TWVudX0gZnJvbSAnc2VtYW50aWMtdWktcmVhY3QnO1xuaW1wb3J0IHR5cGUge01lbnVMYXlvdXRJdGVtfSBmcm9tICcuLi90eXBlcyc7XG5cbmludGVyZmFjZSBNZW51SXRlbVByb3BzIHtcblx0aXRlbTogTWVudUxheW91dEl0ZW07XG5cdGNoaWxkcmVuOiBKU1guRWxlbWVudFtdO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gTWVudUl0ZW0oe2l0ZW0sIGNoaWxkcmVufTogTWVudUl0ZW1Qcm9wcykge1xuXHRyZXR1cm4gKFxuXHRcdDxNZW51Lkl0ZW0+XG5cdFx0XHQ8TWVudS5IZWFkZXI+e2l0ZW0udGV4dH08L01lbnUuSGVhZGVyPlxuXHRcdFx0PE1lbnUuTWVudSBjb21wYWN0PVwiXCI+e2NoaWxkcmVufTwvTWVudS5NZW51PlxuXHRcdDwvTWVudS5JdGVtPlxuXHQpO1xufVxuIiwiaW1wb3J0IHR5cGUge0NvbXBvbmVudENsYXNzfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQge01lbnV9IGZyb20gJ3NlbWFudGljLXVpLXJlYWN0JztcbmltcG9ydCB0eXBlIHtEYXRhfSBmcm9tICcuLi8uLi90eXBlcyc7XG5pbXBvcnQgdHlwZSB7Q3VzdG9tTGF5b3V0SXRlbSwgRHJvcGRvd25MYXlvdXRJdGVtLCBMYXlvdXRJdGVtLCBNZW51TGF5b3V0SXRlbX0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHtnZXRJY29uLCBnZXRUZXh0LCBsaW5rUGFyYW1ldGVyc30gZnJvbSAnLi4vdXRpbHMnO1xuXG5pbnRlcmZhY2UgUGxhaW5JdGVtUHJvcHMge1xuXHRpdGVtOiBFeGNsdWRlPExheW91dEl0ZW0sIE1lbnVMYXlvdXRJdGVtIHwgRHJvcGRvd25MYXlvdXRJdGVtIHwgQ3VzdG9tTGF5b3V0SXRlbT47XG5cdGRhdGE6IERhdGE7XG5cdGFzPzogQ29tcG9uZW50Q2xhc3M7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBQbGFpbkl0ZW0oe2l0ZW0sIGRhdGEsIGFzfTogUGxhaW5JdGVtUHJvcHMpIHtcblx0Y29uc3QgbGlua1BhcmFtcyA9IGxpbmtQYXJhbWV0ZXJzKGl0ZW0sIGRhdGEpO1xuXG5cdGNvbnN0IEl0ZW1YID0gYXMgfHwgTWVudS5JdGVtO1xuXG5cdHJldHVybiAoXG5cdFx0PEl0ZW1YIHsuLi5saW5rUGFyYW1zfT5cblx0XHRcdHtnZXRJY29uKGl0ZW0sIGRhdGEpfVxuXHRcdFx0e2dldFRleHQoaXRlbSwgZGF0YSl9XG5cdFx0PC9JdGVtWD5cblx0KTtcbn1cbiIsImltcG9ydCB7SWNvbiwgTWVudX0gZnJvbSAnc2VtYW50aWMtdWktcmVhY3QnO1xuaW1wb3J0IHN0eWxlcyBmcm9tICcuL3N0eWxlcy5jc3MnO1xuXG5pbnRlcmZhY2UgU2Vjb25kYXJ5TWVudVRvZ2dsZUl0ZW1Qcm9wcyB7XG5cdG1lbnVPcGVuOiBib29sZWFuO1xuXHRzZXRNZW51T3BlbjogKG9wZW46IGJvb2xlYW4pID0+IHZvaWQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBTZWNvbmRhcnlNZW51VG9nZ2xlSXRlbSh7bWVudU9wZW4sIHNldE1lbnVPcGVufTogU2Vjb25kYXJ5TWVudVRvZ2dsZUl0ZW1Qcm9wcykge1xuXHRyZXR1cm4gKFxuXHRcdDxNZW51Lkl0ZW0+XG5cdFx0XHQ8SWNvblxuXHRcdFx0XHRjbGFzc05hbWU9e21lbnVPcGVuID8gc3R5bGVzLmljb25Sb3RhdGVkIDogc3R5bGVzLmljb259XG5cdFx0XHRcdG5hbWU9e21lbnVPcGVuID8gJ2Nsb3NlJyA6ICdzaWRlYmFyJ31cblx0XHRcdFx0b25DbGljaz17KCkgPT4ge1xuXHRcdFx0XHRcdHNldE1lbnVPcGVuKCFtZW51T3Blbik7XG5cdFx0XHRcdH19XG5cdFx0XHQvPlxuXHRcdDwvTWVudS5JdGVtPlxuXHQpO1xufVxuIiwiaW1wb3J0IGRlYnVnIGZyb20gJ2RlYnVnJztcbmltcG9ydCB7dXNlRWZmZWN0fSBmcm9tICdyZWFjdCc7XG5pbXBvcnQge3VzZURpc3BhdGNofSBmcm9tICdyZWFjdC1yZWR1eCc7XG5pbXBvcnQge3VzZU1lZGlhUXVlcnl9IGZyb20gJ3JlYWN0LXJlc3BvbnNpdmUnO1xuaW1wb3J0IHthY3Rpb25zLCB1c2VMYXlvdXRTdGF0ZX0gZnJvbSAnLi4vLi4vc3RhdGUnO1xuXG5jb25zdCBkID0gZGVidWcoJ2ltcGVyaXVtLmxheW91dC5ob29rcy51c2VNb2JpbGVMYXlvdXQnKTtcblxuZXhwb3J0IGZ1bmN0aW9uIHVzZU1vYmlsZUxheW91dCgpIHtcblx0Y29uc3QgZGlzcGF0Y2ggPSB1c2VEaXNwYXRjaCgpO1xuXHRjb25zdCB7aXNNb2JpbGV9ID0gdXNlTGF5b3V0U3RhdGUoKTtcblx0Y29uc3QgaXNNb2JpbGVYID0gdXNlTWVkaWFRdWVyeSh7cXVlcnk6ICcobWF4LXdpZHRoOiA5MDBweCknfSk7XG5cdHVzZUVmZmVjdCgoKSA9PiB7XG5cdFx0aWYgKGlzTW9iaWxlICE9PSBpc01vYmlsZVgpIHtcblx0XHRcdGQoYE1lZGlhIHF1ZXJ5IGNoYW5nZSBkZXRlY3RlZDogJHtpc01vYmlsZX0gLT4gJHtpc01vYmlsZVh9YCk7XG5cdFx0XHRkaXNwYXRjaChhY3Rpb25zLnNldE1vYmlsZShpc01vYmlsZVgpKTtcblx0XHR9XG5cdH0sIFtkaXNwYXRjaCwgaXNNb2JpbGUsIGlzTW9iaWxlWF0pO1xufVxuIiwiaW1wb3J0IGRlYnVnIGZyb20gJ2RlYnVnJztcbmltcG9ydCBncm91cEJ5IGZyb20gJ2xvZGFzaC9ncm91cEJ5JztcbmltcG9ydCB0eXBlIHtMYXlvdXRJdGVtfSBmcm9tICcuL3R5cGVzJztcbmltcG9ydCB7aXNEcm9wZG93bkxheW91dEl0ZW0sIGlzTWVudUxheW91dEl0ZW19IGZyb20gJy4vdHlwZXMnO1xuXG5jb25zdCBkID0gZGVidWcoJ2ltcGVyaXVtLmxheW91dC5tb3ZlSXRlbXMnKTtcblxuZnVuY3Rpb24gcHVsbEl0ZW1zKGl0ZW1zOiBMYXlvdXRJdGVtW10sIHB1bGxlZDogTGF5b3V0SXRlbVtdID0gW10pOiBMYXlvdXRJdGVtW10ge1xuXHRyZXR1cm4gaXRlbXMucmVkdWNlKChtZW1vLCBpdGVtKSA9PiB7XG5cdFx0aWYgKGlzRHJvcGRvd25MYXlvdXRJdGVtKGl0ZW0pKSB7XG5cdFx0XHRyZXR1cm4gW1xuXHRcdFx0XHQuLi5tZW1vLFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0Li4uaXRlbSxcblx0XHRcdFx0XHRkcm9wZG93bjogcHVsbEl0ZW1zKGl0ZW0uZHJvcGRvd24sIHB1bGxlZCksXG5cdFx0XHRcdH0sXG5cdFx0XHRdO1xuXHRcdH1cblxuXHRcdGlmIChpc01lbnVMYXlvdXRJdGVtKGl0ZW0pKSB7XG5cdFx0XHRyZXR1cm4gW1xuXHRcdFx0XHQuLi5tZW1vLFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0Li4uaXRlbSxcblx0XHRcdFx0XHRtZW51OiBwdWxsSXRlbXMoaXRlbS5tZW51LCBwdWxsZWQpLFxuXHRcdFx0XHR9LFxuXHRcdFx0XTtcblx0XHR9XG5cblx0XHRpZiAoIWl0ZW0ubW92ZVRvS2V5KSB7XG5cdFx0XHRyZXR1cm4gWy4uLm1lbW8sIGl0ZW1dO1xuXHRcdH1cblxuXHRcdHB1bGxlZC5wdXNoKGl0ZW0pO1xuXHRcdHJldHVybiBtZW1vO1xuXHR9LCBbXSBhcyBMYXlvdXRJdGVtW10pO1xufVxuXG5mdW5jdGlvbiBhZGRJdGVtcyhpdGVtczogTGF5b3V0SXRlbVtdLCBwdWxsZWQ6IFJlY29yZDxzdHJpbmcsIExheW91dEl0ZW1bXT4pOiBMYXlvdXRJdGVtW10ge1xuXHRyZXR1cm4gaXRlbXMucmVkdWNlKChtZW1vLCBpdGVtKSA9PiB7XG5cdFx0aWYgKGlzRHJvcGRvd25MYXlvdXRJdGVtKGl0ZW0pKSB7XG5cdFx0XHRjb25zdCBuZXdJdGVtcyA9IGl0ZW0ua2V5ICYmIHB1bGxlZFtpdGVtLmtleV0gPyBwdWxsZWRbaXRlbS5rZXldIDogW107XG5cdFx0XHRyZXR1cm4gW1xuXHRcdFx0XHQuLi5tZW1vLFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0Li4uaXRlbSxcblx0XHRcdFx0XHRkcm9wZG93bjogWy4uLmFkZEl0ZW1zKGl0ZW0uZHJvcGRvd24sIHB1bGxlZCksIC4uLm5ld0l0ZW1zXSxcblx0XHRcdFx0fSxcblx0XHRcdF07XG5cdFx0fVxuXG5cdFx0aWYgKGlzTWVudUxheW91dEl0ZW0oaXRlbSkgJiYgaXRlbS5rZXkpIHtcblx0XHRcdGNvbnN0IG5ld0l0ZW1zID0gaXRlbS5rZXkgJiYgcHVsbGVkW2l0ZW0ua2V5XSA/IHB1bGxlZFtpdGVtLmtleV0gOiBbXTtcblx0XHRcdHJldHVybiBbXG5cdFx0XHRcdC4uLm1lbW8sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHQuLi5pdGVtLFxuXHRcdFx0XHRcdG1lbnU6IFsuLi5hZGRJdGVtcyhpdGVtLm1lbnUsIHB1bGxlZCksIC4uLm5ld0l0ZW1zXSxcblx0XHRcdFx0fSxcblx0XHRcdF07XG5cdFx0fVxuXHRcdHJldHVybiBbLi4ubWVtbywgaXRlbV07XG5cdH0sIFtdIGFzIExheW91dEl0ZW1bXSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtb3ZlSXRlbXMoaXRlbXM6IExheW91dEl0ZW1bXSkge1xuXHRjb25zdCBwdWxsZWQ6IExheW91dEl0ZW1bXSA9IFtdO1xuXHRjb25zdCBpdGVtc01pbnVzUHVsbGVkID0gcHVsbEl0ZW1zKGl0ZW1zLCBwdWxsZWQpO1xuXHRyZXR1cm4gYWRkSXRlbXMoaXRlbXNNaW51c1B1bGxlZCwgZ3JvdXBCeShwdWxsZWQsICdtb3ZlVG9LZXknKSk7XG59XG4iLCJpbXBvcnQgdHlwZSB7U2VtYW50aWNJQ09OU30gZnJvbSAnc2VtYW50aWMtdWktcmVhY3QnO1xuaW1wb3J0IHR5cGUge0hvcml6b250YWxQb3NpdGlvbmVkSXRlbSwgUm91dGVJdGVtLCBWaXNpYmlsaXR5SXRlbSwgV2VpZ2h0ZWRJdGVtfSBmcm9tICcuLi9jb21tb25JdGVtcyc7XG5pbXBvcnQgdHlwZSB7RGF0YUhvb2tJdGVtfSBmcm9tICcuLi9kYXRhaG9va3MvdHlwZXMnO1xuaW1wb3J0IHR5cGUge0RhdGEsIFBlcm1pc3Npb25TZWxlY3Rvckhvb2t9IGZyb20gJy4uL3R5cGVzJztcblxuLyoqXG4gKiBEZXNjcmliZXMgYSBiYXNpYyB3ZWlnaHRlZCwgcG9zc2libHkgdmlzaWJsZSBpdGVtXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQmFzZUxheW91dEl0ZW0gZXh0ZW5kcyBXZWlnaHRlZEl0ZW0sIFZpc2liaWxpdHlJdGVtIHtcblx0dGV4dDogc3RyaW5nIHwgKChkYXRhOiBEYXRhKSA9PiBzdHJpbmcpO1xuXHRpY29uPzogU2VtYW50aWNJQ09OUyB8ICgoZGF0YTogRGF0YSkgPT4gU2VtYW50aWNJQ09OUyk7XG5cdG1vdmVUb0tleT86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDdXN0b21MYXlvdXRJdGVtIGV4dGVuZHMgV2VpZ2h0ZWRJdGVtLCBWaXNpYmlsaXR5SXRlbSB7XG5cdHJlbmRlcjogKGRhdGE6IERhdGEpID0+IEpTWC5FbGVtZW50IHwgbnVsbDtcblx0bW92ZVRvS2V5Pzogc3RyaW5nO1xufVxuXG4vKipcbiAqIERlc2NyaWJlcyBhIG1lbnUgdGhhdCBkaXNwbGF5cyBhIGRyb3Bkb3duIGxpc3Qgb2YgaXRlbXNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBEcm9wZG93bkxheW91dEl0ZW0gZXh0ZW5kcyBCYXNlTGF5b3V0SXRlbSB7XG5cdGRyb3Bkb3duOiAoKEJhc2VMYXlvdXRJdGVtICYgUm91dGVJdGVtPERhdGE+KSB8IEN1c3RvbUxheW91dEl0ZW0pW107XG5cdGtleT86IHN0cmluZztcbn1cblxuLyoqXG4gKiBEZXNjcmliZXMgYSBtZW51IHRoYXQgZGlzcGxheXMgYSBzdWIgbWVudSAobm90IGEgZHJvcGRvd24gbGlzdClcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBNZW51TGF5b3V0SXRlbSBleHRlbmRzIEJhc2VMYXlvdXRJdGVtIHtcblx0bWVudTogKChCYXNlTGF5b3V0SXRlbSAmIFJvdXRlSXRlbTxEYXRhPikgfCBDdXN0b21MYXlvdXRJdGVtKVtdO1xuXHRrZXk/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogRGVzY3JpYmVzIGEgaG9yaXpvbnRhbCBtZW51IGl0ZW0gd2hpY2ggaXMgZWl0aGVyIGEgcm91dGUgaXRlbSBvciBkcm9wZG93biBtZW51XG4gKi9cbmV4cG9ydCB0eXBlIExheW91dEl0ZW0gPSAoQmFzZUxheW91dEl0ZW0gJiBSb3V0ZUl0ZW08RGF0YT4pIHwgRHJvcGRvd25MYXlvdXRJdGVtIHwgTWVudUxheW91dEl0ZW0gfCBDdXN0b21MYXlvdXRJdGVtO1xuXG5leHBvcnQgaW50ZXJmYWNlIExheW91dERhdGEge1xuXHRwZXJtaXNzaW9uU2VsZWN0b3JIb29rcz86IFBlcm1pc3Npb25TZWxlY3Rvckhvb2tbXTtcblx0ZGF0YUhvb2tzPzogRGF0YUhvb2tJdGVtW107XG5cdHByaW1hcnlNZW51PzogKExheW91dEl0ZW0gJiBIb3Jpem9udGFsUG9zaXRpb25lZEl0ZW0pW107IC8vIHByaW1hcnkgbWVudVxuXHRzdGF0dXNiYXI/OiAoTGF5b3V0SXRlbSAmIEhvcml6b250YWxQb3NpdGlvbmVkSXRlbSlbXTtcblx0c2Vjb25kYXJ5TWVudT86IExheW91dEl0ZW1bXTsgLy8gc2Vjb25kYXJ5IG1lbnVcblx0Zm9vdGVyPzogKExheW91dEl0ZW0gJiBIb3Jpem9udGFsUG9zaXRpb25lZEl0ZW0pW107IC8vIGZvb3RlclxufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNDdXN0b21MYXlvdXRJdGVtKHZhbHVlOiBhbnkpOiB2YWx1ZSBpcyBDdXN0b21MYXlvdXRJdGVtIHtcblx0cmV0dXJuICEhKHZhbHVlIGFzIEN1c3RvbUxheW91dEl0ZW0pLnJlbmRlcjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzRHJvcGRvd25MYXlvdXRJdGVtKHZhbHVlOiBhbnkpOiB2YWx1ZSBpcyBEcm9wZG93bkxheW91dEl0ZW0ge1xuXHRyZXR1cm4gISEodmFsdWUgYXMgRHJvcGRvd25MYXlvdXRJdGVtKS5kcm9wZG93bjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzTWVudUxheW91dEl0ZW0odmFsdWU6IGFueSk6IHZhbHVlIGlzIE1lbnVMYXlvdXRJdGVtIHtcblx0cmV0dXJuICEhKHZhbHVlIGFzIE1lbnVMYXlvdXRJdGVtKS5tZW51O1xufVxuIiwiaW1wb3J0IHtMaW5rfSBmcm9tICdyZWFjdC1yb3V0ZXItZG9tJztcbmltcG9ydCB7SWNvbiwgU2VtYW50aWNJQ09OU30gZnJvbSAnc2VtYW50aWMtdWktcmVhY3QnO1xuaW1wb3J0IHR5cGUge1JvdXRlSXRlbX0gZnJvbSAnLi4vY29tbW9uSXRlbXMnO1xuaW1wb3J0IHtpc0hvcml6b250YWxQb3NpdGlvbmVkSXRlbX0gZnJvbSAnLi4vY29tbW9uSXRlbXMnO1xuaW1wb3J0IHR5cGUge0RhdGF9IGZyb20gJy4uL3R5cGVzJztcbmltcG9ydCB0eXBlIHtCYXNlTGF5b3V0SXRlbSwgTGF5b3V0SXRlbX0gZnJvbSAnLi90eXBlcyc7XG5cbi8qKlxuICogU3BsaXRzIHBvc2l0aW9uZWQgaXRlbXMgaW50byBsZWZ0IGFuZCByaWdodCBhcnJheXMgKGlmIGhvcml6b250YWwpXG4gKiBAcGFyYW0gaXRlbXNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNwbGl0UG9zaXRpb25lZEl0ZW1zPFQgZXh0ZW5kcyBMYXlvdXRJdGVtPihpdGVtczogVFtdKSB7XG5cdHJldHVybiBpdGVtcy5yZWR1Y2UoXG5cdFx0KG1lbW8sIHYpID0+IHtcblx0XHRcdGlmIChpc0hvcml6b250YWxQb3NpdGlvbmVkSXRlbSh2KSAmJiB2LnBvc2l0aW9uID09PSAncmlnaHQnKSB7XG5cdFx0XHRcdHJldHVybiB7XG5cdFx0XHRcdFx0bGVmdEl0ZW1zOiBtZW1vLmxlZnRJdGVtcyxcblx0XHRcdFx0XHRyaWdodEl0ZW1zOiBbLi4ubWVtby5yaWdodEl0ZW1zLCB2XSxcblx0XHRcdFx0fTtcblx0XHRcdH1cblx0XHRcdHJldHVybiB7XG5cdFx0XHRcdGxlZnRJdGVtczogWy4uLm1lbW8ubGVmdEl0ZW1zLCB2XSxcblx0XHRcdFx0cmlnaHRJdGVtczogbWVtby5yaWdodEl0ZW1zLFxuXHRcdFx0fTtcblx0XHR9LFxuXHRcdHtsZWZ0SXRlbXM6IFtdLCByaWdodEl0ZW1zOiBbXX0gYXMge2xlZnRJdGVtczogVFtdOyByaWdodEl0ZW1zOiBUW119LFxuXHQpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbGlua1BhcmFtZXRlcnMoaXRlbTogQmFzZUxheW91dEl0ZW0gJiBSb3V0ZUl0ZW08RGF0YT4sIGRhdGE6IERhdGEpIHtcblx0cmV0dXJuIGl0ZW0udG9cblx0XHQ/IHtcblx0XHRcdFx0YXM6IExpbmssXG5cdFx0XHRcdGFjdGl2ZTogZGF0YS5hY3RpdmUsXG5cdFx0XHRcdHRvOiB0eXBlb2YgaXRlbS50byA9PT0gJ2Z1bmN0aW9uJyA/IGl0ZW0udG8oZGF0YSkgOiBpdGVtLnRvLFxuXHRcdCAgfVxuXHRcdDoge307XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRUZXh0KGl0ZW06IEJhc2VMYXlvdXRJdGVtLCBkYXRhOiBEYXRhKSB7XG5cdHJldHVybiB0eXBlb2YgaXRlbS50ZXh0ID09PSAnZnVuY3Rpb24nID8gaXRlbS50ZXh0KGRhdGEpIDogaXRlbS50ZXh0O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0SWNvbihpdGVtOiBCYXNlTGF5b3V0SXRlbSwgZGF0YTogRGF0YSkge1xuXHQvLyBHZW5lcmF0ZSB0aGUgaWNvbiBjb21wb25lbnQsIGlmIGl0IGV4aXN0c1xuXHRsZXQgaWNvbk5hbWU6IFNlbWFudGljSUNPTlMgfCB1bmRlZmluZWQ7XG5cdGlmIChpdGVtLmljb24pIHtcblx0XHRpY29uTmFtZSA9IHR5cGVvZiBpdGVtLmljb24gPT09ICdmdW5jdGlvbicgPyBpdGVtLmljb24oZGF0YSkgOiBpdGVtLmljb247XG5cdH1cblx0cmV0dXJuIGl0ZW0uaWNvbiA/IDxJY29uIG5hbWU9e2ljb25OYW1lfSAvPiA6IG51bGw7XG59XG4iLCJpbXBvcnQgdHlwZSB7SG9jLCBJbXBlcml1bUNsaWVudH0gZnJvbSAnQGltcGVyaXVtL2NsaWVudCc7XG5pbXBvcnQgZGVidWcgZnJvbSAnZGVidWcnO1xuaW1wb3J0IHR5cGUge0NvbXBvbmVudFR5cGV9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7RGF0YUhvb2tzfSBmcm9tICcuLi9kYXRhaG9va3MvRGF0YUhvb2tzJztcbmltcG9ydCB7UGVybWlzc2lvbkhvb2tzfSBmcm9tICcuLi9kYXRhaG9va3MvUGVybWlzc2lvbkhvb2tzJztcbmltcG9ydCB7aXNJbXBlcml1bUxheW91dENsaWVudE1vZHVsZX0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHtMYXlvdXR9IGZyb20gJy4vY29tcG9uZW50cy9MYXlvdXQnO1xuaW1wb3J0IHR5cGUge0xheW91dERhdGF9IGZyb20gJy4vdHlwZXMnO1xuXG5jb25zdCBkID0gZGVidWcoJ2ltcGVyaXVtLmxheW91dC53aXRoTGF5b3V0Jyk7XG5cbmNvbnN0IGluaXRpYWxMYXlvdXRNb2R1bGVEYXRhOiBSZXF1aXJlZDxMYXlvdXREYXRhPiA9IHtcblx0ZGF0YUhvb2tzOiBbXSxcblx0cGVybWlzc2lvblNlbGVjdG9ySG9va3M6IFtdLFxuXHRwcmltYXJ5TWVudTogW10sXG5cdHN0YXR1c2JhcjogW10sXG5cdHNlY29uZGFyeU1lbnU6IFtdLFxuXHRmb290ZXI6IFtdLFxufTtcblxuZXhwb3J0IGZ1bmN0aW9uIHdpdGhMYXlvdXQoY2xpZW50OiBJbXBlcml1bUNsaWVudCk6IEhvYyB7XG5cdGNvbnN0IGxheW91dE1vZHVsZURhdGEgPSBjbGllbnQubW9kdWxlcy5yZWR1Y2UoKG1lbW8sIG1vZHVsZSkgPT4ge1xuXHRcdGlmIChpc0ltcGVyaXVtTGF5b3V0Q2xpZW50TW9kdWxlKG1vZHVsZSkpIHtcblx0XHRcdHJldHVybiB7XG5cdFx0XHRcdGRhdGFIb29rczogWy4uLihtZW1vLmRhdGFIb29rcyB8fCBbXSksIC4uLihtb2R1bGUubGF5b3V0LmRhdGFIb29rcyB8fCBbXSldLFxuXHRcdFx0XHRwZXJtaXNzaW9uU2VsZWN0b3JIb29rczogWy4uLihtZW1vLnBlcm1pc3Npb25TZWxlY3Rvckhvb2tzIHx8IFtdKSwgLi4uKG1vZHVsZS5sYXlvdXQucGVybWlzc2lvblNlbGVjdG9ySG9va3MgfHwgW10pXSxcblx0XHRcdFx0cHJpbWFyeU1lbnU6IFsuLi4obWVtby5wcmltYXJ5TWVudSB8fCBbXSksIC4uLihtb2R1bGUubGF5b3V0LnByaW1hcnlNZW51IHx8IFtdKV0sXG5cdFx0XHRcdHN0YXR1c2JhcjogWy4uLihtZW1vLnN0YXR1c2JhciB8fCBbXSksIC4uLihtb2R1bGUubGF5b3V0LnN0YXR1c2JhciB8fCBbXSldLFxuXHRcdFx0XHRzZWNvbmRhcnlNZW51OiBbLi4uKG1lbW8uc2Vjb25kYXJ5TWVudSB8fCBbXSksIC4uLihtb2R1bGUubGF5b3V0LnNlY29uZGFyeU1lbnUgfHwgW10pXSxcblx0XHRcdFx0Zm9vdGVyOiBbLi4uKG1lbW8uZm9vdGVyIHx8IFtdKSwgLi4uKG1vZHVsZS5sYXlvdXQuZm9vdGVyIHx8IFtdKV0sXG5cdFx0XHR9IGFzIFJlcXVpcmVkPExheW91dERhdGE+O1xuXHRcdH1cblx0XHRyZXR1cm4gbWVtbztcblx0fSwgaW5pdGlhbExheW91dE1vZHVsZURhdGEpO1xuXHRkKCdMYXlvdXQgaXRlbXMgcHJvY2Vzc2VkJywgbGF5b3V0TW9kdWxlRGF0YSk7XG5cblx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcblx0cmV0dXJuIGZ1bmN0aW9uIGxheW91dEhvYyhXcmFwcGVkOiBDb21wb25lbnRUeXBlPGFueT4pIHtcblx0XHRjb25zdCBkaXNwbGF5TmFtZSA9IFdyYXBwZWQuZGlzcGxheU5hbWUgfHwgV3JhcHBlZC5uYW1lIHx8ICcnO1xuXG5cdFx0ZnVuY3Rpb24gV2l0aExheW91dChwcm9wczogdW5rbm93bikge1xuXHRcdFx0cmV0dXJuIChcblx0XHRcdFx0PD5cblx0XHRcdFx0XHQ8TGF5b3V0IHsuLi5sYXlvdXRNb2R1bGVEYXRhfT5cblx0XHRcdFx0XHRcdDxXcmFwcGVkIHsuLi5wcm9wc30gbGF5b3V0PXtsYXlvdXRNb2R1bGVEYXRhfSAvPlxuXHRcdFx0XHRcdDwvTGF5b3V0PlxuXHRcdFx0XHRcdDxEYXRhSG9va3MgZGF0YUhvb2tzPXtsYXlvdXRNb2R1bGVEYXRhLmRhdGFIb29rc30gLz5cblx0XHRcdFx0XHQ8UGVybWlzc2lvbkhvb2tzIHBlcm1pc3Npb25Ib29rcz17bGF5b3V0TW9kdWxlRGF0YS5wZXJtaXNzaW9uU2VsZWN0b3JIb29rc30gLz5cblx0XHRcdFx0PC8+XG5cdFx0XHQpO1xuXHRcdH1cblxuXHRcdFdpdGhMYXlvdXQuZGlzcGxheU5hbWUgPSBgd2l0aExheW91dCgke2Rpc3BsYXlOYW1lfSlgO1xuXG5cdFx0cmV0dXJuIFdpdGhMYXlvdXQ7XG5cdH07XG59XG4iLCIvKiBlc2xpbnQtZGlzYWJsZSBuby1wYXJhbS1yZWFzc2lnbiAqL1xuaW1wb3J0IHtjcmVhdGVTbGljZUhvb2t9IGZyb20gJ0BpbXBlcml1bS9zdGF0ZSc7XG5pbXBvcnQge2NyZWF0ZVNsaWNlLCBQYXlsb2FkQWN0aW9ufSBmcm9tICdAcmVkdXhqcy90b29sa2l0JztcblxuZXhwb3J0IGNvbnN0IHN0YXRlID0gY3JlYXRlU2xpY2Uoe1xuXHRuYW1lOiAnaW1wZXJpdW1MYXlvdXQnLFxuXHRpbml0aWFsU3RhdGU6IHtcblx0XHRpc01vYmlsZTogZmFsc2UsXG5cdFx0cGFyYW1zOiB7fSxcblx0XHRwZXJtaXNzaW9uczoge30gYXMgUmVjb3JkPHN0cmluZywgYm9vbGVhbj4sXG5cdH0sXG5cdHJlZHVjZXJzOiB7XG5cdFx0c2V0TW9iaWxlOiAoc3QsIGFjdGlvbjogUGF5bG9hZEFjdGlvbjxib29sZWFuPikgPT4gKHsuLi5zdCwgaXNNb2JpbGU6IGFjdGlvbi5wYXlsb2FkfSksXG5cdFx0c2V0UGFyYW1zOiAoc3QsIGFjdGlvbjogUGF5bG9hZEFjdGlvbjxSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+PikgPT4ge1xuXHRcdFx0c3QucGFyYW1zID0gYWN0aW9uLnBheWxvYWQ7XG5cdFx0fSxcblx0XHRzZXRQZXJtaXNzaW9uOiAoc3QsIGFjdGlvbjogUGF5bG9hZEFjdGlvbjx7cGVybWlzc2lvbjogc3RyaW5nOyByZXN1bHQ6IGJvb2xlYW59PikgPT4ge1xuXHRcdFx0c3QucGVybWlzc2lvbnNbYWN0aW9uLnBheWxvYWQucGVybWlzc2lvbl0gPSBhY3Rpb24ucGF5bG9hZC5yZXN1bHQ7XG5cdFx0fSxcblx0fSxcbn0pO1xuXG5leHBvcnQgY29uc3QgdXNlTGF5b3V0U3RhdGUgPSBjcmVhdGVTbGljZUhvb2soc3RhdGUpO1xuXG5leHBvcnQgY29uc3Qge2FjdGlvbnN9ID0gc3RhdGU7XG4iLCJpbXBvcnQgdHlwZSB7SW1wZXJpdW1DbGllbnRNb2R1bGV9IGZyb20gJ0BpbXBlcml1bS9jbGllbnQnO1xuaW1wb3J0IHR5cGUge0xvY2F0aW9ufSBmcm9tICdoaXN0b3J5JztcbmltcG9ydCB0eXBlIHtMYXlvdXREYXRhfSBmcm9tICcuL2xheW91dC90eXBlcyc7XG5cbmV4cG9ydCB0eXBlIFN0YXRlID0gUmVjb3JkPHN0cmluZywgYW55Pjtcbi8qKlxuICogQSBob29rIHRoYXQgc2VsZWN0cyBmcm9tIHJlZHV4IHN0YXRlLlxuICovXG5leHBvcnQgdHlwZSBTdGF0ZVNlbGVjdG9ySG9vayA9ICgpID0+IFN0YXRlO1xuXG5leHBvcnQgdHlwZSBQZXJtaXNzaW9uUmVzdWx0cyA9IFJlY29yZDxzdHJpbmcsIGJvb2xlYW4+O1xuXG5leHBvcnQgdHlwZSBQZXJtaXNzaW9uU2VsZWN0b3JIb29rID0gKGRhdGE6IERhdGEpID0+IFBlcm1pc3Npb25SZXN1bHRzO1xuXG4vKipcbiAqIFRoZSB2aXNpYmlsaXR5IHF1ZXJ5IGNhbiBlaXRoZXIgYmUgYSBtaW5nbyBxdWVyeSBvciBhIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyBhIGJvb2xlYW4uIFRoZSBkYXRhIGlzIGFuIG9iamVjdCB3aXRoIHRoZSByb3V0ZXIgcGF0aCBtZXJnZWQgd2l0aCBhbnkgc3RhdGUgc2VsZWN0b3IgaG9vayBkYXRhLlxuICovXG5leHBvcnQgdHlwZSBWaXNpYmlsaXR5UXVlcnlGbiA9IChkYXRhOiBEYXRhKSA9PiBib29sZWFuO1xuXG5leHBvcnQgaW50ZXJmYWNlIERhdGEgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB7XG5cdGxvYzogTG9jYXRpb247XG5cdHJvdXRlOiB7XG5cdFx0cGF0aDogc3RyaW5nW107XG5cdFx0aGFzaDogc3RyaW5nO1xuXHRcdHNlYXJjaDogUmVjb3JkPHN0cmluZywgYW55Pjtcblx0fTtcblx0c3RhdGU6IFN0YXRlO1xuXHRhY3RpdmU6IGJvb2xlYW47XG5cdHBlcm1pc3Npb25zOiBQZXJtaXNzaW9uUmVzdWx0cztcblx0aWQ/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSW1wZXJpdW1MYXlvdXRDbGllbnRNb2R1bGUgZXh0ZW5kcyBJbXBlcml1bUNsaWVudE1vZHVsZSB7XG5cdGxheW91dDogTGF5b3V0RGF0YTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzSW1wZXJpdW1MYXlvdXRDbGllbnRNb2R1bGUobW9kdWxlOiBJbXBlcml1bUNsaWVudE1vZHVsZSk6IG1vZHVsZSBpcyBJbXBlcml1bUxheW91dENsaWVudE1vZHVsZSB7XG5cdGNvbnN0IGxheW91dE1vZHVsZSA9IG1vZHVsZSBhcyBJbXBlcml1bUxheW91dENsaWVudE1vZHVsZTtcblx0cmV0dXJuIGxheW91dE1vZHVsZS5sYXlvdXQgIT09IHVuZGVmaW5lZDtcbn1cbiIsImltcG9ydCBtZW1vaXplIGZyb20gJ2xvZGFzaC9tZW1vaXplJztcbmltcG9ydCBzb3J0QnkgZnJvbSAnbG9kYXNoL3NvcnRCeSc7XG5pbXBvcnQgdHlwZSB7V2VpZ2h0ZWRJdGVtfSBmcm9tICcuL2NvbW1vbkl0ZW1zJztcblxuLyoqXG4gKiBTb3J0cyB3ZWlnaHRlZCBpdGVtc1xuICovXG5leHBvcnQgY29uc3Qgc29ydFdlaWdodGVkSXRlbXMgPSBtZW1vaXplKGZ1bmN0aW9uIHNvcnRXZWlnaHRlZEl0ZW1zSW1wbDxUIGV4dGVuZHMgV2VpZ2h0ZWRJdGVtPihpdGVtczogVFtdKSB7XG5cdHJldHVybiBzb3J0QnkoaXRlbXMsIHYgPT4gdi53ZWlnaHQgfHwgMCk7XG59KTtcbiIsIlxuICAgICAgaW1wb3J0IEFQSSBmcm9tIFwiIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luamVjdFN0eWxlc0ludG9TdHlsZVRhZy5qc1wiO1xuICAgICAgaW1wb3J0IGRvbUFQSSBmcm9tIFwiIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3N0eWxlRG9tQVBJLmpzXCI7XG4gICAgICBpbXBvcnQgaW5zZXJ0Rm4gZnJvbSBcIiEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbnNlcnRCeVNlbGVjdG9yLmpzXCI7XG4gICAgICBpbXBvcnQgc2V0QXR0cmlidXRlcyBmcm9tIFwiIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3NldEF0dHJpYnV0ZXNXaXRob3V0QXR0cmlidXRlcy5qc1wiO1xuICAgICAgaW1wb3J0IGluc2VydFN0eWxlRWxlbWVudCBmcm9tIFwiIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luc2VydFN0eWxlRWxlbWVudC5qc1wiO1xuICAgICAgaW1wb3J0IHN0eWxlVGFnVHJhbnNmb3JtRm4gZnJvbSBcIiEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zdHlsZVRhZ1RyYW5zZm9ybS5qc1wiO1xuICAgICAgaW1wb3J0IGNvbnRlbnQsICogYXMgbmFtZWRFeHBvcnQgZnJvbSBcIiEhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanM/P3J1bGVTZXRbMV0ucnVsZXNbMl0udXNlWzJdIS4vc3R5bGVzLmNzc1wiO1xuICAgICAgXG4gICAgICBcblxudmFyIG9wdGlvbnMgPSB7fTtcblxub3B0aW9ucy5zdHlsZVRhZ1RyYW5zZm9ybSA9IHN0eWxlVGFnVHJhbnNmb3JtRm47XG5vcHRpb25zLnNldEF0dHJpYnV0ZXMgPSBzZXRBdHRyaWJ1dGVzO1xuXG4gICAgICBvcHRpb25zLmluc2VydCA9IGluc2VydEZuLmJpbmQobnVsbCwgXCJoZWFkXCIpO1xuICAgIFxub3B0aW9ucy5kb21BUEkgPSBkb21BUEk7XG5vcHRpb25zLmluc2VydFN0eWxlRWxlbWVudCA9IGluc2VydFN0eWxlRWxlbWVudDtcblxudmFyIHVwZGF0ZSA9IEFQSShjb250ZW50LCBvcHRpb25zKTtcblxuXG5cbmV4cG9ydCAqIGZyb20gXCIhIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9ydWxlU2V0WzFdLnJ1bGVzWzJdLnVzZVsyXSEuL3N0eWxlcy5jc3NcIjtcbiAgICAgICBleHBvcnQgZGVmYXVsdCBjb250ZW50ICYmIGNvbnRlbnQubG9jYWxzID8gY29udGVudC5sb2NhbHMgOiB1bmRlZmluZWQ7XG4iLCJcbiAgICAgIGltcG9ydCBBUEkgZnJvbSBcIiEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbmplY3RTdHlsZXNJbnRvU3R5bGVUYWcuanNcIjtcbiAgICAgIGltcG9ydCBkb21BUEkgZnJvbSBcIiEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zdHlsZURvbUFQSS5qc1wiO1xuICAgICAgaW1wb3J0IGluc2VydEZuIGZyb20gXCIhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5zZXJ0QnlTZWxlY3Rvci5qc1wiO1xuICAgICAgaW1wb3J0IHNldEF0dHJpYnV0ZXMgZnJvbSBcIiEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zZXRBdHRyaWJ1dGVzV2l0aG91dEF0dHJpYnV0ZXMuanNcIjtcbiAgICAgIGltcG9ydCBpbnNlcnRTdHlsZUVsZW1lbnQgZnJvbSBcIiEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbnNlcnRTdHlsZUVsZW1lbnQuanNcIjtcbiAgICAgIGltcG9ydCBzdHlsZVRhZ1RyYW5zZm9ybUZuIGZyb20gXCIhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc3R5bGVUYWdUcmFuc2Zvcm0uanNcIjtcbiAgICAgIGltcG9ydCBjb250ZW50LCAqIGFzIG5hbWVkRXhwb3J0IGZyb20gXCIhIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9ydWxlU2V0WzFdLnJ1bGVzWzJdLnVzZVsyXSEuL3N0eWxlcy5jc3NcIjtcbiAgICAgIFxuICAgICAgXG5cbnZhciBvcHRpb25zID0ge307XG5cbm9wdGlvbnMuc3R5bGVUYWdUcmFuc2Zvcm0gPSBzdHlsZVRhZ1RyYW5zZm9ybUZuO1xub3B0aW9ucy5zZXRBdHRyaWJ1dGVzID0gc2V0QXR0cmlidXRlcztcblxuICAgICAgb3B0aW9ucy5pbnNlcnQgPSBpbnNlcnRGbi5iaW5kKG51bGwsIFwiaGVhZFwiKTtcbiAgICBcbm9wdGlvbnMuZG9tQVBJID0gZG9tQVBJO1xub3B0aW9ucy5pbnNlcnRTdHlsZUVsZW1lbnQgPSBpbnNlcnRTdHlsZUVsZW1lbnQ7XG5cbnZhciB1cGRhdGUgPSBBUEkoY29udGVudCwgb3B0aW9ucyk7XG5cblxuXG5leHBvcnQgKiBmcm9tIFwiISEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cnVsZVNldFsxXS5ydWxlc1syXS51c2VbMl0hLi9zdHlsZXMuY3NzXCI7XG4gICAgICAgZXhwb3J0IGRlZmF1bHQgY29udGVudCAmJiBjb250ZW50LmxvY2FscyA/IGNvbnRlbnQubG9jYWxzIDogdW5kZWZpbmVkO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbnZhciBzdHlsZXNJbkRPTSA9IFtdO1xuXG5mdW5jdGlvbiBnZXRJbmRleEJ5SWRlbnRpZmllcihpZGVudGlmaWVyKSB7XG4gIHZhciByZXN1bHQgPSAtMTtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IHN0eWxlc0luRE9NLmxlbmd0aDsgaSsrKSB7XG4gICAgaWYgKHN0eWxlc0luRE9NW2ldLmlkZW50aWZpZXIgPT09IGlkZW50aWZpZXIpIHtcbiAgICAgIHJlc3VsdCA9IGk7XG4gICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5mdW5jdGlvbiBtb2R1bGVzVG9Eb20obGlzdCwgb3B0aW9ucykge1xuICB2YXIgaWRDb3VudE1hcCA9IHt9O1xuICB2YXIgaWRlbnRpZmllcnMgPSBbXTtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IGxpc3QubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgaXRlbSA9IGxpc3RbaV07XG4gICAgdmFyIGlkID0gb3B0aW9ucy5iYXNlID8gaXRlbVswXSArIG9wdGlvbnMuYmFzZSA6IGl0ZW1bMF07XG4gICAgdmFyIGNvdW50ID0gaWRDb3VudE1hcFtpZF0gfHwgMDtcbiAgICB2YXIgaWRlbnRpZmllciA9IFwiXCIuY29uY2F0KGlkLCBcIiBcIikuY29uY2F0KGNvdW50KTtcbiAgICBpZENvdW50TWFwW2lkXSA9IGNvdW50ICsgMTtcbiAgICB2YXIgaW5kZXhCeUlkZW50aWZpZXIgPSBnZXRJbmRleEJ5SWRlbnRpZmllcihpZGVudGlmaWVyKTtcbiAgICB2YXIgb2JqID0ge1xuICAgICAgY3NzOiBpdGVtWzFdLFxuICAgICAgbWVkaWE6IGl0ZW1bMl0sXG4gICAgICBzb3VyY2VNYXA6IGl0ZW1bM10sXG4gICAgICBzdXBwb3J0czogaXRlbVs0XSxcbiAgICAgIGxheWVyOiBpdGVtWzVdXG4gICAgfTtcblxuICAgIGlmIChpbmRleEJ5SWRlbnRpZmllciAhPT0gLTEpIHtcbiAgICAgIHN0eWxlc0luRE9NW2luZGV4QnlJZGVudGlmaWVyXS5yZWZlcmVuY2VzKys7XG4gICAgICBzdHlsZXNJbkRPTVtpbmRleEJ5SWRlbnRpZmllcl0udXBkYXRlcihvYmopO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgdXBkYXRlciA9IGFkZEVsZW1lbnRTdHlsZShvYmosIG9wdGlvbnMpO1xuICAgICAgb3B0aW9ucy5ieUluZGV4ID0gaTtcbiAgICAgIHN0eWxlc0luRE9NLnNwbGljZShpLCAwLCB7XG4gICAgICAgIGlkZW50aWZpZXI6IGlkZW50aWZpZXIsXG4gICAgICAgIHVwZGF0ZXI6IHVwZGF0ZXIsXG4gICAgICAgIHJlZmVyZW5jZXM6IDFcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGlkZW50aWZpZXJzLnB1c2goaWRlbnRpZmllcik7XG4gIH1cblxuICByZXR1cm4gaWRlbnRpZmllcnM7XG59XG5cbmZ1bmN0aW9uIGFkZEVsZW1lbnRTdHlsZShvYmosIG9wdGlvbnMpIHtcbiAgdmFyIGFwaSA9IG9wdGlvbnMuZG9tQVBJKG9wdGlvbnMpO1xuICBhcGkudXBkYXRlKG9iaik7XG5cbiAgdmFyIHVwZGF0ZXIgPSBmdW5jdGlvbiB1cGRhdGVyKG5ld09iaikge1xuICAgIGlmIChuZXdPYmopIHtcbiAgICAgIGlmIChuZXdPYmouY3NzID09PSBvYmouY3NzICYmIG5ld09iai5tZWRpYSA9PT0gb2JqLm1lZGlhICYmIG5ld09iai5zb3VyY2VNYXAgPT09IG9iai5zb3VyY2VNYXAgJiYgbmV3T2JqLnN1cHBvcnRzID09PSBvYmouc3VwcG9ydHMgJiYgbmV3T2JqLmxheWVyID09PSBvYmoubGF5ZXIpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBhcGkudXBkYXRlKG9iaiA9IG5ld09iaik7XG4gICAgfSBlbHNlIHtcbiAgICAgIGFwaS5yZW1vdmUoKTtcbiAgICB9XG4gIH07XG5cbiAgcmV0dXJuIHVwZGF0ZXI7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGxpc3QsIG9wdGlvbnMpIHtcbiAgb3B0aW9ucyA9IG9wdGlvbnMgfHwge307XG4gIGxpc3QgPSBsaXN0IHx8IFtdO1xuICB2YXIgbGFzdElkZW50aWZpZXJzID0gbW9kdWxlc1RvRG9tKGxpc3QsIG9wdGlvbnMpO1xuICByZXR1cm4gZnVuY3Rpb24gdXBkYXRlKG5ld0xpc3QpIHtcbiAgICBuZXdMaXN0ID0gbmV3TGlzdCB8fCBbXTtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGFzdElkZW50aWZpZXJzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgaWRlbnRpZmllciA9IGxhc3RJZGVudGlmaWVyc1tpXTtcbiAgICAgIHZhciBpbmRleCA9IGdldEluZGV4QnlJZGVudGlmaWVyKGlkZW50aWZpZXIpO1xuICAgICAgc3R5bGVzSW5ET01baW5kZXhdLnJlZmVyZW5jZXMtLTtcbiAgICB9XG5cbiAgICB2YXIgbmV3TGFzdElkZW50aWZpZXJzID0gbW9kdWxlc1RvRG9tKG5ld0xpc3QsIG9wdGlvbnMpO1xuXG4gICAgZm9yICh2YXIgX2kgPSAwOyBfaSA8IGxhc3RJZGVudGlmaWVycy5sZW5ndGg7IF9pKyspIHtcbiAgICAgIHZhciBfaWRlbnRpZmllciA9IGxhc3RJZGVudGlmaWVyc1tfaV07XG5cbiAgICAgIHZhciBfaW5kZXggPSBnZXRJbmRleEJ5SWRlbnRpZmllcihfaWRlbnRpZmllcik7XG5cbiAgICAgIGlmIChzdHlsZXNJbkRPTVtfaW5kZXhdLnJlZmVyZW5jZXMgPT09IDApIHtcbiAgICAgICAgc3R5bGVzSW5ET01bX2luZGV4XS51cGRhdGVyKCk7XG5cbiAgICAgICAgc3R5bGVzSW5ET00uc3BsaWNlKF9pbmRleCwgMSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgbGFzdElkZW50aWZpZXJzID0gbmV3TGFzdElkZW50aWZpZXJzO1xuICB9O1xufTsiLCJcInVzZSBzdHJpY3RcIjtcblxudmFyIG1lbW8gPSB7fTtcbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICAqL1xuXG5mdW5jdGlvbiBnZXRUYXJnZXQodGFyZ2V0KSB7XG4gIGlmICh0eXBlb2YgbWVtb1t0YXJnZXRdID09PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgdmFyIHN0eWxlVGFyZ2V0ID0gZG9jdW1lbnQucXVlcnlTZWxlY3Rvcih0YXJnZXQpOyAvLyBTcGVjaWFsIGNhc2UgdG8gcmV0dXJuIGhlYWQgb2YgaWZyYW1lIGluc3RlYWQgb2YgaWZyYW1lIGl0c2VsZlxuXG4gICAgaWYgKHdpbmRvdy5IVE1MSUZyYW1lRWxlbWVudCAmJiBzdHlsZVRhcmdldCBpbnN0YW5jZW9mIHdpbmRvdy5IVE1MSUZyYW1lRWxlbWVudCkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgLy8gVGhpcyB3aWxsIHRocm93IGFuIGV4Y2VwdGlvbiBpZiBhY2Nlc3MgdG8gaWZyYW1lIGlzIGJsb2NrZWRcbiAgICAgICAgLy8gZHVlIHRvIGNyb3NzLW9yaWdpbiByZXN0cmljdGlvbnNcbiAgICAgICAgc3R5bGVUYXJnZXQgPSBzdHlsZVRhcmdldC5jb250ZW50RG9jdW1lbnQuaGVhZDtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgLy8gaXN0YW5idWwgaWdub3JlIG5leHRcbiAgICAgICAgc3R5bGVUYXJnZXQgPSBudWxsO1xuICAgICAgfVxuICAgIH1cblxuICAgIG1lbW9bdGFyZ2V0XSA9IHN0eWxlVGFyZ2V0O1xuICB9XG5cbiAgcmV0dXJuIG1lbW9bdGFyZ2V0XTtcbn1cbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICAqL1xuXG5cbmZ1bmN0aW9uIGluc2VydEJ5U2VsZWN0b3IoaW5zZXJ0LCBzdHlsZSkge1xuICB2YXIgdGFyZ2V0ID0gZ2V0VGFyZ2V0KGluc2VydCk7XG5cbiAgaWYgKCF0YXJnZXQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJDb3VsZG4ndCBmaW5kIGEgc3R5bGUgdGFyZ2V0LiBUaGlzIHByb2JhYmx5IG1lYW5zIHRoYXQgdGhlIHZhbHVlIGZvciB0aGUgJ2luc2VydCcgcGFyYW1ldGVyIGlzIGludmFsaWQuXCIpO1xuICB9XG5cbiAgdGFyZ2V0LmFwcGVuZENoaWxkKHN0eWxlKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpbnNlcnRCeVNlbGVjdG9yOyIsIlwidXNlIHN0cmljdFwiO1xuXG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAgKi9cbmZ1bmN0aW9uIGluc2VydFN0eWxlRWxlbWVudChvcHRpb25zKSB7XG4gIHZhciBlbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcInN0eWxlXCIpO1xuICBvcHRpb25zLnNldEF0dHJpYnV0ZXMoZWxlbWVudCwgb3B0aW9ucy5hdHRyaWJ1dGVzKTtcbiAgb3B0aW9ucy5pbnNlcnQoZWxlbWVudCwgb3B0aW9ucy5vcHRpb25zKTtcbiAgcmV0dXJuIGVsZW1lbnQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaW5zZXJ0U3R5bGVFbGVtZW50OyIsIlwidXNlIHN0cmljdFwiO1xuXG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAgKi9cbmZ1bmN0aW9uIHNldEF0dHJpYnV0ZXNXaXRob3V0QXR0cmlidXRlcyhzdHlsZUVsZW1lbnQpIHtcbiAgdmFyIG5vbmNlID0gdHlwZW9mIF9fd2VicGFja19ub25jZV9fICE9PSBcInVuZGVmaW5lZFwiID8gX193ZWJwYWNrX25vbmNlX18gOiBudWxsO1xuXG4gIGlmIChub25jZSkge1xuICAgIHN0eWxlRWxlbWVudC5zZXRBdHRyaWJ1dGUoXCJub25jZVwiLCBub25jZSk7XG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBzZXRBdHRyaWJ1dGVzV2l0aG91dEF0dHJpYnV0ZXM7IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICAqL1xuZnVuY3Rpb24gYXBwbHkoc3R5bGVFbGVtZW50LCBvcHRpb25zLCBvYmopIHtcbiAgdmFyIGNzcyA9IFwiXCI7XG5cbiAgaWYgKG9iai5zdXBwb3J0cykge1xuICAgIGNzcyArPSBcIkBzdXBwb3J0cyAoXCIuY29uY2F0KG9iai5zdXBwb3J0cywgXCIpIHtcIik7XG4gIH1cblxuICBpZiAob2JqLm1lZGlhKSB7XG4gICAgY3NzICs9IFwiQG1lZGlhIFwiLmNvbmNhdChvYmoubWVkaWEsIFwiIHtcIik7XG4gIH1cblxuICB2YXIgbmVlZExheWVyID0gdHlwZW9mIG9iai5sYXllciAhPT0gXCJ1bmRlZmluZWRcIjtcblxuICBpZiAobmVlZExheWVyKSB7XG4gICAgY3NzICs9IFwiQGxheWVyXCIuY29uY2F0KG9iai5sYXllci5sZW5ndGggPiAwID8gXCIgXCIuY29uY2F0KG9iai5sYXllcikgOiBcIlwiLCBcIiB7XCIpO1xuICB9XG5cbiAgY3NzICs9IG9iai5jc3M7XG5cbiAgaWYgKG5lZWRMYXllcikge1xuICAgIGNzcyArPSBcIn1cIjtcbiAgfVxuXG4gIGlmIChvYmoubWVkaWEpIHtcbiAgICBjc3MgKz0gXCJ9XCI7XG4gIH1cblxuICBpZiAob2JqLnN1cHBvcnRzKSB7XG4gICAgY3NzICs9IFwifVwiO1xuICB9XG5cbiAgdmFyIHNvdXJjZU1hcCA9IG9iai5zb3VyY2VNYXA7XG5cbiAgaWYgKHNvdXJjZU1hcCAmJiB0eXBlb2YgYnRvYSAhPT0gXCJ1bmRlZmluZWRcIikge1xuICAgIGNzcyArPSBcIlxcbi8qIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsXCIuY29uY2F0KGJ0b2EodW5lc2NhcGUoZW5jb2RlVVJJQ29tcG9uZW50KEpTT04uc3RyaW5naWZ5KHNvdXJjZU1hcCkpKSksIFwiICovXCIpO1xuICB9IC8vIEZvciBvbGQgSUVcblxuICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgICovXG5cblxuICBvcHRpb25zLnN0eWxlVGFnVHJhbnNmb3JtKGNzcywgc3R5bGVFbGVtZW50LCBvcHRpb25zLm9wdGlvbnMpO1xufVxuXG5mdW5jdGlvbiByZW1vdmVTdHlsZUVsZW1lbnQoc3R5bGVFbGVtZW50KSB7XG4gIC8vIGlzdGFuYnVsIGlnbm9yZSBpZlxuICBpZiAoc3R5bGVFbGVtZW50LnBhcmVudE5vZGUgPT09IG51bGwpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBzdHlsZUVsZW1lbnQucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChzdHlsZUVsZW1lbnQpO1xufVxuLyogaXN0YW5idWwgaWdub3JlIG5leHQgICovXG5cblxuZnVuY3Rpb24gZG9tQVBJKG9wdGlvbnMpIHtcbiAgdmFyIHN0eWxlRWxlbWVudCA9IG9wdGlvbnMuaW5zZXJ0U3R5bGVFbGVtZW50KG9wdGlvbnMpO1xuICByZXR1cm4ge1xuICAgIHVwZGF0ZTogZnVuY3Rpb24gdXBkYXRlKG9iaikge1xuICAgICAgYXBwbHkoc3R5bGVFbGVtZW50LCBvcHRpb25zLCBvYmopO1xuICAgIH0sXG4gICAgcmVtb3ZlOiBmdW5jdGlvbiByZW1vdmUoKSB7XG4gICAgICByZW1vdmVTdHlsZUVsZW1lbnQoc3R5bGVFbGVtZW50KTtcbiAgICB9XG4gIH07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZG9tQVBJOyIsIlwidXNlIHN0cmljdFwiO1xuXG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAgKi9cbmZ1bmN0aW9uIHN0eWxlVGFnVHJhbnNmb3JtKGNzcywgc3R5bGVFbGVtZW50KSB7XG4gIGlmIChzdHlsZUVsZW1lbnQuc3R5bGVTaGVldCkge1xuICAgIHN0eWxlRWxlbWVudC5zdHlsZVNoZWV0LmNzc1RleHQgPSBjc3M7XG4gIH0gZWxzZSB7XG4gICAgd2hpbGUgKHN0eWxlRWxlbWVudC5maXJzdENoaWxkKSB7XG4gICAgICBzdHlsZUVsZW1lbnQucmVtb3ZlQ2hpbGQoc3R5bGVFbGVtZW50LmZpcnN0Q2hpbGQpO1xuICAgIH1cblxuICAgIHN0eWxlRWxlbWVudC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShjc3MpKTtcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHN0eWxlVGFnVHJhbnNmb3JtOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZGVmaW5lUHJvcGVydHlcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9vYmplY3RXaXRob3V0UHJvcGVydGllc1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL3NsaWNlZFRvQXJyYXlcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy90b0NvbnN1bWFibGVBcnJheVwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAaW1wZXJpdW0vYXV0aC1jbGllbnRcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQGltcGVyaXVtL3N0YXRlXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkByZWR1eGpzL3Rvb2xraXRcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQHRoeC9jb250cm9sc1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJkZWJ1Z1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJsb2Rhc2hcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwibG9kYXNoL2NvbXBhY3RcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwibG9kYXNoL2Zsb3dSaWdodFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJsb2Rhc2gvZnBcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwibG9kYXNoL2dyb3VwQnlcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwibG9kYXNoL21lbW9pemVcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwibG9kYXNoL21lcmdlXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcImxvZGFzaC9zb3J0QnlcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwibWluZ29cIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicXVlcnlzdHJpbmdcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicmVhY3RcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicmVhY3QtcmVkdXhcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicmVhY3QtcmVzcG9uc2l2ZVwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJyZWFjdC1yb3V0ZXJcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicmVhY3Qtcm91dGVyLWRvbVwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJyZWFjdC9qc3gtZGV2LXJ1bnRpbWVcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwic2VtYW50aWMtdWktcmVhY3RcIik7IiwiLy8gVGhlIG1vZHVsZSBjYWNoZVxudmFyIF9fd2VicGFja19tb2R1bGVfY2FjaGVfXyA9IHt9O1xuXG4vLyBUaGUgcmVxdWlyZSBmdW5jdGlvblxuZnVuY3Rpb24gX193ZWJwYWNrX3JlcXVpcmVfXyhtb2R1bGVJZCkge1xuXHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcblx0dmFyIGNhY2hlZE1vZHVsZSA9IF9fd2VicGFja19tb2R1bGVfY2FjaGVfX1ttb2R1bGVJZF07XG5cdGlmIChjYWNoZWRNb2R1bGUgIT09IHVuZGVmaW5lZCkge1xuXHRcdHJldHVybiBjYWNoZWRNb2R1bGUuZXhwb3J0cztcblx0fVxuXHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuXHR2YXIgbW9kdWxlID0gX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fW21vZHVsZUlkXSA9IHtcblx0XHRpZDogbW9kdWxlSWQsXG5cdFx0Ly8gbm8gbW9kdWxlLmxvYWRlZCBuZWVkZWRcblx0XHRleHBvcnRzOiB7fVxuXHR9O1xuXG5cdC8vIEV4ZWN1dGUgdGhlIG1vZHVsZSBmdW5jdGlvblxuXHRfX3dlYnBhY2tfbW9kdWxlc19fW21vZHVsZUlkXShtb2R1bGUsIG1vZHVsZS5leHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKTtcblxuXHQvLyBSZXR1cm4gdGhlIGV4cG9ydHMgb2YgdGhlIG1vZHVsZVxuXHRyZXR1cm4gbW9kdWxlLmV4cG9ydHM7XG59XG5cbiIsIi8vIGdldERlZmF1bHRFeHBvcnQgZnVuY3Rpb24gZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBub24taGFybW9ueSBtb2R1bGVzXG5fX3dlYnBhY2tfcmVxdWlyZV9fLm4gPSAobW9kdWxlKSA9PiB7XG5cdHZhciBnZXR0ZXIgPSBtb2R1bGUgJiYgbW9kdWxlLl9fZXNNb2R1bGUgP1xuXHRcdCgpID0+IChtb2R1bGVbJ2RlZmF1bHQnXSkgOlxuXHRcdCgpID0+IChtb2R1bGUpO1xuXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQoZ2V0dGVyLCB7IGE6IGdldHRlciB9KTtcblx0cmV0dXJuIGdldHRlcjtcbn07IiwiLy8gZGVmaW5lIGdldHRlciBmdW5jdGlvbnMgZm9yIGhhcm1vbnkgZXhwb3J0c1xuX193ZWJwYWNrX3JlcXVpcmVfXy5kID0gKGV4cG9ydHMsIGRlZmluaXRpb24pID0+IHtcblx0Zm9yKHZhciBrZXkgaW4gZGVmaW5pdGlvbikge1xuXHRcdGlmKF9fd2VicGFja19yZXF1aXJlX18ubyhkZWZpbml0aW9uLCBrZXkpICYmICFfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZXhwb3J0cywga2V5KSkge1xuXHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIGtleSwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGRlZmluaXRpb25ba2V5XSB9KTtcblx0XHR9XG5cdH1cbn07IiwiX193ZWJwYWNrX3JlcXVpcmVfXy5vID0gKG9iaiwgcHJvcCkgPT4gKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIHByb3ApKSIsIi8vIGRlZmluZSBfX2VzTW9kdWxlIG9uIGV4cG9ydHNcbl9fd2VicGFja19yZXF1aXJlX18uciA9IChleHBvcnRzKSA9PiB7XG5cdGlmKHR5cGVvZiBTeW1ib2wgIT09ICd1bmRlZmluZWQnICYmIFN5bWJvbC50b1N0cmluZ1RhZykge1xuXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBTeW1ib2wudG9TdHJpbmdUYWcsIHsgdmFsdWU6ICdNb2R1bGUnIH0pO1xuXHR9XG5cdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG59OyIsImltcG9ydCB0eXBlIHtJbXBlcml1bVN0YXRlQ2xpZW50TW9kdWxlfSBmcm9tICdAaW1wZXJpdW0vc3RhdGUnO1xuaW1wb3J0IHt1c2VNb2JpbGVMYXlvdXR9IGZyb20gJy4vbGF5b3V0L2hvb2tzL3VzZU1vYmlsZUxheW91dCc7XG5pbXBvcnQge3dpdGhMYXlvdXR9IGZyb20gJy4vbGF5b3V0L3dpdGhMYXlvdXQnO1xuaW1wb3J0IHtzdGF0ZX0gZnJvbSAnLi9zdGF0ZSc7XG5pbXBvcnQgdHlwZSB7SW1wZXJpdW1MYXlvdXRDbGllbnRNb2R1bGV9IGZyb20gJy4vdHlwZXMnO1xuXG5leHBvcnQgZnVuY3Rpb24gbGF5b3V0Q2xpZW50TW9kdWxlKCk6IEltcGVyaXVtU3RhdGVDbGllbnRNb2R1bGUgJiBJbXBlcml1bUxheW91dENsaWVudE1vZHVsZSB7XG5cdHJldHVybiB7XG5cdFx0bmFtZTogJ0BpbXBlcml1bS9sYXlvdXQnLFxuXHRcdG9yZGVyOiAzMCxcblx0XHRob2NzOiBbd2l0aExheW91dF0sXG5cdFx0c3RhdGUsXG5cdFx0bGF5b3V0OiB7XG5cdFx0XHRkYXRhSG9va3M6IFt1c2VNb2JpbGVMYXlvdXRdLFxuXHRcdH0sXG5cdH07XG59XG5cbmV4cG9ydCB0eXBlIHtMYXlvdXREYXRhfSBmcm9tICcuL2xheW91dC90eXBlcyc7XG5leHBvcnQge3VzZUxheW91dFN0YXRlLCBhY3Rpb25zIGFzIGxheW91dEFjdGlvbnN9IGZyb20gJy4vc3RhdGUnO1xuZXhwb3J0IHtjcmVhdGVQYWdlc30gZnJvbSAnLi9jb250ZW50L2NyZWF0ZVBhZ2VzJztcbmV4cG9ydCB0eXBlIHtJbXBlcml1bUxheW91dENsaWVudE1vZHVsZX0gZnJvbSAnLi90eXBlcyc7XG5leHBvcnQge2RpdmlkZXJTaWRlYmFySXRlbX0gZnJvbSAnLi9jb250ZW50L2RpdmlkZXJTaWRlYmFySXRlbSc7XG4iXSwibmFtZXMiOlsiaXNIb3Jpem9udGFsUG9zaXRpb25lZEl0ZW0iLCJ2YWx1ZSIsInBvc2l0aW9uIiwic3RpY2tPbk1vYmlsZSIsImlzUm91dGVJdGVtIiwidG8iLCJleGFjdCIsInN0cmljdCIsInNlbnNpdGl2ZSIsInVzZVRGb3JtIiwiZGVidWciLCJCdXR0b24iLCJGb3JtIiwiSWNvbiIsIk1lc3NhZ2UiLCJQb3B1cCIsImQiLCJBY3Rpb25Gb3JtIiwiaXRlbSIsImRhdGEiLCJvbkhpZGVGb3JtIiwiaW5pdGlhbFZhbHVlcyIsIm9uU3VibWl0Iiwic3VibWl0VmFsdWVzIiwiZW5hYmxlUmVpbml0aWFsaXplIiwidmFsaWRhdGlvblNjaGVtYSIsImhhc0Vycm9ycyIsImhhc1dhcm5pbmdzIiwiaGFuZGxlU3VibWl0IiwiaGFuZGxlQ2hhbmdlIiwidmFsdWVzIiwicmVzZXRGb3JtIiwiZXJyb3JzIiwiZmllbGRFcnJvciIsInNhdmVCdXR0b24iLCJPYmplY3QiLCJmb3JtIiwidXNlU3RhdGUiLCJnZXRDb2xvciIsImdldEljb24iLCJnZXRUZXh0IiwiQWN0aW9uRm9ybVNpZGViYXJJdGVtQ29tcG9uZW50IiwiaXNFZGl0Iiwic2V0SXNFZGl0IiwiaWNvbiIsInVuZGVmaW5lZCIsIkFjdGlvblNpZGViYXJJdGVtQ29tcG9uZW50Iiwib25DbGljayIsImlzRXF1YWwiLCJ1c2VFZmZlY3QiLCJ1c2VSZWYiLCJ1c2VEaXNwYXRjaCIsIkRhdGFIb29rcyIsImFjdGlvbnMiLCJzb3J0V2VpZ2h0ZWRJdGVtcyIsInVzZUJ1aWxkQ29udGVudERhdGEiLCJIZWFkZXIiLCJTaWRlYmFySXRlbVdyYXBwZXIiLCJzdHlsZXMiLCJ1c2VEZWVwQ29tcGFyZU1lbW9pemUiLCJyZWYiLCJjdXJyZW50IiwidXNlRGVlcENvbXBhcmVFZmZlY3QiLCJjYWxsYmFjayIsImRlcHMiLCJtYXAiLCJDb250ZW50Q29tcG9uZW50IiwicGFnZSIsInBhcmFtcyIsImRpc3BhdGNoIiwic3RhdGVTZWxlY3Rvckhvb2siLCJwZXJtaXNzaW9uU2VsZWN0b3JIb29rIiwic2V0UGFyYW1zIiwiY29udGVudCIsInNpZGViYXJJdGVtcyIsInNpZGViYXIiLCJsZW5ndGgiLCJhY3Rpb25zSGVhZGVyIiwic2IiLCJpbmRleCIsInNpZGViYXJJdGVtIiwicGFyZW50Iiwid3JhcHBlciIsImhlYWRlciIsImZ1bGwiLCJjb250ZW50RnVsbCIsImRhdGFIb29rcyIsIkN1c3RvbVNpZGViYXJJdGVtQ29tcG9uZW50IiwicmVuZGVyIiwiaGVhZGVySW5mbyIsInRpdGxlIiwiTGluayIsImdldFJvdXRlVG8iLCJQbGFpblNpZGViYXJJdGVtIiwiUXVlcnkiLCJEaXZpZGVyIiwiaXNBY3Rpb25Gb3JtU2lkZWJhckl0ZW0iLCJpc0FjdGlvblNpZGViYXJJdGVtIiwiaXNDdXN0b21TaWRlYmFySXRlbSIsImlzRGl2aWRlclNpZGViYXJJdGVtIiwicGFyZW50RGF0YSIsInZpc2libGUiLCJxIiwidGVzdCIsImlzUGFnZSIsImNyZWF0ZVBhZ2VzIiwicm91dGVzIiwicGFnZXMiLCJyZW5kZXJSb3V0ZVByb3BzT2JqIiwia2V5cyIsInR5cGVzIiwicmVkdWNlIiwibWVtbyIsImtleSIsInBnIiwicmVuZGVyUm91dGVQcm9wcyIsImRpdmlkZXJTaWRlYmFySXRlbSIsInRleHQiLCJkaXZpZGVyIiwidXNlQnVpbGREYXRhIiwicm91dGVJdGVtIiwiYnVpbGREYXRhIiwiaWNvbk5hbWUiLCJjb2xvciIsImNvbXBvc2UiLCJGcmFnbWVudCIsInVzZUxvY2F0aW9uIiwiRXhlY3V0ZURhdGFIb29rIiwicGF0aG5hbWUiLCJob29rIiwiZm4iLCJBcnJheSIsImlzQXJyYXkiLCJyb3V0ZU1hdGNoIiwicm91dGVQYXJhbXMiLCJkYXRhSG9vayIsImRoIiwiaW5kZXgyIiwiRXhlY3V0ZVBlcm1pc3Npb25Ib29rIiwicGVybWlzc2lvbkhvb2siLCJwZXJtcyIsImZvckVhY2giLCJwZXJtaXNzaW9uIiwic2V0UGVybWlzc2lvbiIsInJlc3VsdCIsIlBlcm1pc3Npb25Ib29rcyIsInBlcm1pc3Npb25Ib29rcyIsInVzZUF1dGgiLCJjb21wYWN0IiwibWVyZ2UiLCJxdWVyeVN0cmluZyIsInVzZUxheW91dFN0YXRlIiwidXNlSXNBY3RpdmVSb3V0ZSIsInVzZVNlbGVjdFBlcm1pc3Npb24iLCJ1c2VTZWxlY3RTdGF0ZSIsImlkIiwicGVybWlzc2lvbnMiLCJzdGF0ZSIsImxvYyIsInJvdXRlIiwicGF0aCIsInNwbGl0IiwiaGFzaCIsInNlYXJjaCIsInBhcnNlIiwiYWN0aXZlIiwicGVybWlzc2lvbnNYIiwibmV3RGF0YSIsInVzZVJvdXRlTWF0Y2giLCJyb3V0ZU1hdGNoT2JqZWN0IiwiZmxvd1JpZ2h0IiwiZmluYWxTZWxlY3Rvckhvb2siLCJDdXN0b21MYXlvdXRJdGVtQ29tcG9uZW50IiwiQWNjb3JkaW9uIiwiRHJvcGRvd24iLCJNZW51IiwiRHJvcGRvd25JdGVtIiwidmVydGljYWwiLCJjaGlsZHJlbiIsIm9wZW4iLCJzZXRPcGVuIiwidmVydGljYWxEcm9wZG93blRpdGxlIiwiZXYiLCJzdG9wUHJvcGFnYXRpb24iLCJ2ZXJ0aWNhbERyb3Bkb3duSWNvblJvdGF0ZWQiLCJ2ZXJ0aWNhbERyb3Bkb3duSWNvbiIsInZlcnRpY2FsRHJvcGRvd25Db250ZW50IiwiU2VnbWVudCIsIm1vdmVJdGVtcyIsIkxheW91dEl0ZW1CYXIiLCJTZWNvbmRhcnlNZW51VG9nZ2xlSXRlbSIsIkxheW91dCIsImZvb3RlciIsInByaW1hcnlNZW51Iiwic3RhdHVzYmFyIiwic2Vjb25kYXJ5TWVudSIsImlzTW9iaWxlIiwibWVudU9wZW4iLCJzZXRNZW51T3BlbiIsInByaW1hcnlNZW51VG9nZ2xlIiwid2VpZ2h0IiwicHJpbWFyeU1lbnVJdGVtcyIsImZpbHRlciIsInYiLCJzZWNvbmRhcnlNZW51SXRlbXMiLCJtZW51Iiwic2Vjb25kYXJ5TWVudUNvbXAiLCJzZWNvbmRhcnlNZW51SGlkZGVuIiwiZm9vdGVySXRlbXMiLCJmb290ZXJDb21wIiwic3RhdHVzYmFySXRlbXMiLCJzdGF0dXNiYXJDb21wIiwibWVudWJhciIsImNvbnRlbnRXcmFwcGVyIiwic3BsaXRQb3NpdGlvbmVkSXRlbXMiLCJMYXlvdXRJdGVtV3JhcHBlciIsIml0ZW1zIiwicmVzdCIsImltcyIsImxlZnRJdGVtcyIsInJpZ2h0SXRlbXMiLCJpc0N1c3RvbUxheW91dEl0ZW0iLCJpc0Ryb3Bkb3duTGF5b3V0SXRlbSIsImlzTWVudUxheW91dEl0ZW0iLCJNZW51SXRlbSIsIlBsYWluSXRlbSIsImFzIiwiZHJvcGRvd24iLCJJdGVtIiwibGlua1BhcmFtZXRlcnMiLCJsaW5rUGFyYW1zIiwiSXRlbVgiLCJpY29uUm90YXRlZCIsInVzZU1lZGlhUXVlcnkiLCJ1c2VNb2JpbGVMYXlvdXQiLCJpc01vYmlsZVgiLCJxdWVyeSIsInNldE1vYmlsZSIsImdyb3VwQnkiLCJwdWxsSXRlbXMiLCJwdWxsZWQiLCJtb3ZlVG9LZXkiLCJwdXNoIiwiYWRkSXRlbXMiLCJuZXdJdGVtcyIsIml0ZW1zTWludXNQdWxsZWQiLCJpc0ltcGVyaXVtTGF5b3V0Q2xpZW50TW9kdWxlIiwiaW5pdGlhbExheW91dE1vZHVsZURhdGEiLCJwZXJtaXNzaW9uU2VsZWN0b3JIb29rcyIsIndpdGhMYXlvdXQiLCJjbGllbnQiLCJsYXlvdXRNb2R1bGVEYXRhIiwibW9kdWxlcyIsIm1vZHVsZSIsImxheW91dCIsImxheW91dEhvYyIsIldyYXBwZWQiLCJkaXNwbGF5TmFtZSIsIm5hbWUiLCJXaXRoTGF5b3V0IiwicHJvcHMiLCJjcmVhdGVTbGljZUhvb2siLCJjcmVhdGVTbGljZSIsImluaXRpYWxTdGF0ZSIsInJlZHVjZXJzIiwic3QiLCJhY3Rpb24iLCJwYXlsb2FkIiwibGF5b3V0TW9kdWxlIiwibWVtb2l6ZSIsInNvcnRCeSIsInNvcnRXZWlnaHRlZEl0ZW1zSW1wbCIsImxheW91dENsaWVudE1vZHVsZSIsIm9yZGVyIiwiaG9jcyIsImxheW91dEFjdGlvbnMiXSwic291cmNlUm9vdCI6IiJ9