@openmrs/esm-app-shell 4.3.2-pre.678 → 4.3.2-pre.681

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 (236) hide show
  1. package/.turbo/turbo-build.log +106 -101
  2. package/dist/8f8d23f5e4ad92b8.js +1 -0
  3. package/dist/{84759747c5ec9b83.js.map → 8f8d23f5e4ad92b8.js.map} +1 -1
  4. package/dist/index.html +1 -1
  5. package/dist/{openmrs.4d216ca793e8e302.js → openmrs.7f67a01dda216963.js} +2 -2
  6. package/dist/{openmrs.4d216ca793e8e302.js.map → openmrs.7f67a01dda216963.js.map} +1 -1
  7. package/dist/service-worker.js +1 -1
  8. package/lib/esm-devtools-app/68.js +1 -0
  9. package/lib/esm-devtools-app/68.js.map +1 -0
  10. package/lib/esm-devtools-app/735.js +2 -0
  11. package/lib/esm-devtools-app/735.js.LICENSE.txt +9 -0
  12. package/lib/esm-devtools-app/735.js.map +1 -0
  13. package/lib/esm-devtools-app/889.js +2 -0
  14. package/lib/esm-devtools-app/889.js.LICENSE.txt +3 -0
  15. package/lib/esm-devtools-app/889.js.map +1 -0
  16. package/lib/esm-devtools-app/988.js +1 -0
  17. package/lib/esm-devtools-app/988.js.map +1 -0
  18. package/lib/esm-devtools-app/main.js +1 -0
  19. package/lib/esm-devtools-app/main.js.map +1 -0
  20. package/lib/esm-devtools-app/openmrs-esm-devtools-app.js +1 -0
  21. package/lib/esm-devtools-app/openmrs-esm-devtools-app.js.buildmanifest.json +176 -0
  22. package/lib/esm-devtools-app/openmrs-esm-devtools-app.js.map +1 -0
  23. package/lib/esm-devtools-app/openmrs-esm-devtools-app.old +1 -0
  24. package/lib/esm-implementer-tools-app/102.js +1 -0
  25. package/lib/esm-implementer-tools-app/102.js.map +1 -0
  26. package/lib/esm-implementer-tools-app/139.js +2 -0
  27. package/lib/esm-implementer-tools-app/139.js.LICENSE.txt +9 -0
  28. package/lib/esm-implementer-tools-app/139.js.map +1 -0
  29. package/lib/esm-implementer-tools-app/242.js +1 -0
  30. package/lib/esm-implementer-tools-app/242.js.map +1 -0
  31. package/lib/esm-implementer-tools-app/246.js +1 -0
  32. package/lib/esm-implementer-tools-app/246.js.map +1 -0
  33. package/lib/esm-implementer-tools-app/305.js +1 -0
  34. package/lib/esm-implementer-tools-app/305.js.map +1 -0
  35. package/lib/esm-implementer-tools-app/319.js +1 -0
  36. package/lib/esm-implementer-tools-app/369.js +1 -0
  37. package/lib/esm-implementer-tools-app/369.js.map +1 -0
  38. package/lib/esm-implementer-tools-app/426.js +1 -0
  39. package/lib/esm-implementer-tools-app/426.js.map +1 -0
  40. package/lib/esm-implementer-tools-app/466.js +1 -0
  41. package/lib/esm-implementer-tools-app/466.js.map +1 -0
  42. package/lib/esm-implementer-tools-app/574.js +1 -0
  43. package/lib/esm-implementer-tools-app/587.js +1 -0
  44. package/lib/esm-implementer-tools-app/587.js.map +1 -0
  45. package/lib/esm-implementer-tools-app/600.js +2 -0
  46. package/lib/esm-implementer-tools-app/600.js.LICENSE.txt +14 -0
  47. package/lib/esm-implementer-tools-app/600.js.map +1 -0
  48. package/lib/esm-implementer-tools-app/620.js +2 -0
  49. package/lib/esm-implementer-tools-app/620.js.LICENSE.txt +38 -0
  50. package/lib/esm-implementer-tools-app/620.js.map +1 -0
  51. package/lib/esm-implementer-tools-app/696.js +1 -0
  52. package/lib/esm-implementer-tools-app/696.js.map +1 -0
  53. package/lib/esm-implementer-tools-app/735.js +2 -0
  54. package/lib/esm-implementer-tools-app/735.js.LICENSE.txt +9 -0
  55. package/lib/esm-implementer-tools-app/735.js.map +1 -0
  56. package/lib/esm-implementer-tools-app/788.js +2 -0
  57. package/lib/esm-implementer-tools-app/788.js.LICENSE.txt +19 -0
  58. package/lib/esm-implementer-tools-app/788.js.map +1 -0
  59. package/lib/esm-implementer-tools-app/807.js +1 -0
  60. package/lib/esm-implementer-tools-app/807.js.map +1 -0
  61. package/lib/esm-implementer-tools-app/889.js +2 -0
  62. package/lib/esm-implementer-tools-app/889.js.LICENSE.txt +3 -0
  63. package/lib/esm-implementer-tools-app/889.js.map +1 -0
  64. package/lib/esm-implementer-tools-app/895.js +1 -0
  65. package/lib/esm-implementer-tools-app/895.js.map +1 -0
  66. package/lib/esm-implementer-tools-app/main.js +1 -0
  67. package/lib/esm-implementer-tools-app/main.js.map +1 -0
  68. package/lib/esm-implementer-tools-app/openmrs-esm-implementer-tools-app.js +1 -0
  69. package/lib/esm-implementer-tools-app/openmrs-esm-implementer-tools-app.js.buildmanifest.json +597 -0
  70. package/lib/esm-implementer-tools-app/openmrs-esm-implementer-tools-app.js.map +1 -0
  71. package/lib/esm-implementer-tools-app/openmrs-esm-implementer-tools-app.old +1 -0
  72. package/lib/esm-login-app/236.js +1 -0
  73. package/lib/esm-login-app/240.js +1 -0
  74. package/lib/esm-login-app/261.js +1 -0
  75. package/lib/esm-login-app/261.js.map +1 -0
  76. package/lib/esm-login-app/263.js +1 -0
  77. package/lib/esm-login-app/263.js.map +1 -0
  78. package/lib/esm-login-app/272.js +1 -0
  79. package/lib/esm-login-app/319.js +1 -0
  80. package/lib/esm-login-app/336.js +1 -0
  81. package/lib/esm-login-app/337.js +1 -0
  82. package/lib/esm-login-app/337.js.map +1 -0
  83. package/lib/esm-login-app/390.js +1 -0
  84. package/lib/esm-login-app/390.js.map +1 -0
  85. package/lib/esm-login-app/438.js +2 -0
  86. package/lib/esm-login-app/438.js.LICENSE.txt +9 -0
  87. package/lib/esm-login-app/438.js.map +1 -0
  88. package/lib/esm-login-app/539.js +1 -0
  89. package/lib/esm-login-app/574.js +1 -0
  90. package/lib/esm-login-app/610.js +1 -0
  91. package/lib/esm-login-app/610.js.map +1 -0
  92. package/lib/esm-login-app/611.js +1 -0
  93. package/lib/esm-login-app/611.js.map +1 -0
  94. package/lib/esm-login-app/63.js +2 -0
  95. package/lib/esm-login-app/63.js.LICENSE.txt +32 -0
  96. package/lib/esm-login-app/63.js.map +1 -0
  97. package/lib/esm-login-app/642.js +1 -0
  98. package/lib/esm-login-app/642.js.map +1 -0
  99. package/lib/esm-login-app/644.js +1 -0
  100. package/lib/esm-login-app/673.js +1 -0
  101. package/lib/esm-login-app/735.js +2 -0
  102. package/lib/esm-login-app/735.js.LICENSE.txt +9 -0
  103. package/lib/esm-login-app/735.js.map +1 -0
  104. package/lib/esm-login-app/737.js +2 -0
  105. package/lib/esm-login-app/737.js.LICENSE.txt +5 -0
  106. package/lib/esm-login-app/737.js.map +1 -0
  107. package/lib/esm-login-app/757.js +1 -0
  108. package/lib/esm-login-app/788.js +2 -0
  109. package/lib/esm-login-app/788.js.LICENSE.txt +19 -0
  110. package/lib/esm-login-app/788.js.map +1 -0
  111. package/lib/esm-login-app/829.js +1 -0
  112. package/lib/esm-login-app/829.js.map +1 -0
  113. package/lib/esm-login-app/889.js +2 -0
  114. package/lib/esm-login-app/889.js.LICENSE.txt +3 -0
  115. package/lib/esm-login-app/889.js.map +1 -0
  116. package/lib/esm-login-app/main.js +1 -0
  117. package/lib/esm-login-app/main.js.map +1 -0
  118. package/lib/esm-login-app/openmrs-esm-login-app.js +1 -0
  119. package/lib/esm-login-app/openmrs-esm-login-app.js.buildmanifest.json +680 -0
  120. package/lib/esm-login-app/openmrs-esm-login-app.js.map +1 -0
  121. package/lib/esm-login-app/openmrs-esm-login-app.old +1 -0
  122. package/lib/esm-offline-tools-app/1584c81d564cacde.svg +8 -0
  123. package/lib/esm-offline-tools-app/206.js +1 -0
  124. package/lib/esm-offline-tools-app/206.js.map +1 -0
  125. package/lib/esm-offline-tools-app/263.js +1 -0
  126. package/lib/esm-offline-tools-app/263.js.map +1 -0
  127. package/lib/esm-offline-tools-app/264.js +1 -0
  128. package/lib/esm-offline-tools-app/264.js.map +1 -0
  129. package/lib/esm-offline-tools-app/281.js +1 -0
  130. package/lib/esm-offline-tools-app/281.js.map +1 -0
  131. package/lib/esm-offline-tools-app/290.js +1 -0
  132. package/lib/esm-offline-tools-app/290.js.map +1 -0
  133. package/lib/esm-offline-tools-app/316.js +1 -0
  134. package/lib/esm-offline-tools-app/316.js.map +1 -0
  135. package/lib/esm-offline-tools-app/391.js +1 -0
  136. package/lib/esm-offline-tools-app/391.js.map +1 -0
  137. package/lib/esm-offline-tools-app/412.js +1 -0
  138. package/lib/esm-offline-tools-app/412.js.map +1 -0
  139. package/lib/esm-offline-tools-app/47.js +1 -0
  140. package/lib/esm-offline-tools-app/47.js.map +1 -0
  141. package/lib/esm-offline-tools-app/501.js +1 -0
  142. package/lib/esm-offline-tools-app/501.js.map +1 -0
  143. package/lib/esm-offline-tools-app/526.js +1 -0
  144. package/lib/esm-offline-tools-app/526.js.map +1 -0
  145. package/lib/esm-offline-tools-app/538.js +1 -0
  146. package/lib/esm-offline-tools-app/538.js.map +1 -0
  147. package/lib/esm-offline-tools-app/541.js +1 -0
  148. package/lib/esm-offline-tools-app/541.js.map +1 -0
  149. package/lib/esm-offline-tools-app/574.js +1 -0
  150. package/lib/esm-offline-tools-app/594.js +1 -0
  151. package/lib/esm-offline-tools-app/594.js.map +1 -0
  152. package/lib/esm-offline-tools-app/63.js +2 -0
  153. package/lib/esm-offline-tools-app/63.js.LICENSE.txt +32 -0
  154. package/lib/esm-offline-tools-app/63.js.map +1 -0
  155. package/lib/esm-offline-tools-app/697.js +2 -0
  156. package/lib/esm-offline-tools-app/697.js.LICENSE.txt +9 -0
  157. package/lib/esm-offline-tools-app/697.js.map +1 -0
  158. package/lib/esm-offline-tools-app/733.js +1 -0
  159. package/lib/esm-offline-tools-app/733.js.map +1 -0
  160. package/lib/esm-offline-tools-app/735.js +2 -0
  161. package/lib/esm-offline-tools-app/735.js.LICENSE.txt +9 -0
  162. package/lib/esm-offline-tools-app/735.js.map +1 -0
  163. package/lib/esm-offline-tools-app/752.js +1 -0
  164. package/lib/esm-offline-tools-app/752.js.map +1 -0
  165. package/lib/esm-offline-tools-app/757.js +1 -0
  166. package/lib/esm-offline-tools-app/78.js +1 -0
  167. package/lib/esm-offline-tools-app/78.js.map +1 -0
  168. package/lib/esm-offline-tools-app/788.js +2 -0
  169. package/lib/esm-offline-tools-app/788.js.LICENSE.txt +19 -0
  170. package/lib/esm-offline-tools-app/788.js.map +1 -0
  171. package/lib/esm-offline-tools-app/82.js +2 -0
  172. package/lib/esm-offline-tools-app/82.js.LICENSE.txt +5 -0
  173. package/lib/esm-offline-tools-app/82.js.map +1 -0
  174. package/lib/esm-offline-tools-app/889.js +2 -0
  175. package/lib/esm-offline-tools-app/889.js.LICENSE.txt +3 -0
  176. package/lib/esm-offline-tools-app/889.js.map +1 -0
  177. package/lib/esm-offline-tools-app/937.js +1 -0
  178. package/lib/esm-offline-tools-app/937.js.map +1 -0
  179. package/lib/esm-offline-tools-app/967.js +1 -0
  180. package/lib/esm-offline-tools-app/967.js.map +1 -0
  181. package/lib/esm-offline-tools-app/main.js +2 -0
  182. package/lib/esm-offline-tools-app/main.js.LICENSE.txt +5 -0
  183. package/lib/esm-offline-tools-app/main.js.map +1 -0
  184. package/lib/esm-offline-tools-app/openmrs-esm-offline-tools-app.js +1 -0
  185. package/lib/esm-offline-tools-app/openmrs-esm-offline-tools-app.js.buildmanifest.json +754 -0
  186. package/lib/esm-offline-tools-app/openmrs-esm-offline-tools-app.js.map +1 -0
  187. package/lib/esm-offline-tools-app/openmrs-esm-offline-tools-app.old +1 -0
  188. package/lib/esm-primary-navigation-app/113.js +2 -0
  189. package/lib/esm-primary-navigation-app/113.js.LICENSE.txt +5 -0
  190. package/lib/esm-primary-navigation-app/113.js.map +1 -0
  191. package/lib/esm-primary-navigation-app/216.js +1 -0
  192. package/lib/esm-primary-navigation-app/216.js.map +1 -0
  193. package/lib/esm-primary-navigation-app/241.js +1 -0
  194. package/lib/esm-primary-navigation-app/241.js.map +1 -0
  195. package/lib/esm-primary-navigation-app/242.js +1 -0
  196. package/lib/esm-primary-navigation-app/242.js.map +1 -0
  197. package/lib/esm-primary-navigation-app/363.js +1 -0
  198. package/lib/esm-primary-navigation-app/363.js.map +1 -0
  199. package/lib/esm-primary-navigation-app/406.js +2 -0
  200. package/lib/esm-primary-navigation-app/406.js.LICENSE.txt +8 -0
  201. package/lib/esm-primary-navigation-app/406.js.map +1 -0
  202. package/lib/esm-primary-navigation-app/414.js +1 -0
  203. package/lib/esm-primary-navigation-app/414.js.map +1 -0
  204. package/lib/esm-primary-navigation-app/574.js +1 -0
  205. package/lib/esm-primary-navigation-app/631.js +1 -0
  206. package/lib/esm-primary-navigation-app/631.js.map +1 -0
  207. package/lib/esm-primary-navigation-app/710.js +1 -0
  208. package/lib/esm-primary-navigation-app/710.js.map +1 -0
  209. package/lib/esm-primary-navigation-app/716.js +1 -0
  210. package/lib/esm-primary-navigation-app/716.js.map +1 -0
  211. package/lib/esm-primary-navigation-app/735.js +2 -0
  212. package/lib/esm-primary-navigation-app/735.js.LICENSE.txt +9 -0
  213. package/lib/esm-primary-navigation-app/735.js.map +1 -0
  214. package/lib/esm-primary-navigation-app/743.js +1 -0
  215. package/lib/esm-primary-navigation-app/743.js.map +1 -0
  216. package/lib/esm-primary-navigation-app/757.js +1 -0
  217. package/lib/esm-primary-navigation-app/788.js +2 -0
  218. package/lib/esm-primary-navigation-app/788.js.LICENSE.txt +19 -0
  219. package/lib/esm-primary-navigation-app/788.js.map +1 -0
  220. package/lib/esm-primary-navigation-app/889.js +2 -0
  221. package/lib/esm-primary-navigation-app/889.js.LICENSE.txt +3 -0
  222. package/lib/esm-primary-navigation-app/889.js.map +1 -0
  223. package/lib/esm-primary-navigation-app/main.js +1 -0
  224. package/lib/esm-primary-navigation-app/main.js.map +1 -0
  225. package/lib/esm-primary-navigation-app/openmrs-esm-primary-navigation-app.js +1 -0
  226. package/lib/esm-primary-navigation-app/openmrs-esm-primary-navigation-app.js.buildmanifest.json +503 -0
  227. package/lib/esm-primary-navigation-app/openmrs-esm-primary-navigation-app.js.map +1 -0
  228. package/lib/esm-primary-navigation-app/openmrs-esm-primary-navigation-app.old +1 -0
  229. package/lib/index.html +3 -0
  230. package/lib/openmrs.js +25 -25
  231. package/lib/service-worker.js +2 -2
  232. package/package.json +4 -4
  233. package/src/index.ejs +3 -0
  234. package/webpack.config.js +54 -1
  235. package/dist/84759747c5ec9b83.js +0 -1
  236. /package/dist/{openmrs.4d216ca793e8e302.js.LICENSE.txt → openmrs.7f67a01dda216963.js.LICENSE.txt} +0 -0
package/lib/openmrs.js CHANGED
@@ -2601,7 +2601,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
2601
2601
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
2602
2602
 
2603
2603
  "use strict";
2604
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"ClickableTile\": () => (/* binding */ ClickableTile),\n/* harmony export */ \"ExpandableTile\": () => (/* binding */ ExpandableTile),\n/* harmony export */ \"SelectableTile\": () => (/* binding */ SelectableTile),\n/* harmony export */ \"Tile\": () => (/* binding */ Tile),\n/* harmony export */ \"TileAboveTheFoldContent\": () => (/* binding */ TileAboveTheFoldContent),\n/* harmony export */ \"TileBelowTheFoldContent\": () => (/* binding */ TileBelowTheFoldContent)\n/* harmony export */ });\n/* harmony import */ var _virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../_virtual/_rollupPluginBabelHelpers.js */ \"../../../node_modules/@carbon/react/es/_virtual/_rollupPluginBabelHelpers.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"webpack/sharing/consume/default/react/react\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! prop-types */ \"../../../node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var classnames__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! classnames */ \"../../../node_modules/classnames/index.js\");\n/* harmony import */ var classnames__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(classnames__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _Link_Link_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../Link/Link.js */ \"../../../node_modules/@carbon/react/es/components/Link/Link.js\");\n/* harmony import */ var _carbon_icons_react__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @carbon/icons-react */ \"../../../node_modules/@carbon/icons-react/es/generated/bucket-2.js\");\n/* harmony import */ var _prop_types_deprecate_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../../prop-types/deprecate.js */ \"../../../node_modules/@carbon/react/es/prop-types/deprecate.js\");\n/* harmony import */ var _tools_events_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../../tools/events.js */ \"../../../node_modules/@carbon/react/es/tools/events.js\");\n/* harmony import */ var _internal_usePrefix_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../internal/usePrefix.js */ \"../../../node_modules/@carbon/react/es/internal/usePrefix.js\");\n/* harmony import */ var _internal_keyboard_match_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../internal/keyboard/match.js */ \"../../../node_modules/@carbon/react/es/internal/keyboard/match.js\");\n/* harmony import */ var _internal_keyboard_keys_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../internal/keyboard/keys.js */ \"../../../node_modules/@carbon/react/es/internal/keyboard/keys.js\");\n/**\n * Copyright IBM Corp. 2016, 2022\n *\n * This source code is licensed under the Apache-2.0 license found in the\n * LICENSE file in the root directory of this source tree.\n */ \n\n\n\n\n\n\n\n\n\n\nvar _CheckboxCheckedFille, _Checkbox, _ChevronDown;\nvar _excluded = [\n \"children\",\n \"className\",\n \"light\"\n], _excluded2 = [\n \"children\",\n \"href\",\n \"className\",\n \"handleClick\",\n \"handleKeyDown\",\n \"onClick\",\n \"onKeyDown\",\n \"clicked\",\n \"light\"\n], _excluded3 = [\n \"children\",\n \"id\",\n \"tabIndex\",\n \"value\",\n \"name\",\n \"title\",\n \"iconDescription\",\n \"className\",\n \"handleClick\",\n \"handleKeyDown\",\n \"onClick\",\n \"onChange\",\n \"onKeyDown\",\n \"light\",\n \"disabled\",\n \"selected\"\n], _excluded4 = [\n \"tabIndex\",\n \"className\",\n \"expanded\",\n \"tileMaxHeight\",\n \"tilePadding\",\n \"handleClick\",\n \"onKeyUp\",\n \"tileCollapsedIconText\",\n \"tileExpandedIconText\",\n \"tileCollapsedLabel\",\n \"tileExpandedLabel\",\n \"onBeforeClick\",\n \"light\"\n];\nvar Tile = /*#__PURE__*/ function(_Component) {\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.inherits)(Tile, _Component);\n var _super = (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.createSuper)(Tile);\n function Tile() {\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.classCallCheck)(this, Tile);\n return _super.apply(this, arguments);\n }\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.createClass)(Tile, [\n {\n key: \"render\",\n value: function render() {\n var prefix = this.context;\n var _this$props = this.props, children = _this$props.children, className = _this$props.className, light = _this$props.light, rest = (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.objectWithoutProperties)(_this$props, _excluded);\n var tileClasses = classnames__WEBPACK_IMPORTED_MODULE_1___default()(\"\".concat(prefix, \"--tile\"), (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)({}, \"\".concat(prefix, \"--tile--light\"), light), className);\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__[\"extends\"])({\n className: tileClasses\n }, rest), children);\n }\n }\n ]);\n return Tile;\n}(react__WEBPACK_IMPORTED_MODULE_0__.Component);\n(0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(Tile, \"propTypes\", {\n /**\n * The child nodes.\n */ children: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().node),\n /**\n * The CSS class names.\n */ className: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string),\n /**\n * `true` to use the light version. For use on $ui-01 backgrounds only.\n * Don't use this to make tile background color same as container background color.\n */ light: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().bool)\n});\n(0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(Tile, \"contextType\", _internal_usePrefix_js__WEBPACK_IMPORTED_MODULE_4__.PrefixContext);\n(0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(Tile, \"defaultProps\", {\n light: false\n});\nvar ClickableTile = /*#__PURE__*/ function(_Component2) {\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.inherits)(ClickableTile, _Component2);\n var _super2 = (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.createSuper)(ClickableTile);\n function ClickableTile() {\n var _this;\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.classCallCheck)(this, ClickableTile);\n for(var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++){\n args[_key] = arguments[_key];\n }\n _this = _super2.call.apply(_super2, [\n this\n ].concat(args));\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)((0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.assertThisInitialized)(_this), \"state\", {});\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)((0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.assertThisInitialized)(_this), \"handleClick\", function(evt) {\n evt.persist();\n _this.setState({\n clicked: !_this.state.clicked\n }, function() {\n var _this$props$handleCli, _this$props2, _this$props$onClick, _this$props3;\n // TODO: Remove handleClick prop when handleClick is deprecated\n ((_this$props$handleCli = (_this$props2 = _this.props).handleClick) === null || _this$props$handleCli === void 0 ? void 0 : _this$props$handleCli.call(_this$props2, evt)) || ((_this$props$onClick = (_this$props3 = _this.props).onClick) === null || _this$props$onClick === void 0 ? void 0 : _this$props$onClick.call(_this$props3, evt));\n });\n });\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)((0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.assertThisInitialized)(_this), \"handleKeyDown\", function(evt) {\n evt.persist();\n if ((0,_internal_keyboard_match_js__WEBPACK_IMPORTED_MODULE_5__.matches)(evt, [\n _internal_keyboard_keys_js__WEBPACK_IMPORTED_MODULE_6__.Enter,\n _internal_keyboard_keys_js__WEBPACK_IMPORTED_MODULE_6__.Space\n ])) {\n _this.setState({\n clicked: !_this.state.clicked\n }, function() {\n var _this$props$handleKey, _this$props4;\n // TODO: Remove handleKeyDown prop when handleKeyDown is deprecated\n ((_this$props$handleKey = (_this$props4 = _this.props).handleKeyDown) === null || _this$props$handleKey === void 0 ? void 0 : _this$props$handleKey.call(_this$props4, evt)) || _this.props.onKeyDown(evt);\n });\n } else {\n var _this$props$handleKey2, _this$props5;\n // TODO: Remove handleKeyDown prop when handleKeyDown is deprecated\n ((_this$props$handleKey2 = (_this$props5 = _this.props).handleKeyDown) === null || _this$props$handleKey2 === void 0 ? void 0 : _this$props$handleKey2.call(_this$props5, evt)) || _this.props.onKeyDown(evt);\n }\n });\n return _this;\n }\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.createClass)(ClickableTile, [\n {\n key: \"render\",\n value: function render() {\n var _cx2;\n var prefix = this.context;\n var _this$props6 = this.props, children = _this$props6.children, href = _this$props6.href, className = _this$props6.className;\n _this$props6.handleClick;\n _this$props6.handleKeyDown;\n _this$props6.onClick;\n _this$props6.onKeyDown;\n _this$props6.clicked;\n var light = _this$props6.light, rest = (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.objectWithoutProperties)(_this$props6, _excluded2);\n var classes = classnames__WEBPACK_IMPORTED_MODULE_1___default()(\"\".concat(prefix, \"--tile\"), \"\".concat(prefix, \"--tile--clickable\"), (_cx2 = {}, (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(_cx2, \"\".concat(prefix, \"--tile--is-clicked\"), this.state.clicked), (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(_cx2, \"\".concat(prefix, \"--tile--light\"), light), _cx2), className);\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_Link_Link_js__WEBPACK_IMPORTED_MODULE_7__[\"default\"], (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__[\"extends\"])({\n href: href,\n className: classes\n }, rest, {\n onClick: this.handleClick,\n onKeyDown: this.handleKeyDown\n }), children);\n }\n }\n ], [\n {\n key: \"getDerivedStateFromProps\",\n value: function getDerivedStateFromProps(_ref, state) {\n var clicked = _ref.clicked;\n var prevClicked = state.prevClicked;\n return prevClicked === clicked ? null : {\n clicked: clicked,\n prevClicked: clicked\n };\n }\n }\n ]);\n return ClickableTile;\n}(react__WEBPACK_IMPORTED_MODULE_0__.Component);\n(0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(ClickableTile, \"propTypes\", {\n /**\n * The child nodes.\n */ children: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().node),\n /**\n * The CSS class names.\n */ className: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string),\n /**\n * Deprecated in v11. Use 'onClick' instead.\n */ handleClick: (0,_prop_types_deprecate_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"])((prop_types__WEBPACK_IMPORTED_MODULE_3___default().func), \"The handleClick prop for ClickableTile has been deprecated in favor of onClick. It will be removed in the next major release.\"),\n /**\n * Specify the function to run when the ClickableTile is interacted with via a keyboard\n */ handleKeyDown: (0,_prop_types_deprecate_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"])((prop_types__WEBPACK_IMPORTED_MODULE_3___default().func), \"The handleKeyDown prop for ClickableTile has been deprecated in favor of onKeyDown. It will be removed in the next major release.\"),\n /**\n * The href for the link.\n */ href: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string),\n /**\n * `true` to use the light version. For use on $ui-01 backgrounds only.\n * Don't use this to make tile background color same as container background color.\n */ light: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().bool),\n /**\n * Specify the function to run when the ClickableTile is clicked\n */ onClick: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().func),\n /**\n * Specify the function to run when the ClickableTile is interacted with via a keyboard\n */ onKeyDown: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().func),\n /**\n * The rel property for the link.\n */ rel: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string)\n});\n(0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(ClickableTile, \"contextType\", _internal_usePrefix_js__WEBPACK_IMPORTED_MODULE_4__.PrefixContext);\n(0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(ClickableTile, \"defaultProps\", {\n clicked: false,\n onClick: function onClick() {},\n onKeyDown: function onKeyDown() {},\n light: false\n});\nfunction SelectableTile(props) {\n var handleOnClick = function handleOnClick(evt) {\n evt.preventDefault();\n evt.persist();\n setIsSelected(!isSelected);\n clickHandler(evt);\n onChange(evt);\n } // TODO: rename to handleKeyDown when handleKeyDown prop is deprecated\n ;\n var handleOnKeyDown = function handleOnKeyDown(evt) {\n evt.persist();\n if ((0,_internal_keyboard_match_js__WEBPACK_IMPORTED_MODULE_5__.matches)(evt, [\n _internal_keyboard_keys_js__WEBPACK_IMPORTED_MODULE_6__.Enter,\n _internal_keyboard_keys_js__WEBPACK_IMPORTED_MODULE_6__.Space\n ])) {\n evt.preventDefault();\n setIsSelected(!isSelected);\n onChange(evt);\n }\n keyDownHandler(evt);\n };\n var handleChange = function handleChange(event) {\n setIsSelected(event.target.checked);\n onChange(event);\n };\n var _cx3;\n var children = props.children, id = props.id, tabIndex = props.tabIndex, value = props.value, name = props.name, title = props.title;\n props.iconDescription;\n var className = props.className, handleClick = props.handleClick, handleKeyDown = props.handleKeyDown, onClick = props.onClick, onChange = props.onChange, onKeyDown = props.onKeyDown, light = props.light, disabled = props.disabled, selected = props.selected, rest = (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.objectWithoutProperties)(props, _excluded3);\n var prefix = (0,_internal_usePrefix_js__WEBPACK_IMPORTED_MODULE_4__.usePrefix)(); // TODO: replace with onClick when handleClick prop is deprecated\n var clickHandler = handleClick || onClick; // TODO: replace with onKeyDown when handleKeyDown prop is deprecated\n var keyDownHandler = handleKeyDown || onKeyDown;\n var _useState = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(selected), _useState2 = (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.slicedToArray)(_useState, 2), isSelected = _useState2[0], setIsSelected = _useState2[1];\n var input = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(null);\n var classes = classnames__WEBPACK_IMPORTED_MODULE_1___default()(\"\".concat(prefix, \"--tile\"), \"\".concat(prefix, \"--tile--selectable\"), (_cx3 = {}, (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(_cx3, \"\".concat(prefix, \"--tile--is-selected\"), isSelected), (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(_cx3, \"\".concat(prefix, \"--tile--light\"), light), (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(_cx3, \"\".concat(prefix, \"--tile--disabled\"), disabled), _cx3), className);\n var inputClasses = classnames__WEBPACK_IMPORTED_MODULE_1___default()(\"\".concat(prefix, \"--tile-input\"), (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)({}, \"\".concat(prefix, \"--tile-input--checked\"), isSelected)); // TODO: rename to handleClick when handleClick prop is deprecated\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(function() {\n setIsSelected(selected);\n }, [\n selected\n ]);\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement((react__WEBPACK_IMPORTED_MODULE_0___default().Fragment), null, /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"input\", {\n ref: input,\n tabIndex: -1,\n id: id,\n className: inputClasses,\n value: value,\n onChange: !disabled ? handleChange : null,\n type: \"checkbox\",\n disabled: disabled,\n name: name,\n title: title,\n checked: isSelected\n }), /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"label\", (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__[\"extends\"])({\n htmlFor: id,\n className: classes // eslint-disable-next-line jsx-a11y/no-noninteractive-tabindex\n ,\n tabIndex: !disabled ? tabIndex : null\n }, rest, {\n onClick: !disabled ? handleOnClick : null,\n onKeyDown: !disabled ? handleOnKeyDown : null\n }), /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"span\", {\n className: \"\".concat(prefix, \"--tile__checkmark \").concat(prefix, \"--tile__checkmark--persistent\")\n }, isSelected ? _CheckboxCheckedFille || (_CheckboxCheckedFille = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_carbon_icons_react__WEBPACK_IMPORTED_MODULE_9__.CheckboxCheckedFilled, null)) : _Checkbox || (_Checkbox = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_carbon_icons_react__WEBPACK_IMPORTED_MODULE_9__.Checkbox, null))), /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"span\", {\n className: \"\".concat(prefix, \"--tile-content\")\n }, children)));\n}\nSelectableTile.defaultProps = {\n value: \"value\",\n title: \"title\",\n selected: false,\n tabIndex: 0,\n light: false,\n onClick: function onClick() {},\n onChange: function onChange() {},\n onKeyDown: function onKeyDown() {}\n};\nSelectableTile.propTypes = {\n /**\n * The child nodes.\n */ children: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().node),\n /**\n * The CSS class names.\n */ className: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string),\n /**\n * Specify whether the SelectableTile should be disabled\n */ disabled: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().bool),\n /**\n * Specify the function to run when the SelectableTile is clicked\n */ handleClick: (0,_prop_types_deprecate_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"])((prop_types__WEBPACK_IMPORTED_MODULE_3___default().func), \"The `handleClick` prop for `SelectableTile` has been deprecated in favor of `onClick`. It will be removed in the next major release.\"),\n /**\n * Specify the function to run when the SelectableTile is interacted with via a keyboard\n */ handleKeyDown: (0,_prop_types_deprecate_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"])((prop_types__WEBPACK_IMPORTED_MODULE_3___default().func), \"The `handleKeyDown` prop for `SelectableTile` has been deprecated in favor of `onKeyDown`. It will be removed in the next major release.\"),\n /**\n * The description of the checkmark icon.\n */ iconDescription: (0,_prop_types_deprecate_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"])((prop_types__WEBPACK_IMPORTED_MODULE_3___default().string), \"The `iconDescription` prop for `SelectableTile` is no longer needed and has \" + \"been deprecated. It will be removed in the next major release.\"),\n /**\n * The ID of the `<input>`.\n */ id: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string),\n /**\n * `true` to use the light version. For use on $ui-01 backgrounds only.\n * Don't use this to make tile background color same as container background color.\n */ light: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().bool),\n /**\n * The `name` of the `<input>`.\n */ name: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string),\n /**\n * The empty handler of the `<input>`.\n */ onChange: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().func),\n /**\n * Specify the function to run when the SelectableTile is clicked\n */ onClick: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().func),\n /**\n * Specify the function to run when the SelectableTile is interacted with via a keyboard\n */ onKeyDown: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().func),\n /**\n * `true` to select this tile.\n */ selected: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().bool),\n /**\n * Specify the tab index of the wrapper element\n */ tabIndex: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().number),\n /**\n * The `title` of the `<input>`.\n */ title: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string),\n /**\n * The value of the `<input>`.\n */ value: prop_types__WEBPACK_IMPORTED_MODULE_3___default().oneOfType([\n (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string),\n (prop_types__WEBPACK_IMPORTED_MODULE_3___default().number)\n ]).isRequired\n};\nvar ExpandableTile = /*#__PURE__*/ function(_Component3) {\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.inherits)(ExpandableTile, _Component3);\n var _super3 = (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.createSuper)(ExpandableTile);\n function ExpandableTile() {\n var _this2;\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.classCallCheck)(this, ExpandableTile);\n for(var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++){\n args[_key2] = arguments[_key2];\n }\n _this2 = _super3.call.apply(_super3, [\n this\n ].concat(args));\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)((0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.assertThisInitialized)(_this2), \"state\", {});\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)((0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.assertThisInitialized)(_this2), \"resizeObserver\", null);\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)((0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.assertThisInitialized)(_this2), \"componentDidMount\", function() {\n _this2.resizeObserver = new ResizeObserver(function(entries) {\n var _entries = (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.slicedToArray)(entries, 1), aboveTheFold = _entries[0];\n _this2.setState({\n tileMaxHeight: aboveTheFold.contentRect.height\n });\n });\n if (_this2.tile) {\n var getStyle = window.getComputedStyle(_this2.tile, null);\n if (_this2.aboveTheFold) {\n _this2.resizeObserver.observe(_this2.aboveTheFold);\n _this2.setState({\n tileMaxHeight: _this2.aboveTheFold.getBoundingClientRect().height,\n tilePadding: parseInt(getStyle.getPropertyValue(\"padding-top\"), 10) + parseInt(getStyle.getPropertyValue(\"padding-bottom\"), 10)\n });\n }\n }\n });\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)((0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.assertThisInitialized)(_this2), \"componentDidUpdate\", function(prevProps) {\n if (prevProps.expanded !== _this2.props.expanded) {\n _this2.setMaxHeight();\n }\n });\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)((0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.assertThisInitialized)(_this2), \"setMaxHeight\", function() {\n if (_this2.state.expanded ? _this2.tileContent : _this2.aboveTheFold) {\n _this2.setState({\n tileMaxHeight: _this2.state.expanded ? _this2.tileContent.getBoundingClientRect().height : _this2.aboveTheFold.getBoundingClientRect().height\n });\n }\n });\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)((0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.assertThisInitialized)(_this2), \"handleClick\", function(evt) {\n if (!_this2.props.onBeforeClick(evt) || evt.target.tagName === \"INPUT\") {\n return;\n }\n evt.persist();\n _this2.setState({\n expanded: !_this2.state.expanded\n }, function() {\n var _this2$props$handleCl, _this2$props, _this2$props$onClick, _this2$props2;\n _this2.setMaxHeight(); // TODO: Remove handleClick prop when handleClick is deprecated\n ((_this2$props$handleCl = (_this2$props = _this2.props).handleClick) === null || _this2$props$handleCl === void 0 ? void 0 : _this2$props$handleCl.call(_this2$props, evt)) || ((_this2$props$onClick = (_this2$props2 = _this2.props).onClick) === null || _this2$props$onClick === void 0 ? void 0 : _this2$props$onClick.call(_this2$props2, evt));\n });\n });\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)((0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.assertThisInitialized)(_this2), \"handleKeyUp\", function(evt) {\n if (evt.target !== _this2.tile) {\n if ((0,_internal_keyboard_match_js__WEBPACK_IMPORTED_MODULE_5__.matches)(evt, [\n _internal_keyboard_keys_js__WEBPACK_IMPORTED_MODULE_6__.Enter,\n _internal_keyboard_keys_js__WEBPACK_IMPORTED_MODULE_6__.Space\n ])) {\n evt.preventDefault();\n }\n }\n });\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)((0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.assertThisInitialized)(_this2), \"getChildren\", function() {\n return react__WEBPACK_IMPORTED_MODULE_0___default().Children.toArray(_this2.props.children);\n });\n return _this2;\n }\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.createClass)(ExpandableTile, [\n {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n if (this.resizeObserver) {\n this.resizeObserver.disconnect();\n }\n }\n },\n {\n key: \"render\",\n value: function render() {\n var _cx5, _this3 = this;\n var _this$props7 = this.props, tabIndex = _this$props7.tabIndex, className = _this$props7.className;\n _this$props7.expanded;\n _this$props7.tileMaxHeight;\n _this$props7.tilePadding;\n _this$props7.handleClick;\n var onKeyUp = _this$props7.onKeyUp, tileCollapsedIconText = _this$props7.tileCollapsedIconText, tileExpandedIconText = _this$props7.tileExpandedIconText, tileCollapsedLabel = _this$props7.tileCollapsedLabel, tileExpandedLabel = _this$props7.tileExpandedLabel;\n _this$props7.onBeforeClick;\n var light = _this$props7.light, rest = (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.objectWithoutProperties)(_this$props7, _excluded4);\n var prefix = this.context;\n var isExpanded = this.state.expanded;\n var classes = classnames__WEBPACK_IMPORTED_MODULE_1___default()(\"\".concat(prefix, \"--tile\"), \"\".concat(prefix, \"--tile--expandable\"), (_cx5 = {}, (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(_cx5, \"\".concat(prefix, \"--tile--is-expanded\"), isExpanded), (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(_cx5, \"\".concat(prefix, \"--tile--light\"), light), _cx5), className);\n var tileStyle = {\n maxHeight: isExpanded ? null : this.state.tileMaxHeight + this.state.tilePadding\n };\n var childrenAsArray = this.getChildren();\n return(/*#__PURE__*/ // eslint-disable-next-line jsx-a11y/click-events-have-key-events,jsx-a11y/no-static-element-interactions\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"button\", (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__[\"extends\"])({\n type: \"button\",\n ref: function ref(tile) {\n _this3.tile = tile;\n },\n style: tileStyle,\n className: classes,\n \"aria-expanded\": isExpanded,\n title: isExpanded ? tileExpandedIconText : tileCollapsedIconText\n }, rest, {\n onKeyUp: (0,_tools_events_js__WEBPACK_IMPORTED_MODULE_10__.composeEventHandlers)([\n onKeyUp,\n this.handleKeyUp\n ]),\n onClick: this.handleClick,\n tabIndex: tabIndex\n }), /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n ref: function ref(tileContent) {\n _this3.tileContent = tileContent;\n }\n }, /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n ref: function ref(aboveTheFold) {\n _this3.aboveTheFold = aboveTheFold;\n },\n className: \"\".concat(prefix, \"--tile-content\")\n }, childrenAsArray[0]), /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"\".concat(prefix, \"--tile__chevron\")\n }, /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"span\", null, isExpanded ? tileExpandedLabel : tileCollapsedLabel), _ChevronDown || (_ChevronDown = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_carbon_icons_react__WEBPACK_IMPORTED_MODULE_9__.ChevronDown, null))), /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"\".concat(prefix, \"--tile-content\")\n }, childrenAsArray[1]))));\n }\n }\n ], [\n {\n key: \"getDerivedStateFromProps\",\n value: function getDerivedStateFromProps(_ref2, state) {\n var expanded = _ref2.expanded, tileMaxHeight = _ref2.tileMaxHeight, tilePadding = _ref2.tilePadding;\n var prevExpanded = state.prevExpanded, prevTileMaxHeight = state.prevTileMaxHeight, prevTilePadding = state.prevTilePadding, currentExpanded = state.expanded, currentTileMaxHeight = state.tileMaxHeight, currentTilePadding = state.tilePadding;\n var expandedChanged = prevExpanded !== expanded;\n var tileMaxHeightChanged = prevTileMaxHeight !== tileMaxHeight;\n var tilePaddingChanged = prevTilePadding !== tilePadding;\n return !expandedChanged && !tileMaxHeightChanged && !tilePaddingChanged ? null : {\n expanded: !expandedChanged ? currentExpanded : expanded,\n tileMaxHeight: !tileMaxHeightChanged ? currentTileMaxHeight : tileMaxHeight,\n tilePadding: !tilePaddingChanged ? currentTilePadding : tilePadding,\n prevExpanded: expanded,\n prevTileMaxHeight: tileMaxHeight,\n prevTilePadding: tilePadding\n };\n }\n }\n ]);\n return ExpandableTile;\n}(react__WEBPACK_IMPORTED_MODULE_0__.Component);\n(0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(ExpandableTile, \"propTypes\", {\n /**\n * The child nodes.\n */ children: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().node),\n /**\n * The CSS class names.\n */ className: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string),\n /**\n * `true` if the tile is expanded.\n */ expanded: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().bool),\n /**\n * Deprecated in v11. Use 'onClick' instead.\n */ handleClick: (0,_prop_types_deprecate_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"])((prop_types__WEBPACK_IMPORTED_MODULE_3___default().func), \"The handleClick prop for ExpandableTile has been deprecated in favor of onClick. It will be removed in the next major release.\"),\n /**\n * An ID that can be provided to aria-labelledby\n */ id: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string),\n /**\n * `true` to use the light version. For use on $ui-01 backgrounds only.\n * Don't use this to make tile background color same as container background color.\n */ light: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().bool),\n /**\n * optional handler to decide whether to ignore a click. returns false if click should be ignored\n */ onBeforeClick: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().func),\n /**\n * Specify the function to run when the ExpandableTile is clicked\n */ onClick: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().func),\n /**\n * optional handler to trigger a function when a key is pressed\n */ onKeyUp: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().func),\n /**\n * The `tabindex` attribute.\n */ tabIndex: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().number),\n /**\n * The description of the \"collapsed\" icon that can be read by screen readers.\n */ tileCollapsedIconText: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string),\n /**\n * When \"collapsed\", a label to appear next to the chevron (e.g., \"View more\").\n */ tileCollapsedLabel: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string),\n /**\n * The description of the \"expanded\" icon that can be read by screen readers.\n */ tileExpandedIconText: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string),\n /**\n * When \"expanded\", a label to appear next to the chevron (e.g., \"View less\").\n */ tileExpandedLabel: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string)\n});\n(0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(ExpandableTile, \"contextType\", _internal_usePrefix_js__WEBPACK_IMPORTED_MODULE_4__.PrefixContext);\n(0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(ExpandableTile, \"defaultProps\", {\n tabIndex: 0,\n expanded: false,\n tileMaxHeight: 0,\n tilePadding: 0,\n onBeforeClick: function onBeforeClick() {\n return true;\n },\n onClick: function onClick() {},\n tileCollapsedIconText: \"Interact to expand Tile\",\n tileExpandedIconText: \"Interact to collapse Tile\",\n light: false\n});\nvar TileAboveTheFoldContent = /*#__PURE__*/ function(_Component4) {\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.inherits)(TileAboveTheFoldContent, _Component4);\n var _super4 = (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.createSuper)(TileAboveTheFoldContent);\n function TileAboveTheFoldContent() {\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.classCallCheck)(this, TileAboveTheFoldContent);\n return _super4.apply(this, arguments);\n }\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.createClass)(TileAboveTheFoldContent, [\n {\n key: \"render\",\n value: function render() {\n var prefix = this.context;\n var children = this.props.children;\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"span\", {\n className: \"\".concat(prefix, \"--tile-content__above-the-fold\")\n }, children);\n }\n }\n ]);\n return TileAboveTheFoldContent;\n}(react__WEBPACK_IMPORTED_MODULE_0__.Component);\n(0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(TileAboveTheFoldContent, \"propTypes\", {\n /**\n * The child nodes.\n */ children: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().node)\n});\n(0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(TileAboveTheFoldContent, \"contextType\", _internal_usePrefix_js__WEBPACK_IMPORTED_MODULE_4__.PrefixContext);\nvar TileBelowTheFoldContent = /*#__PURE__*/ function(_Component5) {\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.inherits)(TileBelowTheFoldContent, _Component5);\n var _super5 = (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.createSuper)(TileBelowTheFoldContent);\n function TileBelowTheFoldContent() {\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.classCallCheck)(this, TileBelowTheFoldContent);\n return _super5.apply(this, arguments);\n }\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.createClass)(TileBelowTheFoldContent, [\n {\n key: \"render\",\n value: function render() {\n var children = this.props.children;\n var prefix = this.context;\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"span\", {\n className: \"\".concat(prefix, \"--tile-content__below-the-fold\")\n }, children);\n }\n }\n ]);\n return TileBelowTheFoldContent;\n}(react__WEBPACK_IMPORTED_MODULE_0__.Component);\n(0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(TileBelowTheFoldContent, \"propTypes\", {\n /**\n * The child nodes.\n */ children: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().node)\n});\n(0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(TileBelowTheFoldContent, \"contextType\", _internal_usePrefix_js__WEBPACK_IMPORTED_MODULE_4__.PrefixContext);\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0BjYXJib24vcmVhY3QvZXMvY29tcG9uZW50cy9UaWxlL1RpbGUuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTs7Ozs7Q0FLQyxHQUUrVztBQUNqUztBQUM1QztBQUNQO0FBQ087QUFDZ0Q7QUFDN0I7QUFDTztBQUNVO0FBQ1o7QUFDSTtBQUUvRCxJQUFJb0MsdUJBQXVCQyxXQUFXQztBQUV0QyxJQUFJQyxZQUFZO0lBQUM7SUFBWTtJQUFhO0NBQVEsRUFDOUNDLGFBQWE7SUFBQztJQUFZO0lBQVE7SUFBYTtJQUFlO0lBQWlCO0lBQVc7SUFBYTtJQUFXO0NBQVEsRUFDMUhDLGFBQWE7SUFBQztJQUFZO0lBQU07SUFBWTtJQUFTO0lBQVE7SUFBUztJQUFtQjtJQUFhO0lBQWU7SUFBaUI7SUFBVztJQUFZO0lBQWE7SUFBUztJQUFZO0NBQVcsRUFDMU1DLGFBQWE7SUFBQztJQUFZO0lBQWE7SUFBWTtJQUFpQjtJQUFlO0lBQWU7SUFBVztJQUF5QjtJQUF3QjtJQUFzQjtJQUFxQjtJQUFpQjtDQUFRO0FBQ3RPLElBQUlDLE9BQU8sV0FBVyxHQUFFLFNBQVVDLFVBQVUsRUFBRTtJQUM1QzNDLDhFQUFTQSxDQUFDMEMsTUFBTUM7SUFFaEIsSUFBSUMsU0FBUzFDLGlGQUFZQSxDQUFDd0M7SUFFMUIsU0FBU0EsT0FBTztRQUNkdEMsb0ZBQWVBLENBQUMsSUFBSSxFQUFFc0M7UUFFdEIsT0FBT0UsT0FBT0MsS0FBSyxDQUFDLElBQUksRUFBRUM7SUFDNUI7SUFFQXhDLGlGQUFZQSxDQUFDb0MsTUFBTTtRQUFDO1lBQ2xCSyxLQUFLO1lBQ0xDLE9BQU8sU0FBU0MsU0FBUztnQkFDdkIsSUFBSUMsU0FBUyxJQUFJLENBQUNDLE9BQU87Z0JBRXpCLElBQUlDLGNBQWMsSUFBSSxDQUFDQyxLQUFLLEVBQ3hCQyxXQUFXRixZQUFZRSxRQUFRLEVBQy9CQyxZQUFZSCxZQUFZRyxTQUFTLEVBQ2pDQyxRQUFR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NkwseUJBQXlCLGVBQWV6SyxpRUFBYUE7QUFFNEMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Ab3Blbm1ycy9lc20tYXBwLXNoZWxsLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9AY2FyYm9uL3JlYWN0L2VzL2NvbXBvbmVudHMvVGlsZS9UaWxlLmpzPzBjYTYiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb3B5cmlnaHQgSUJNIENvcnAuIDIwMTYsIDIwMjJcbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUtMi4wIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXG4gKi9cblxuaW1wb3J0IHsgaW5oZXJpdHMgYXMgX2luaGVyaXRzLCBjcmVhdGVTdXBlciBhcyBfY3JlYXRlU3VwZXIsIGNsYXNzQ2FsbENoZWNrIGFzIF9jbGFzc0NhbGxDaGVjaywgY3JlYXRlQ2xhc3MgYXMgX2NyZWF0ZUNsYXNzLCBvYmplY3RXaXRob3V0UHJvcGVydGllcyBhcyBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMsIGRlZmluZVByb3BlcnR5IGFzIF9kZWZpbmVQcm9wZXJ0eSwgZXh0ZW5kcyBhcyBfZXh0ZW5kcywgYXNzZXJ0VGhpc0luaXRpYWxpemVkIGFzIF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQsIHNsaWNlZFRvQXJyYXkgYXMgX3NsaWNlZFRvQXJyYXkgfSBmcm9tICcuLi8uLi9fdmlydHVhbC9fcm9sbHVwUGx1Z2luQmFiZWxIZWxwZXJzLmpzJztcbmltcG9ydCBSZWFjdF9fZGVmYXVsdCwgeyBDb21wb25lbnQsIHVzZVN0YXRlLCB1c2VSZWYsIHVzZUVmZmVjdCB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcyc7XG5pbXBvcnQgY3ggZnJvbSAnY2xhc3NuYW1lcyc7XG5pbXBvcnQgTGluayBmcm9tICcuLi9MaW5rL0xpbmsuanMnO1xuaW1wb3J0IHsgQ2hlY2tib3hDaGVja2VkRmlsbGVkLCBDaGVja2JveCwgQ2hldnJvbkRvd24gfSBmcm9tICdAY2FyYm9uL2ljb25zLXJlYWN0JztcbmltcG9ydCBkZXByZWNhdGUgZnJvbSAnLi4vLi4vcHJvcC10eXBlcy9kZXByZWNhdGUuanMnO1xuaW1wb3J0IHsgY29tcG9zZUV2ZW50SGFuZGxlcnMgfSBmcm9tICcuLi8uLi90b29scy9ldmVudHMuanMnO1xuaW1wb3J0IHsgUHJlZml4Q29udGV4dCwgdXNlUHJlZml4IH0gZnJvbSAnLi4vLi4vaW50ZXJuYWwvdXNlUHJlZml4LmpzJztcbmltcG9ydCB7IG1hdGNoZXMgfSBmcm9tICcuLi8uLi9pbnRlcm5hbC9rZXlib2FyZC9tYXRjaC5qcyc7XG5pbXBvcnQgeyBFbnRlciwgU3BhY2UgfSBmcm9tICcuLi8uLi9pbnRlcm5hbC9rZXlib2FyZC9rZXlzLmpzJztcblxudmFyIF9DaGVja2JveENoZWNrZWRGaWxsZSwgX0NoZWNrYm94LCBfQ2hldnJvbkRvd247XG5cbnZhciBfZXhjbHVkZWQgPSBbXCJjaGlsZHJlblwiLCBcImNsYXNzTmFtZVwiLCBcImxpZ2h0XCJdLFxuICAgIF9leGNsdWRlZDIgPSBbXCJjaGlsZHJlblwiLCBcImhyZWZcIiwgXCJjbGFzc05hbWVcIiwgXCJoYW5kbGVDbGlja1wiLCBcImhhbmRsZUtleURvd25cIiwgXCJvbkNsaWNrXCIsIFwib25LZXlEb3duXCIsIFwiY2xpY2tlZFwiLCBcImxpZ2h0XCJdLFxuICAgIF9leGNsdWRlZDMgPSBbXCJjaGlsZHJlblwiLCBcImlkXCIsIFwidGFiSW5kZXhcIiwgXCJ2YWx1ZVwiLCBcIm5hbWVcIiwgXCJ0aXRsZVwiLCBcImljb25EZXNjcmlwdGlvblwiLCBcImNsYXNzTmFtZVwiLCBcImhhbmRsZUNsaWNrXCIsIFwiaGFuZGxlS2V5RG93blwiLCBcIm9uQ2xpY2tcIiwgXCJvbkNoYW5nZVwiLCBcIm9uS2V5RG93blwiLCBcImxpZ2h0XCIsIFwiZGlzYWJsZWRcIiwgXCJzZWxlY3RlZFwiXSxcbiAgICBfZXhjbHVkZWQ0ID0gW1widGFiSW5kZXhcIiwgXCJjbGFzc05hbWVcIiwgXCJleHBhbmRlZFwiLCBcInRpbGVNYXhIZWlnaHRcIiwgXCJ0aWxlUGFkZGluZ1wiLCBcImhhbmRsZUNsaWNrXCIsIFwib25LZXlVcFwiLCBcInRpbGVDb2xsYXBzZWRJY29uVGV4dFwiLCBcInRpbGVFeHBhbmRlZEljb25UZXh0XCIsIFwidGlsZUNvbGxhcHNlZExhYmVsXCIsIFwidGlsZUV4cGFuZGVkTGFiZWxcIiwgXCJvbkJlZm9yZUNsaWNrXCIsIFwibGlnaHRcIl07XG52YXIgVGlsZSA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoX0NvbXBvbmVudCkge1xuICBfaW5oZXJpdHMoVGlsZSwgX0NvbXBvbmVudCk7XG5cbiAgdmFyIF9zdXBlciA9IF9jcmVhdGVTdXBlcihUaWxlKTtcblxuICBmdW5jdGlvbiBUaWxlKCkge1xuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBUaWxlKTtcblxuICAgIHJldHVybiBfc3VwZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgfVxuXG4gIF9jcmVhdGVDbGFzcyhUaWxlLCBbe1xuICAgIGtleTogXCJyZW5kZXJcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcmVuZGVyKCkge1xuICAgICAgdmFyIHByZWZpeCA9IHRoaXMuY29udGV4dDtcblxuICAgICAgdmFyIF90aGlzJHByb3BzID0gdGhpcy5wcm9wcyxcbiAgICAgICAgICBjaGlsZHJlbiA9IF90aGlzJHByb3BzLmNoaWxkcmVuLFxuICAgICAgICAgIGNsYXNzTmFtZSA9IF90aGlzJHByb3BzLmNsYXNzTmFtZSxcbiAgICAgICAgICBsaWdodCA9IF90aGlzJHByb3BzLmxpZ2h0LFxuICAgICAgICAgIHJlc3QgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMoX3RoaXMkcHJvcHMsIF9leGNsdWRlZCk7XG5cbiAgICAgIHZhciB0aWxlQ2xhc3NlcyA9IGN4KFwiXCIuY29uY2F0KHByZWZpeCwgXCItLXRpbGVcIiksIF9kZWZpbmVQcm9wZXJ0eSh7fSwgXCJcIi5jb25jYXQocHJlZml4LCBcIi0tdGlsZS0tbGlnaHRcIiksIGxpZ2h0KSwgY2xhc3NOYW1lKTtcbiAgICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3RfX2RlZmF1bHQuY3JlYXRlRWxlbWVudChcImRpdlwiLCBfZXh0ZW5kcyh7XG4gICAgICAgIGNsYXNzTmFtZTogdGlsZUNsYXNzZXNcbiAgICAgIH0sIHJlc3QpLCBjaGlsZHJlbik7XG4gICAgfVxuICB9XSk7XG5cbiAgcmV0dXJuIFRpbGU7XG59KENvbXBvbmVudCk7XG5cbl9kZWZpbmVQcm9wZXJ0eShUaWxlLCBcInByb3BUeXBlc1wiLCB7XG4gIC8qKlxuICAgKiBUaGUgY2hpbGQgbm9kZXMuXG4gICAqL1xuICBjaGlsZHJlbjogUHJvcFR5cGVzLm5vZGUsXG5cbiAgLyoqXG4gICAqIFRoZSBDU1MgY2xhc3MgbmFtZXMuXG4gICAqL1xuICBjbGFzc05hbWU6IFByb3BUeXBlcy5zdHJpbmcsXG5cbiAgLyoqXG4gICAqIGB0cnVlYCB0byB1c2UgdGhlIGxpZ2h0IHZlcnNpb24uIEZvciB1c2Ugb24gJHVpLTAxIGJhY2tncm91bmRzIG9ubHkuXG4gICAqIERvbid0IHVzZSB0aGlzIHRvIG1ha2UgdGlsZSBiYWNrZ3JvdW5kIGNvbG9yIHNhbWUgYXMgY29udGFpbmVyIGJhY2tncm91bmQgY29sb3IuXG4gICAqL1xuICBsaWdodDogUHJvcFR5cGVzLmJvb2xcbn0pO1xuXG5fZGVmaW5lUHJvcGVydHkoVGlsZSwgXCJjb250ZXh0VHlwZVwiLCBQcmVmaXhDb250ZXh0KTtcblxuX2RlZmluZVByb3BlcnR5KFRpbGUsIFwiZGVmYXVsdFByb3BzXCIsIHtcbiAgbGlnaHQ6IGZhbHNlXG59KTtcblxudmFyIENsaWNrYWJsZVRpbGUgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKF9Db21wb25lbnQyKSB7XG4gIF9pbmhlcml0cyhDbGlja2FibGVUaWxlLCBfQ29tcG9uZW50Mik7XG5cbiAgdmFyIF9zdXBlcjIgPSBfY3JlYXRlU3VwZXIoQ2xpY2thYmxlVGlsZSk7XG5cbiAgZnVuY3Rpb24gQ2xpY2thYmxlVGlsZSgpIHtcbiAgICB2YXIgX3RoaXM7XG5cbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgQ2xpY2thYmxlVGlsZSk7XG5cbiAgICBmb3IgKHZhciBfbGVuID0gYXJndW1lbnRzLmxlbmd0aCwgYXJncyA9IG5ldyBBcnJheShfbGVuKSwgX2tleSA9IDA7IF9rZXkgPCBfbGVuOyBfa2V5KyspIHtcbiAgICAgIGFyZ3NbX2tleV0gPSBhcmd1bWVudHNbX2tleV07XG4gICAgfVxuXG4gICAgX3RoaXMgPSBfc3VwZXIyLmNhbGwuYXBwbHkoX3N1cGVyMiwgW3RoaXNdLmNvbmNhdChhcmdzKSk7XG5cbiAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcyksIFwic3RhdGVcIiwge30pO1xuXG4gICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpLCBcImhhbmRsZUNsaWNrXCIsIGZ1bmN0aW9uIChldnQpIHtcbiAgICAgIGV2dC5wZXJzaXN0KCk7XG5cbiAgICAgIF90aGlzLnNldFN0YXRlKHtcbiAgICAgICAgY2xpY2tlZDogIV90aGlzLnN0YXRlLmNsaWNrZWRcbiAgICAgIH0sIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIF90aGlzJHByb3BzJGhhbmRsZUNsaSwgX3RoaXMkcHJvcHMyLCBfdGhpcyRwcm9wcyRvbkNsaWNrLCBfdGhpcyRwcm9wczM7XG5cbiAgICAgICAgLy8gVE9ETzogUmVtb3ZlIGhhbmRsZUNsaWNrIHByb3Agd2hlbiBoYW5kbGVDbGljayBpcyBkZXByZWNhdGVkXG4gICAgICAgICgoX3RoaXMkcHJvcHMkaGFuZGxlQ2xpID0gKF90aGlzJHByb3BzMiA9IF90aGlzLnByb3BzKS5oYW5kbGVDbGljaykgPT09IG51bGwgfHwgX3RoaXMkcHJvcHMkaGFuZGxlQ2xpID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfdGhpcyRwcm9wcyRoYW5kbGVDbGkuY2FsbChfdGhpcyRwcm9wczIsIGV2dCkpIHx8ICgoX3RoaXMkcHJvcHMkb25DbGljayA9IChfdGhpcyRwcm9wczMgPSBfdGhpcy5wcm9wcykub25DbGljaykgPT09IG51bGwgfHwgX3RoaXMkcHJvcHMkb25DbGljayA9PT0gdm9pZCAwID8gdm9pZCAwIDogX3RoaXMkcHJvcHMkb25DbGljay5jYWxsKF90aGlzJHByb3BzMywgZXZ0KSk7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSwgXCJoYW5kbGVLZXlEb3duXCIsIGZ1bmN0aW9uIChldnQpIHtcbiAgICAgIGV2dC5wZXJzaXN0KCk7XG5cbiAgICAgIGlmIChtYXRjaGVzKGV2dCwgW0VudGVyLCBTcGFjZV0pKSB7XG4gICAgICAgIF90aGlzLnNldFN0YXRlKHtcbiAgICAgICAgICBjbGlja2VkOiAhX3RoaXMuc3RhdGUuY2xpY2tlZFxuICAgICAgICB9LCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgdmFyIF90aGlzJHByb3BzJGhhbmRsZUtleSwgX3RoaXMkcHJvcHM0O1xuXG4gICAgICAgICAgLy8gVE9ETzogUmVtb3ZlIGhhbmRsZUtleURvd24gcHJvcCB3aGVuIGhhbmRsZUtleURvd24gaXMgZGVwcmVjYXRlZFxuICAgICAgICAgICgoX3RoaXMkcHJvcHMkaGFuZGxlS2V5ID0gKF90aGlzJHByb3BzNCA9IF90aGlzLnByb3BzKS5oYW5kbGVLZXlEb3duKSA9PT0gbnVsbCB8fCBfdGhpcyRwcm9wcyRoYW5kbGVLZXkgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF90aGlzJHByb3BzJGhhbmRsZUtleS5jYWxsKF90aGlzJHByb3BzNCwgZXZ0KSkgfHwgX3RoaXMucHJvcHMub25LZXlEb3duKGV2dCk7XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdmFyIF90aGlzJHByb3BzJGhhbmRsZUtleTIsIF90aGlzJHByb3BzNTtcblxuICAgICAgICAvLyBUT0RPOiBSZW1vdmUgaGFuZGxlS2V5RG93biBwcm9wIHdoZW4gaGFuZGxlS2V5RG93biBpcyBkZXByZWNhdGVkXG4gICAgICAgICgoX3RoaXMkcHJvcHMkaGFuZGxlS2V5MiA9IChfdGhpcyRwcm9wczUgPSBfdGhpcy5wcm9wcykuaGFuZGxlS2V5RG93bikgPT09IG51bGwgfHwgX3RoaXMkcHJvcHMkaGFuZGxlS2V5MiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX3RoaXMkcHJvcHMkaGFuZGxlS2V5Mi5jYWxsKF90aGlzJHByb3BzNSwgZXZ0KSkgfHwgX3RoaXMucHJvcHMub25LZXlEb3duKGV2dCk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gX3RoaXM7XG4gIH1cblxuICBfY3JlYXRlQ2xhc3MoQ2xpY2thYmxlVGlsZSwgW3tcbiAgICBrZXk6IFwicmVuZGVyXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHJlbmRlcigpIHtcbiAgICAgIHZhciBfY3gyO1xuXG4gICAgICB2YXIgcHJlZml4ID0gdGhpcy5jb250ZXh0O1xuXG4gICAgICB2YXIgX3RoaXMkcHJvcHM2ID0gdGhpcy5wcm9wcyxcbiAgICAgICAgICBjaGlsZHJlbiA9IF90aGlzJHByb3BzNi5jaGlsZHJlbixcbiAgICAgICAgICBocmVmID0gX3RoaXMkcHJvcHM2LmhyZWYsXG4gICAgICAgICAgY2xhc3NOYW1lID0gX3RoaXMkcHJvcHM2LmNsYXNzTmFtZTtcbiAgICAgICAgICBfdGhpcyRwcm9wczYuaGFuZGxlQ2xpY2s7XG4gICAgICAgICAgX3RoaXMkcHJvcHM2LmhhbmRsZUtleURvd247XG4gICAgICAgICAgX3RoaXMkcHJvcHM2Lm9uQ2xpY2s7XG4gICAgICAgICAgX3RoaXMkcHJvcHM2Lm9uS2V5RG93bjtcbiAgICAgICAgICBfdGhpcyRwcm9wczYuY2xpY2tlZDtcbiAgICAgICAgICB2YXIgbGlnaHQgPSBfdGhpcyRwcm9wczYubGlnaHQsXG4gICAgICAgICAgcmVzdCA9IF9vYmplY3RXaXRob3V0UHJvcGVydGllcyhfdGhpcyRwcm9wczYsIF9leGNsdWRlZDIpO1xuXG4gICAgICB2YXIgY2xhc3NlcyA9IGN4KFwiXCIuY29uY2F0KHByZWZpeCwgXCItLXRpbGVcIiksIFwiXCIuY29uY2F0KHByZWZpeCwgXCItLXRpbGUtLWNsaWNrYWJsZVwiKSwgKF9jeDIgPSB7fSwgX2RlZmluZVByb3BlcnR5KF9jeDIsIFwiXCIuY29uY2F0KHByZWZpeCwgXCItLXRpbGUtLWlzLWNsaWNrZWRcIiksIHRoaXMuc3RhdGUuY2xpY2tlZCksIF9kZWZpbmVQcm9wZXJ0eShfY3gyLCBcIlwiLmNvbmNhdChwcmVmaXgsIFwiLS10aWxlLS1saWdodFwiKSwgbGlnaHQpLCBfY3gyKSwgY2xhc3NOYW1lKTtcbiAgICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3RfX2RlZmF1bHQuY3JlYXRlRWxlbWVudChMaW5rLCBfZXh0ZW5kcyh7XG4gICAgICAgIGhyZWY6IGhyZWYsXG4gICAgICAgIGNsYXNzTmFtZTogY2xhc3Nlc1xuICAgICAgfSwgcmVzdCwge1xuICAgICAgICBvbkNsaWNrOiB0aGlzLmhhbmRsZUNsaWNrLFxuICAgICAgICBvbktleURvd246IHRoaXMuaGFuZGxlS2V5RG93blxuICAgICAgfSksIGNoaWxkcmVuKTtcbiAgICB9XG4gIH1dLCBbe1xuICAgIGtleTogXCJnZXREZXJpdmVkU3RhdGVGcm9tUHJvcHNcIixcbiAgICB2YWx1ZTogLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0L3Byb3AtdHlwZXNcbiAgICBmdW5jdGlvbiBnZXREZXJpdmVkU3RhdGVGcm9tUHJvcHMoX3JlZiwgc3RhdGUpIHtcbiAgICAgIHZhciBjbGlja2VkID0gX3JlZi5jbGlja2VkO1xuICAgICAgdmFyIHByZXZDbGlja2VkID0gc3RhdGUucHJldkNsaWNrZWQ7XG4gICAgICByZXR1cm4gcHJldkNsaWNrZWQgPT09IGNsaWNrZWQgPyBudWxsIDoge1xuICAgICAgICBjbGlja2VkOiBjbGlja2VkLFxuICAgICAgICBwcmV2Q2xpY2tlZDogY2xpY2tlZFxuICAgICAgfTtcbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gQ2xpY2thYmxlVGlsZTtcbn0oQ29tcG9uZW50KTtcblxuX2RlZmluZVByb3BlcnR5KENsaWNrYWJsZVRpbGUsIFwicHJvcFR5cGVzXCIsIHtcbiAgLyoqXG4gICAqIFRoZSBjaGlsZCBub2Rlcy5cbiAgICovXG4gIGNoaWxkcmVuOiBQcm9wVHlwZXMubm9kZSxcblxuICAvKipcbiAgICogVGhlIENTUyBjbGFzcyBuYW1lcy5cbiAgICovXG4gIGNsYXNzTmFtZTogUHJvcFR5cGVzLnN0cmluZyxcblxuICAvKipcbiAgICogRGVwcmVjYXRlZCBpbiB2MTEuIFVzZSAnb25DbGljaycgaW5zdGVhZC5cbiAgICovXG4gIGhhbmRsZUNsaWNrOiBkZXByZWNhdGUoUHJvcFR5cGVzLmZ1bmMsICdUaGUgaGFuZGxlQ2xpY2sgcHJvcCBmb3IgQ2xpY2thYmxlVGlsZSBoYXMgYmVlbiBkZXByZWNhdGVkIGluIGZhdm9yIG9mIG9uQ2xpY2suIEl0IHdpbGwgYmUgcmVtb3ZlZCBpbiB0aGUgbmV4dCBtYWpvciByZWxlYXNlLicpLFxuXG4gIC8qKlxuICAgKiBTcGVjaWZ5IHRoZSBmdW5jdGlvbiB0byBydW4gd2hlbiB0aGUgQ2xpY2thYmxlVGlsZSBpcyBpbnRlcmFjdGVkIHdpdGggdmlhIGEga2V5Ym9hcmRcbiAgICovXG4gIGhhbmRsZUtleURvd246IGRlcHJlY2F0ZShQcm9wVHlwZXMuZnVuYywgJ1RoZSBoYW5kbGVLZXlEb3duIHByb3AgZm9yIENsaWNrYWJsZVRpbGUgaGFzIGJlZW4gZGVwcmVjYXRlZCBpbiBmYXZvciBvZiBvbktleURvd24uIEl0IHdpbGwgYmUgcmVtb3ZlZCBpbiB0aGUgbmV4dCBtYWpvciByZWxlYXNlLicpLFxuXG4gIC8qKlxuICAgKiBUaGUgaHJlZiBmb3IgdGhlIGxpbmsuXG4gICAqL1xuICBocmVmOiBQcm9wVHlwZXMuc3RyaW5nLFxuXG4gIC8qKlxuICAgKiBgdHJ1ZWAgdG8gdXNlIHRoZSBsaWdodCB2ZXJzaW9uLiBGb3IgdXNlIG9uICR1aS0wMSBiYWNrZ3JvdW5kcyBvbmx5LlxuICAgKiBEb24ndCB1c2UgdGhpcyB0byBtYWtlIHRpbGUgYmFja2dyb3VuZCBjb2xvciBzYW1lIGFzIGNvbnRhaW5lciBiYWNrZ3JvdW5kIGNvbG9yLlxuICAgKi9cbiAgbGlnaHQ6IFByb3BUeXBlcy5ib29sLFxuXG4gIC8qKlxuICAgKiBTcGVjaWZ5IHRoZSBmdW5jdGlvbiB0byBydW4gd2hlbiB0aGUgQ2xpY2thYmxlVGlsZSBpcyBjbGlja2VkXG4gICAqL1xuICBvbkNsaWNrOiBQcm9wVHlwZXMuZnVuYyxcblxuICAvKipcbiAgICogU3BlY2lmeSB0aGUgZnVuY3Rpb24gdG8gcnVuIHdoZW4gdGhlIENsaWNrYWJsZVRpbGUgaXMgaW50ZXJhY3RlZCB3aXRoIHZpYSBhIGtleWJvYXJkXG4gICAqL1xuICBvbktleURvd246IFByb3BUeXBlcy5mdW5jLFxuXG4gIC8qKlxuICAgKiBUaGUgcmVsIHByb3BlcnR5IGZvciB0aGUgbGluay5cbiAgICovXG4gIHJlbDogUHJvcFR5cGVzLnN0cmluZ1xufSk7XG5cbl9kZWZpbmVQcm9wZXJ0eShDbGlja2FibGVUaWxlLCBcImNvbnRleHRUeXBlXCIsIFByZWZpeENvbnRleHQpO1xuXG5fZGVmaW5lUHJvcGVydHkoQ2xpY2thYmxlVGlsZSwgXCJkZWZhdWx0UHJvcHNcIiwge1xuICBjbGlja2VkOiBmYWxzZSxcbiAgb25DbGljazogZnVuY3Rpb24gb25DbGljaygpIHt9LFxuICBvbktleURvd246IGZ1bmN0aW9uIG9uS2V5RG93bigpIHt9LFxuICBsaWdodDogZmFsc2Vcbn0pO1xuXG5mdW5jdGlvbiBTZWxlY3RhYmxlVGlsZShwcm9wcykge1xuICB2YXIgX2N4MztcblxuICB2YXIgY2hpbGRyZW4gPSBwcm9wcy5jaGlsZHJlbixcbiAgICAgIGlkID0gcHJvcHMuaWQsXG4gICAgICB0YWJJbmRleCA9IHByb3BzLnRhYkluZGV4LFxuICAgICAgdmFsdWUgPSBwcm9wcy52YWx1ZSxcbiAgICAgIG5hbWUgPSBwcm9wcy5uYW1lLFxuICAgICAgdGl0bGUgPSBwcm9wcy50aXRsZTtcbiAgICAgIHByb3BzLmljb25EZXNjcmlwdGlvbjtcbiAgICAgIHZhciBjbGFzc05hbWUgPSBwcm9wcy5jbGFzc05hbWUsXG4gICAgICBoYW5kbGVDbGljayA9IHByb3BzLmhhbmRsZUNsaWNrLFxuICAgICAgaGFuZGxlS2V5RG93biA9IHByb3BzLmhhbmRsZUtleURvd24sXG4gICAgICBvbkNsaWNrID0gcHJvcHMub25DbGljayxcbiAgICAgIG9uQ2hhbmdlID0gcHJvcHMub25DaGFuZ2UsXG4gICAgICBvbktleURvd24gPSBwcm9wcy5vbktleURvd24sXG4gICAgICBsaWdodCA9IHByb3BzLmxpZ2h0LFxuICAgICAgZGlzYWJsZWQgPSBwcm9wcy5kaXNhYmxlZCxcbiAgICAgIHNlbGVjdGVkID0gcHJvcHMuc2VsZWN0ZWQsXG4gICAgICByZXN0ID0gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzKHByb3BzLCBfZXhjbHVkZWQzKTtcblxuICB2YXIgcHJlZml4ID0gdXNlUHJlZml4KCk7IC8vIFRPRE86IHJlcGxhY2Ugd2l0aCBvbkNsaWNrIHdoZW4gaGFuZGxlQ2xpY2sgcHJvcCBpcyBkZXByZWNhdGVkXG5cbiAgdmFyIGNsaWNrSGFuZGxlciA9IGhhbmRsZUNsaWNrIHx8IG9uQ2xpY2s7IC8vIFRPRE86IHJlcGxhY2Ugd2l0aCBvbktleURvd24gd2hlbiBoYW5kbGVLZXlEb3duIHByb3AgaXMgZGVwcmVjYXRlZFxuXG4gIHZhciBrZXlEb3duSGFuZGxlciA9IGhhbmRsZUtleURvd24gfHwgb25LZXlEb3duO1xuXG4gIHZhciBfdXNlU3RhdGUgPSB1c2VTdGF0ZShzZWxlY3RlZCksXG4gICAgICBfdXNlU3RhdGUyID0gX3NsaWNlZFRvQXJyYXkoX3VzZVN0YXRlLCAyKSxcbiAgICAgIGlzU2VsZWN0ZWQgPSBfdXNlU3RhdGUyWzBdLFxuICAgICAgc2V0SXNTZWxlY3RlZCA9IF91c2VTdGF0ZTJbMV07XG5cbiAgdmFyIGlucHV0ID0gdXNlUmVmKG51bGwpO1xuICB2YXIgY2xhc3NlcyA9IGN4KFwiXCIuY29uY2F0KHByZWZpeCwgXCItLXRpbGVcIiksIFwiXCIuY29uY2F0KHByZWZpeCwgXCItLXRpbGUtLXNlbGVjdGFibGVcIiksIChfY3gzID0ge30sIF9kZWZpbmVQcm9wZXJ0eShfY3gzLCBcIlwiLmNvbmNhdChwcmVmaXgsIFwiLS10aWxlLS1pcy1zZWxlY3RlZFwiKSwgaXNTZWxlY3RlZCksIF9kZWZpbmVQcm9wZXJ0eShfY3gzLCBcIlwiLmNvbmNhdChwcmVmaXgsIFwiLS10aWxlLS1saWdodFwiKSwgbGlnaHQpLCBfZGVmaW5lUHJvcGVydHkoX2N4MywgXCJcIi5jb25jYXQocHJlZml4LCBcIi0tdGlsZS0tZGlzYWJsZWRcIiksIGRpc2FibGVkKSwgX2N4MyksIGNsYXNzTmFtZSk7XG4gIHZhciBpbnB1dENsYXNzZXMgPSBjeChcIlwiLmNvbmNhdChwcmVmaXgsIFwiLS10aWxlLWlucHV0XCIpLCBfZGVmaW5lUHJvcGVydHkoe30sIFwiXCIuY29uY2F0KHByZWZpeCwgXCItLXRpbGUtaW5wdXQtLWNoZWNrZWRcIiksIGlzU2VsZWN0ZWQpKTsgLy8gVE9ETzogcmVuYW1lIHRvIGhhbmRsZUNsaWNrIHdoZW4gaGFuZGxlQ2xpY2sgcHJvcCBpcyBkZXByZWNhdGVkXG5cbiAgZnVuY3Rpb24gaGFuZGxlT25DbGljayhldnQpIHtcbiAgICBldnQucHJldmVudERlZmF1bHQoKTtcbiAgICBldnQucGVyc2lzdCgpO1xuICAgIHNldElzU2VsZWN0ZWQoIWlzU2VsZWN0ZWQpO1xuICAgIGNsaWNrSGFuZGxlcihldnQpO1xuICAgIG9uQ2hhbmdlKGV2dCk7XG4gIH0gLy8gVE9ETzogcmVuYW1lIHRvIGhhbmRsZUtleURvd24gd2hlbiBoYW5kbGVLZXlEb3duIHByb3AgaXMgZGVwcmVjYXRlZFxuXG5cbiAgZnVuY3Rpb24gaGFuZGxlT25LZXlEb3duKGV2dCkge1xuICAgIGV2dC5wZXJzaXN0KCk7XG5cbiAgICBpZiAobWF0Y2hlcyhldnQsIFtFbnRlciwgU3BhY2VdKSkge1xuICAgICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICBzZXRJc1NlbGVjdGVkKCFpc1NlbGVjdGVkKTtcbiAgICAgIG9uQ2hhbmdlKGV2dCk7XG4gICAgfVxuXG4gICAga2V5RG93bkhhbmRsZXIoZXZ0KTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGhhbmRsZUNoYW5nZShldmVudCkge1xuICAgIHNldElzU2VsZWN0ZWQoZXZlbnQudGFyZ2V0LmNoZWNrZWQpO1xuICAgIG9uQ2hhbmdlKGV2ZW50KTtcbiAgfVxuXG4gIHVzZUVmZmVjdChmdW5jdGlvbiAoKSB7XG4gICAgc2V0SXNTZWxlY3RlZChzZWxlY3RlZCk7XG4gIH0sIFtzZWxlY3RlZF0pO1xuICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0X19kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoUmVhY3RfX2RlZmF1bHQuRnJhZ21lbnQsIG51bGwsIC8qI19fUFVSRV9fKi9SZWFjdF9fZGVmYXVsdC5jcmVhdGVFbGVtZW50KFwiaW5wdXRcIiwge1xuICAgIHJlZjogaW5wdXQsXG4gICAgdGFiSW5kZXg6IC0xLFxuICAgIGlkOiBpZCxcbiAgICBjbGFzc05hbWU6IGlucHV0Q2xhc3NlcyxcbiAgICB2YWx1ZTogdmFsdWUsXG4gICAgb25DaGFuZ2U6ICFkaXNhYmxlZCA/IGhhbmRsZUNoYW5nZSA6IG51bGwsXG4gICAgdHlwZTogXCJjaGVja2JveFwiLFxuICAgIGRpc2FibGVkOiBkaXNhYmxlZCxcbiAgICBuYW1lOiBuYW1lLFxuICAgIHRpdGxlOiB0aXRsZSxcbiAgICBjaGVja2VkOiBpc1NlbGVjdGVkXG4gIH0pLCAvKiNfX1BVUkVfXyovUmVhY3RfX2RlZmF1bHQuY3JlYXRlRWxlbWVudChcImxhYmVsXCIsIF9leHRlbmRzKHtcbiAgICBodG1sRm9yOiBpZCxcbiAgICBjbGFzc05hbWU6IGNsYXNzZXMgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzeC1hMTF5L25vLW5vbmludGVyYWN0aXZlLXRhYmluZGV4XG4gICAgLFxuICAgIHRhYkluZGV4OiAhZGlzYWJsZWQgPyB0YWJJbmRleCA6IG51bGxcbiAgfSwgcmVzdCwge1xuICAgIG9uQ2xpY2s6ICFkaXNhYmxlZCA/IGhhbmRsZU9uQ2xpY2sgOiBudWxsLFxuICAgIG9uS2V5RG93bjogIWRpc2FibGVkID8gaGFuZGxlT25LZXlEb3duIDogbnVsbFxuICB9KSwgLyojX19QVVJFX18qL1JlYWN0X19kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoXCJzcGFuXCIsIHtcbiAgICBjbGFzc05hbWU6IFwiXCIuY29uY2F0KHByZWZpeCwgXCItLXRpbGVfX2NoZWNrbWFyayBcIikuY29uY2F0KHByZWZpeCwgXCItLXRpbGVfX2NoZWNrbWFyay0tcGVyc2lzdGVudFwiKVxuICB9LCBpc1NlbGVjdGVkID8gX0NoZWNrYm94Q2hlY2tlZEZpbGxlIHx8IChfQ2hlY2tib3hDaGVja2VkRmlsbGUgPSAvKiNfX1BVUkVfXyovUmVhY3RfX2RlZmF1bHQuY3JlYXRlRWxlbWVudChDaGVja2JveENoZWNrZWRGaWxsZWQsIG51bGwpKSA6IF9DaGVja2JveCB8fCAoX0NoZWNrYm94ID0gLyojX19QVVJFX18qL1JlYWN0X19kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoQ2hlY2tib3gsIG51bGwpKSksIC8qI19fUFVSRV9fKi9SZWFjdF9fZGVmYXVsdC5jcmVhdGVFbGVtZW50KFwic3BhblwiLCB7XG4gICAgY2xhc3NOYW1lOiBcIlwiLmNvbmNhdChwcmVmaXgsIFwiLS10aWxlLWNvbnRlbnRcIilcbiAgfSwgY2hpbGRyZW4pKSk7XG59XG5TZWxlY3RhYmxlVGlsZS5kZWZhdWx0UHJvcHMgPSB7XG4gIHZhbHVlOiAndmFsdWUnLFxuICB0aXRsZTogJ3RpdGxlJyxcbiAgc2VsZWN0ZWQ6IGZhbHNlLFxuICB0YWJJbmRleDogMCxcbiAgbGlnaHQ6IGZhbHNlLFxuICBvbkNsaWNrOiBmdW5jdGlvbiBvbkNsaWNrKCkge30sXG4gIG9uQ2hhbmdlOiBmdW5jdGlvbiBvbkNoYW5nZSgpIHt9LFxuICBvbktleURvd246IGZ1bmN0aW9uIG9uS2V5RG93bigpIHt9XG59O1xuU2VsZWN0YWJsZVRpbGUucHJvcFR5cGVzID0ge1xuICAvKipcbiAgICogVGhlIGNoaWxkIG5vZGVzLlxuICAgKi9cbiAgY2hpbGRyZW46IFByb3BUeXBlcy5ub2RlLFxuXG4gIC8qKlxuICAgKiBUaGUgQ1NTIGNsYXNzIG5hbWVzLlxuICAgKi9cbiAgY2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuXG4gIC8qKlxuICAgKiBTcGVjaWZ5IHdoZXRoZXIgdGhlIFNlbGVjdGFibGVUaWxlIHNob3VsZCBiZSBkaXNhYmxlZFxuICAgKi9cbiAgZGlzYWJsZWQ6IFByb3BUeXBlcy5ib29sLFxuXG4gIC8qKlxuICAgKiBTcGVjaWZ5IHRoZSBmdW5jdGlvbiB0byBydW4gd2hlbiB0aGUgU2VsZWN0YWJsZVRpbGUgaXMgY2xpY2tlZFxuICAgKi9cbiAgaGFuZGxlQ2xpY2s6IGRlcHJlY2F0ZShQcm9wVHlwZXMuZnVuYywgJ1RoZSBgaGFuZGxlQ2xpY2tgIHByb3AgZm9yIGBTZWxlY3RhYmxlVGlsZWAgaGFzIGJlZW4gZGVwcmVjYXRlZCBpbiBmYXZvciBvZiBgb25DbGlja2AuIEl0IHdpbGwgYmUgcmVtb3ZlZCBpbiB0aGUgbmV4dCBtYWpvciByZWxlYXNlLicpLFxuXG4gIC8qKlxuICAgKiBTcGVjaWZ5IHRoZSBmdW5jdGlvbiB0byBydW4gd2hlbiB0aGUgU2VsZWN0YWJsZVRpbGUgaXMgaW50ZXJhY3RlZCB3aXRoIHZpYSBhIGtleWJvYXJkXG4gICAqL1xuICBoYW5kbGVLZXlEb3duOiBkZXByZWNhdGUoUHJvcFR5cGVzLmZ1bmMsICdUaGUgYGhhbmRsZUtleURvd25gIHByb3AgZm9yIGBTZWxlY3RhYmxlVGlsZWAgaGFzIGJlZW4gZGVwcmVjYXRlZCBpbiBmYXZvciBvZiBgb25LZXlEb3duYC4gSXQgd2lsbCBiZSByZW1vdmVkIGluIHRoZSBuZXh0IG1ham9yIHJlbGVhc2UuJyksXG5cbiAgLyoqXG4gICAqIFRoZSBkZXNjcmlwdGlvbiBvZiB0aGUgY2hlY2ttYXJrIGljb24uXG4gICAqL1xuICBpY29uRGVzY3JpcHRpb246IGRlcHJlY2F0ZShQcm9wVHlwZXMuc3RyaW5nLCAnVGhlIGBpY29uRGVzY3JpcHRpb25gIHByb3AgZm9yIGBTZWxlY3RhYmxlVGlsZWAgaXMgbm8gbG9uZ2VyIG5lZWRlZCBhbmQgaGFzICcgKyAnYmVlbiBkZXByZWNhdGVkLiBJdCB3aWxsIGJlIHJlbW92ZWQgaW4gdGhlIG5leHQgbWFqb3IgcmVsZWFzZS4nKSxcblxuICAvKipcbiAgICogVGhlIElEIG9mIHRoZSBgPGlucHV0PmAuXG4gICAqL1xuICBpZDogUHJvcFR5cGVzLnN0cmluZyxcblxuICAvKipcbiAgICogYHRydWVgIHRvIHVzZSB0aGUgbGlnaHQgdmVyc2lvbi4gRm9yIHVzZSBvbiAkdWktMDEgYmFja2dyb3VuZHMgb25seS5cbiAgICogRG9uJ3QgdXNlIHRoaXMgdG8gbWFrZSB0aWxlIGJhY2tncm91bmQgY29sb3Igc2FtZSBhcyBjb250YWluZXIgYmFja2dyb3VuZCBjb2xvci5cbiAgICovXG4gIGxpZ2h0OiBQcm9wVHlwZXMuYm9vbCxcblxuICAvKipcbiAgICogVGhlIGBuYW1lYCBvZiB0aGUgYDxpbnB1dD5gLlxuICAgKi9cbiAgbmFtZTogUHJvcFR5cGVzLnN0cmluZyxcblxuICAvKipcbiAgICogVGhlIGVtcHR5IGhhbmRsZXIgb2YgdGhlIGA8aW5wdXQ+YC5cbiAgICovXG4gIG9uQ2hhbmdlOiBQcm9wVHlwZXMuZnVuYyxcblxuICAvKipcbiAgICogU3BlY2lmeSB0aGUgZnVuY3Rpb24gdG8gcnVuIHdoZW4gdGhlIFNlbGVjdGFibGVUaWxlIGlzIGNsaWNrZWRcbiAgICovXG4gIG9uQ2xpY2s6IFByb3BUeXBlcy5mdW5jLFxuXG4gIC8qKlxuICAgKiBTcGVjaWZ5IHRoZSBmdW5jdGlvbiB0byBydW4gd2hlbiB0aGUgU2VsZWN0YWJsZVRpbGUgaXMgaW50ZXJhY3RlZCB3aXRoIHZpYSBhIGtleWJvYXJkXG4gICAqL1xuICBvbktleURvd246IFByb3BUeXBlcy5mdW5jLFxuXG4gIC8qKlxuICAgKiBgdHJ1ZWAgdG8gc2VsZWN0IHRoaXMgdGlsZS5cbiAgICovXG4gIHNlbGVjdGVkOiBQcm9wVHlwZXMuYm9vbCxcblxuICAvKipcbiAgICogU3BlY2lmeSB0aGUgdGFiIGluZGV4IG9mIHRoZSB3cmFwcGVyIGVsZW1lbnRcbiAgICovXG4gIHRhYkluZGV4OiBQcm9wVHlwZXMubnVtYmVyLFxuXG4gIC8qKlxuICAgKiBUaGUgYHRpdGxlYCBvZiB0aGUgYDxpbnB1dD5gLlxuICAgKi9cbiAgdGl0bGU6IFByb3BUeXBlcy5zdHJpbmcsXG5cbiAgLyoqXG4gICAqIFRoZSB2YWx1ZSBvZiB0aGUgYDxpbnB1dD5gLlxuICAgKi9cbiAgdmFsdWU6IFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5zdHJpbmcsIFByb3BUeXBlcy5udW1iZXJdKS5pc1JlcXVpcmVkXG59O1xudmFyIEV4cGFuZGFibGVUaWxlID0gLyojX19QVVJFX18qL2Z1bmN0aW9uIChfQ29tcG9uZW50Mykge1xuICBfaW5oZXJpdHMoRXhwYW5kYWJsZVRpbGUsIF9Db21wb25lbnQzKTtcblxuICB2YXIgX3N1cGVyMyA9IF9jcmVhdGVTdXBlcihFeHBhbmRhYmxlVGlsZSk7XG5cbiAgZnVuY3Rpb24gRXhwYW5kYWJsZVRpbGUoKSB7XG4gICAgdmFyIF90aGlzMjtcblxuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBFeHBhbmRhYmxlVGlsZSk7XG5cbiAgICBmb3IgKHZhciBfbGVuMiA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBuZXcgQXJyYXkoX2xlbjIpLCBfa2V5MiA9IDA7IF9rZXkyIDwgX2xlbjI7IF9rZXkyKyspIHtcbiAgICAgIGFyZ3NbX2tleTJdID0gYXJndW1lbnRzW19rZXkyXTtcbiAgICB9XG5cbiAgICBfdGhpczIgPSBfc3VwZXIzLmNhbGwuYXBwbHkoX3N1cGVyMywgW3RoaXNdLmNvbmNhdChhcmdzKSk7XG5cbiAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpczIpLCBcInN0YXRlXCIsIHt9KTtcblxuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzMiksIFwicmVzaXplT2JzZXJ2ZXJcIiwgbnVsbCk7XG5cbiAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpczIpLCBcImNvbXBvbmVudERpZE1vdW50XCIsIGZ1bmN0aW9uICgpIHtcbiAgICAgIF90aGlzMi5yZXNpemVPYnNlcnZlciA9IG5ldyBSZXNpemVPYnNlcnZlcihmdW5jdGlvbiAoZW50cmllcykge1xuICAgICAgICB2YXIgX2VudHJpZXMgPSBfc2xpY2VkVG9BcnJheShlbnRyaWVzLCAxKSxcbiAgICAgICAgICAgIGFib3ZlVGhlRm9sZCA9IF9lbnRyaWVzWzBdO1xuXG4gICAgICAgIF90aGlzMi5zZXRTdGF0ZSh7XG4gICAgICAgICAgdGlsZU1heEhlaWdodDogYWJvdmVUaGVGb2xkLmNvbnRlbnRSZWN0LmhlaWdodFxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuXG4gICAgICBpZiAoX3RoaXMyLnRpbGUpIHtcbiAgICAgICAgdmFyIGdldFN0eWxlID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUoX3RoaXMyLnRpbGUsIG51bGwpO1xuXG4gICAgICAgIGlmIChfdGhpczIuYWJvdmVUaGVGb2xkKSB7XG4gICAgICAgICAgX3RoaXMyLnJlc2l6ZU9ic2VydmVyLm9ic2VydmUoX3RoaXMyLmFib3ZlVGhlRm9sZCk7XG5cbiAgICAgICAgICBfdGhpczIuc2V0U3RhdGUoe1xuICAgICAgICAgICAgdGlsZU1heEhlaWdodDogX3RoaXMyLmFib3ZlVGhlRm9sZC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5oZWlnaHQsXG4gICAgICAgICAgICB0aWxlUGFkZGluZzogcGFyc2VJbnQoZ2V0U3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgncGFkZGluZy10b3AnKSwgMTApICsgcGFyc2VJbnQoZ2V0U3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgncGFkZGluZy1ib3R0b20nKSwgMTApXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcblxuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzMiksIFwiY29tcG9uZW50RGlkVXBkYXRlXCIsIGZ1bmN0aW9uIChwcmV2UHJvcHMpIHtcbiAgICAgIGlmIChwcmV2UHJvcHMuZXhwYW5kZWQgIT09IF90aGlzMi5wcm9wcy5leHBhbmRlZCkge1xuICAgICAgICBfdGhpczIuc2V0TWF4SGVpZ2h0KCk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpczIpLCBcInNldE1heEhlaWdodFwiLCBmdW5jdGlvbiAoKSB7XG4gICAgICBpZiAoX3RoaXMyLnN0YXRlLmV4cGFuZGVkID8gX3RoaXMyLnRpbGVDb250ZW50IDogX3RoaXMyLmFib3ZlVGhlRm9sZCkge1xuICAgICAgICBfdGhpczIuc2V0U3RhdGUoe1xuICAgICAgICAgIHRpbGVNYXhIZWlnaHQ6IF90aGlzMi5zdGF0ZS5leHBhbmRlZCA/IF90aGlzMi50aWxlQ29udGVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5oZWlnaHQgOiBfdGhpczIuYWJvdmVUaGVGb2xkLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmhlaWdodFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzMiksIFwiaGFuZGxlQ2xpY2tcIiwgZnVuY3Rpb24gKGV2dCkge1xuICAgICAgaWYgKCFfdGhpczIucHJvcHMub25CZWZvcmVDbGljayhldnQpIHx8IGV2dC50YXJnZXQudGFnTmFtZSA9PT0gJ0lOUFVUJykge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGV2dC5wZXJzaXN0KCk7XG5cbiAgICAgIF90aGlzMi5zZXRTdGF0ZSh7XG4gICAgICAgIGV4cGFuZGVkOiAhX3RoaXMyLnN0YXRlLmV4cGFuZGVkXG4gICAgICB9LCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBfdGhpczIkcHJvcHMkaGFuZGxlQ2wsIF90aGlzMiRwcm9wcywgX3RoaXMyJHByb3BzJG9uQ2xpY2ssIF90aGlzMiRwcm9wczI7XG5cbiAgICAgICAgX3RoaXMyLnNldE1heEhlaWdodCgpOyAvLyBUT0RPOiBSZW1vdmUgaGFuZGxlQ2xpY2sgcHJvcCB3aGVuIGhhbmRsZUNsaWNrIGlzIGRlcHJlY2F0ZWRcblxuXG4gICAgICAgICgoX3RoaXMyJHByb3BzJGhhbmRsZUNsID0gKF90aGlzMiRwcm9wcyA9IF90aGlzMi5wcm9wcykuaGFuZGxlQ2xpY2spID09PSBudWxsIHx8IF90aGlzMiRwcm9wcyRoYW5kbGVDbCA9PT0gdm9pZCAwID8gdm9pZCAwIDogX3RoaXMyJHByb3BzJGhhbmRsZUNsLmNhbGwoX3RoaXMyJHByb3BzLCBldnQpKSB8fCAoKF90aGlzMiRwcm9wcyRvbkNsaWNrID0gKF90aGlzMiRwcm9wczIgPSBfdGhpczIucHJvcHMpLm9uQ2xpY2spID09PSBudWxsIHx8IF90aGlzMiRwcm9wcyRvbkNsaWNrID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfdGhpczIkcHJvcHMkb25DbGljay5jYWxsKF90aGlzMiRwcm9wczIsIGV2dCkpO1xuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpczIpLCBcImhhbmRsZUtleVVwXCIsIGZ1bmN0aW9uIChldnQpIHtcbiAgICAgIGlmIChldnQudGFyZ2V0ICE9PSBfdGhpczIudGlsZSkge1xuICAgICAgICBpZiAobWF0Y2hlcyhldnQsIFtFbnRlciwgU3BhY2VdKSkge1xuICAgICAgICAgIGV2dC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpczIpLCBcImdldENoaWxkcmVuXCIsIGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiBSZWFjdF9fZGVmYXVsdC5DaGlsZHJlbi50b0FycmF5KF90aGlzMi5wcm9wcy5jaGlsZHJlbik7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gX3RoaXMyO1xuICB9XG5cbiAgX2NyZWF0ZUNsYXNzKEV4cGFuZGFibGVUaWxlLCBbe1xuICAgIGtleTogXCJjb21wb25lbnRXaWxsVW5tb3VudFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBjb21wb25lbnRXaWxsVW5tb3VudCgpIHtcbiAgICAgIGlmICh0aGlzLnJlc2l6ZU9ic2VydmVyKSB7XG4gICAgICAgIHRoaXMucmVzaXplT2JzZXJ2ZXIuZGlzY29ubmVjdCgpO1xuICAgICAgfVxuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJyZW5kZXJcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcmVuZGVyKCkge1xuICAgICAgdmFyIF9jeDUsXG4gICAgICAgICAgX3RoaXMzID0gdGhpcztcblxuICAgICAgdmFyIF90aGlzJHByb3BzNyA9IHRoaXMucHJvcHMsXG4gICAgICAgICAgdGFiSW5kZXggPSBfdGhpcyRwcm9wczcudGFiSW5kZXgsXG4gICAgICAgICAgY2xhc3NOYW1lID0gX3RoaXMkcHJvcHM3LmNsYXNzTmFtZTtcbiAgICAgICAgICBfdGhpcyRwcm9wczcuZXhwYW5kZWQ7XG4gICAgICAgICAgX3RoaXMkcHJvcHM3LnRpbGVNYXhIZWlnaHQ7XG4gICAgICAgICAgX3RoaXMkcHJvcHM3LnRpbGVQYWRkaW5nO1xuICAgICAgICAgIF90aGlzJHByb3BzNy5oYW5kbGVDbGljaztcbiAgICAgICAgICB2YXIgb25LZXlVcCA9IF90aGlzJHByb3BzNy5vbktleVVwLFxuICAgICAgICAgIHRpbGVDb2xsYXBzZWRJY29uVGV4dCA9IF90aGlzJHByb3BzNy50aWxlQ29sbGFwc2VkSWNvblRleHQsXG4gICAgICAgICAgdGlsZUV4cGFuZGVkSWNvblRleHQgPSBfdGhpcyRwcm9wczcudGlsZUV4cGFuZGVkSWNvblRleHQsXG4gICAgICAgICAgdGlsZUNvbGxhcHNlZExhYmVsID0gX3RoaXMkcHJvcHM3LnRpbGVDb2xsYXBzZWRMYWJlbCxcbiAgICAgICAgICB0aWxlRXhwYW5kZWRMYWJlbCA9IF90aGlzJHByb3BzNy50aWxlRXhwYW5kZWRMYWJlbDtcbiAgICAgICAgICBfdGhpcyRwcm9wczcub25CZWZvcmVDbGljaztcbiAgICAgICAgICB2YXIgbGlnaHQgPSBfdGhpcyRwcm9wczcubGlnaHQsXG4gICAgICAgICAgcmVzdCA9IF9vYmplY3RXaXRob3V0UHJvcGVydGllcyhfdGhpcyRwcm9wczcsIF9leGNsdWRlZDQpO1xuXG4gICAgICB2YXIgcHJlZml4ID0gdGhpcy5jb250ZXh0O1xuICAgICAgdmFyIGlzRXhwYW5kZWQgPSB0aGlzLnN0YXRlLmV4cGFuZGVkO1xuICAgICAgdmFyIGNsYXNzZXMgPSBjeChcIlwiLmNvbmNhdChwcmVmaXgsIFwiLS10aWxlXCIpLCBcIlwiLmNvbmNhdChwcmVmaXgsIFwiLS10aWxlLS1leHBhbmRhYmxlXCIpLCAoX2N4NSA9IHt9LCBfZGVmaW5lUHJvcGVydHkoX2N4NSwgXCJcIi5jb25jYXQocHJlZml4LCBcIi0tdGlsZS0taXMtZXhwYW5kZWRcIiksIGlzRXhwYW5kZWQpLCBfZGVmaW5lUHJvcGVydHkoX2N4NSwgXCJcIi5jb25jYXQocHJlZml4LCBcIi0tdGlsZS0tbGlnaHRcIiksIGxpZ2h0KSwgX2N4NSksIGNsYXNzTmFtZSk7XG4gICAgICB2YXIgdGlsZVN0eWxlID0ge1xuICAgICAgICBtYXhIZWlnaHQ6IGlzRXhwYW5kZWQgPyBudWxsIDogdGhpcy5zdGF0ZS50aWxlTWF4SGVpZ2h0ICsgdGhpcy5zdGF0ZS50aWxlUGFkZGluZ1xuICAgICAgfTtcbiAgICAgIHZhciBjaGlsZHJlbkFzQXJyYXkgPSB0aGlzLmdldENoaWxkcmVuKCk7XG4gICAgICByZXR1cm4gKFxuICAgICAgICAvKiNfX1BVUkVfXyovXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc3gtYTExeS9jbGljay1ldmVudHMtaGF2ZS1rZXktZXZlbnRzLGpzeC1hMTF5L25vLXN0YXRpYy1lbGVtZW50LWludGVyYWN0aW9uc1xuICAgICAgICBSZWFjdF9fZGVmYXVsdC5jcmVhdGVFbGVtZW50KFwiYnV0dG9uXCIsIF9leHRlbmRzKHtcbiAgICAgICAgICB0eXBlOiBcImJ1dHRvblwiLFxuICAgICAgICAgIHJlZjogZnVuY3Rpb24gcmVmKHRpbGUpIHtcbiAgICAgICAgICAgIF90aGlzMy50aWxlID0gdGlsZTtcbiAgICAgICAgICB9LFxuICAgICAgICAgIHN0eWxlOiB0aWxlU3R5bGUsXG4gICAgICAgICAgY2xhc3NOYW1lOiBjbGFzc2VzLFxuICAgICAgICAgIFwiYXJpYS1leHBhbmRlZFwiOiBpc0V4cGFuZGVkLFxuICAgICAgICAgIHRpdGxlOiBpc0V4cGFuZGVkID8gdGlsZUV4cGFuZGVkSWNvblRleHQgOiB0aWxlQ29sbGFwc2VkSWNvblRleHRcbiAgICAgICAgfSwgcmVzdCwge1xuICAgICAgICAgIG9uS2V5VXA6IGNvbXBvc2VFdmVudEhhbmRsZXJzKFtvbktleVVwLCB0aGlzLmhhbmRsZUtleVVwXSksXG4gICAgICAgICAgb25DbGljazogdGhpcy5oYW5kbGVDbGljayxcbiAgICAgICAgICB0YWJJbmRleDogdGFiSW5kZXhcbiAgICAgICAgfSksIC8qI19fUFVSRV9fKi9SZWFjdF9fZGVmYXVsdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHtcbiAgICAgICAgICByZWY6IGZ1bmN0aW9uIHJlZih0aWxlQ29udGVudCkge1xuICAgICAgICAgICAgX3RoaXMzLnRpbGVDb250ZW50ID0gdGlsZUNvbnRlbnQ7XG4gICAgICAgICAgfVxuICAgICAgICB9LCAvKiNfX1BVUkVfXyovUmVhY3RfX2RlZmF1bHQuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7XG4gICAgICAgICAgcmVmOiBmdW5jdGlvbiByZWYoYWJvdmVUaGVGb2xkKSB7XG4gICAgICAgICAgICBfdGhpczMuYWJvdmVUaGVGb2xkID0gYWJvdmVUaGVGb2xkO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgY2xhc3NOYW1lOiBcIlwiLmNvbmNhdChwcmVmaXgsIFwiLS10aWxlLWNvbnRlbnRcIilcbiAgICAgICAgfSwgY2hpbGRyZW5Bc0FycmF5WzBdKSwgLyojX19QVVJFX18qL1JlYWN0X19kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwge1xuICAgICAgICAgIGNsYXNzTmFtZTogXCJcIi5jb25jYXQocHJlZml4LCBcIi0tdGlsZV9fY2hldnJvblwiKVxuICAgICAgICB9LCAvKiNfX1BVUkVfXyovUmVhY3RfX2RlZmF1bHQuY3JlYXRlRWxlbWVudChcInNwYW5cIiwgbnVsbCwgaXNFeHBhbmRlZCA/IHRpbGVFeHBhbmRlZExhYmVsIDogdGlsZUNvbGxhcHNlZExhYmVsKSwgX0NoZXZyb25Eb3duIHx8IChfQ2hldnJvbkRvd24gPSAvKiNfX1BVUkVfXyovUmVhY3RfX2RlZmF1bHQuY3JlYXRlRWxlbWVudChDaGV2cm9uRG93biwgbnVsbCkpKSwgLyojX19QVVJFX18qL1JlYWN0X19kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwge1xuICAgICAgICAgIGNsYXNzTmFtZTogXCJcIi5jb25jYXQocHJlZml4LCBcIi0tdGlsZS1jb250ZW50XCIpXG4gICAgICAgIH0sIGNoaWxkcmVuQXNBcnJheVsxXSkpKVxuICAgICAgKTtcbiAgICB9XG4gIH1dLCBbe1xuICAgIGtleTogXCJnZXREZXJpdmVkU3RhdGVGcm9tUHJvcHNcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzKCAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QvcHJvcC10eXBlc1xuICAgIF9yZWYyLCBzdGF0ZSkge1xuICAgICAgdmFyIGV4cGFuZGVkID0gX3JlZjIuZXhwYW5kZWQsXG4gICAgICAgICAgdGlsZU1heEhlaWdodCA9IF9yZWYyLnRpbGVNYXhIZWlnaHQsXG4gICAgICAgICAgdGlsZVBhZGRpbmcgPSBfcmVmMi50aWxlUGFkZGluZztcbiAgICAgIHZhciBwcmV2RXhwYW5kZWQgPSBzdGF0ZS5wcmV2RXhwYW5kZWQsXG4gICAgICAgICAgcHJldlRpbGVNYXhIZWlnaHQgPSBzdGF0ZS5wcmV2VGlsZU1heEhlaWdodCxcbiAgICAgICAgICBwcmV2VGlsZVBhZGRpbmcgPSBzdGF0ZS5wcmV2VGlsZVBhZGRpbmcsXG4gICAgICAgICAgY3VycmVudEV4cGFuZGVkID0gc3RhdGUuZXhwYW5kZWQsXG4gICAgICAgICAgY3VycmVudFRpbGVNYXhIZWlnaHQgPSBzdGF0ZS50aWxlTWF4SGVpZ2h0LFxuICAgICAgICAgIGN1cnJlbnRUaWxlUGFkZGluZyA9IHN0YXRlLnRpbGVQYWRkaW5nO1xuICAgICAgdmFyIGV4cGFuZGVkQ2hhbmdlZCA9IHByZXZFeHBhbmRlZCAhPT0gZXhwYW5kZWQ7XG4gICAgICB2YXIgdGlsZU1heEhlaWdodENoYW5nZWQgPSBwcmV2VGlsZU1heEhlaWdodCAhPT0gdGlsZU1heEhlaWdodDtcbiAgICAgIHZhciB0aWxlUGFkZGluZ0NoYW5nZWQgPSBwcmV2VGlsZVBhZGRpbmcgIT09IHRpbGVQYWRkaW5nO1xuICAgICAgcmV0dXJuICFleHBhbmRlZENoYW5nZWQgJiYgIXRpbGVNYXhIZWlnaHRDaGFuZ2VkICYmICF0aWxlUGFkZGluZ0NoYW5nZWQgPyBudWxsIDoge1xuICAgICAgICBleHBhbmRlZDogIWV4cGFuZGVkQ2hhbmdlZCA/IGN1cnJlbnRFeHBhbmRlZCA6IGV4cGFuZGVkLFxuICAgICAgICB0aWxlTWF4SGVpZ2h0OiAhdGlsZU1heEhlaWdodENoYW5nZWQgPyBjdXJyZW50VGlsZU1heEhlaWdodCA6IHRpbGVNYXhIZWlnaHQsXG4gICAgICAgIHRpbGVQYWRkaW5nOiAhdGlsZVBhZGRpbmdDaGFuZ2VkID8gY3VycmVudFRpbGVQYWRkaW5nIDogdGlsZVBhZGRpbmcsXG4gICAgICAgIHByZXZFeHBhbmRlZDogZXhwYW5kZWQsXG4gICAgICAgIHByZXZUaWxlTWF4SGVpZ2h0OiB0aWxlTWF4SGVpZ2h0LFxuICAgICAgICBwcmV2VGlsZVBhZGRpbmc6IHRpbGVQYWRkaW5nXG4gICAgICB9O1xuICAgIH1cbiAgfV0pO1xuXG4gIHJldHVybiBFeHBhbmRhYmxlVGlsZTtcbn0oQ29tcG9uZW50KTtcblxuX2RlZmluZVByb3BlcnR5KEV4cGFuZGFibGVUaWxlLCBcInByb3BUeXBlc1wiLCB7XG4gIC8qKlxuICAgKiBUaGUgY2hpbGQgbm9kZXMuXG4gICAqL1xuICBjaGlsZHJlbjogUHJvcFR5cGVzLm5vZGUsXG5cbiAgLyoqXG4gICAqIFRoZSBDU1MgY2xhc3MgbmFtZXMuXG4gICAqL1xuICBjbGFzc05hbWU6IFByb3BUeXBlcy5zdHJpbmcsXG5cbiAgLyoqXG4gICAqIGB0cnVlYCBpZiB0aGUgdGlsZSBpcyBleHBhbmRlZC5cbiAgICovXG4gIGV4cGFuZGVkOiBQcm9wVHlwZXMuYm9vbCxcblxuICAvKipcbiAgICogRGVwcmVjYXRlZCBpbiB2MTEuIFVzZSAnb25DbGljaycgaW5zdGVhZC5cbiAgICovXG4gIGhhbmRsZUNsaWNrOiBkZXByZWNhdGUoUHJvcFR5cGVzLmZ1bmMsICdUaGUgaGFuZGxlQ2xpY2sgcHJvcCBmb3IgRXhwYW5kYWJsZVRpbGUgaGFzIGJlZW4gZGVwcmVjYXRlZCBpbiBmYXZvciBvZiBvbkNsaWNrLiBJdCB3aWxsIGJlIHJlbW92ZWQgaW4gdGhlIG5leHQgbWFqb3IgcmVsZWFzZS4nKSxcblxuICAvKipcbiAgICogQW4gSUQgdGhhdCBjYW4gYmUgcHJvdmlkZWQgdG8gYXJpYS1sYWJlbGxlZGJ5XG4gICAqL1xuICBpZDogUHJvcFR5cGVzLnN0cmluZyxcblxuICAvKipcbiAgICogYHRydWVgIHRvIHVzZSB0aGUgbGlnaHQgdmVyc2lvbi4gRm9yIHVzZSBvbiAkdWktMDEgYmFja2dyb3VuZHMgb25seS5cbiAgICogRG9uJ3QgdXNlIHRoaXMgdG8gbWFrZSB0aWxlIGJhY2tncm91bmQgY29sb3Igc2FtZSBhcyBjb250YWluZXIgYmFja2dyb3VuZCBjb2xvci5cbiAgICovXG4gIGxpZ2h0OiBQcm9wVHlwZXMuYm9vbCxcblxuICAvKipcbiAgICogb3B0aW9uYWwgaGFuZGxlciB0byBkZWNpZGUgd2hldGhlciB0byBpZ25vcmUgYSBjbGljay4gcmV0dXJucyBmYWxzZSBpZiBjbGljayBzaG91bGQgYmUgaWdub3JlZFxuICAgKi9cbiAgb25CZWZvcmVDbGljazogUHJvcFR5cGVzLmZ1bmMsXG5cbiAgLyoqXG4gICAqIFNwZWNpZnkgdGhlIGZ1bmN0aW9uIHRvIHJ1biB3aGVuIHRoZSBFeHBhbmRhYmxlVGlsZSBpcyBjbGlja2VkXG4gICAgKi9cbiAgb25DbGljazogUHJvcFR5cGVzLmZ1bmMsXG5cbiAgLyoqXG4gICAqIG9wdGlvbmFsIGhhbmRsZXIgdG8gdHJpZ2dlciBhIGZ1bmN0aW9uIHdoZW4gYSBrZXkgaXMgcHJlc3NlZFxuICAgKi9cbiAgb25LZXlVcDogUHJvcFR5cGVzLmZ1bmMsXG5cbiAgLyoqXG4gICAqIFRoZSBgdGFiaW5kZXhgIGF0dHJpYnV0ZS5cbiAgICovXG4gIHRhYkluZGV4OiBQcm9wVHlwZXMubnVtYmVyLFxuXG4gIC8qKlxuICAgKiBUaGUgZGVzY3JpcHRpb24gb2YgdGhlIFwiY29sbGFwc2VkXCIgaWNvbiB0aGF0IGNhbiBiZSByZWFkIGJ5IHNjcmVlbiByZWFkZXJzLlxuICAgKi9cbiAgdGlsZUNvbGxhcHNlZEljb25UZXh0OiBQcm9wVHlwZXMuc3RyaW5nLFxuXG4gIC8qKlxuICAgKiBXaGVuIFwiY29sbGFwc2VkXCIsIGEgbGFiZWwgdG8gYXBwZWFyIG5leHQgdG8gdGhlIGNoZXZyb24gKGUuZy4sIFwiVmlldyBtb3JlXCIpLlxuICAgKi9cbiAgdGlsZUNvbGxhcHNlZExhYmVsOiBQcm9wVHlwZXMuc3RyaW5nLFxuXG4gIC8qKlxuICAgKiBUaGUgZGVzY3JpcHRpb24gb2YgdGhlIFwiZXhwYW5kZWRcIiBpY29uIHRoYXQgY2FuIGJlIHJlYWQgYnkgc2NyZWVuIHJlYWRlcnMuXG4gICAqL1xuICB0aWxlRXhwYW5kZWRJY29uVGV4dDogUHJvcFR5cGVzLnN0cmluZyxcblxuICAvKipcbiAgICogV2hlbiBcImV4cGFuZGVkXCIsIGEgbGFiZWwgdG8gYXBwZWFyIG5leHQgdG8gdGhlIGNoZXZyb24gKGUuZy4sIFwiVmlldyBsZXNzXCIpLlxuICAgKi9cbiAgdGlsZUV4cGFuZGVkTGFiZWw6IFByb3BUeXBlcy5zdHJpbmdcbn0pO1xuXG5fZGVmaW5lUHJvcGVydHkoRXhwYW5kYWJsZVRpbGUsIFwiY29udGV4dFR5cGVcIiwgUHJlZml4Q29udGV4dCk7XG5cbl9kZWZpbmVQcm9wZXJ0eShFeHBhbmRhYmxlVGlsZSwgXCJkZWZhdWx0UHJvcHNcIiwge1xuICB0YWJJbmRleDogMCxcbiAgZXhwYW5kZWQ6IGZhbHNlLFxuICB0aWxlTWF4SGVpZ2h0OiAwLFxuICB0aWxlUGFkZGluZzogMCxcbiAgb25CZWZvcmVDbGljazogZnVuY3Rpb24gb25CZWZvcmVDbGljaygpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSxcbiAgb25DbGljazogZnVuY3Rpb24gb25DbGljaygpIHt9LFxuICB0aWxlQ29sbGFwc2VkSWNvblRleHQ6ICdJbnRlcmFjdCB0byBleHBhbmQgVGlsZScsXG4gIHRpbGVFeHBhbmRlZEljb25UZXh0OiAnSW50ZXJhY3QgdG8gY29sbGFwc2UgVGlsZScsXG4gIGxpZ2h0OiBmYWxzZVxufSk7XG5cbnZhciBUaWxlQWJvdmVUaGVGb2xkQ29udGVudCA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoX0NvbXBvbmVudDQpIHtcbiAgX2luaGVyaXRzKFRpbGVBYm92ZVRoZUZvbGRDb250ZW50LCBfQ29tcG9uZW50NCk7XG5cbiAgdmFyIF9zdXBlcjQgPSBfY3JlYXRlU3VwZXIoVGlsZUFib3ZlVGhlRm9sZENvbnRlbnQpO1xuXG4gIGZ1bmN0aW9uIFRpbGVBYm92ZVRoZUZvbGRDb250ZW50KCkge1xuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBUaWxlQWJvdmVUaGVGb2xkQ29udGVudCk7XG5cbiAgICByZXR1cm4gX3N1cGVyNC5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICB9XG5cbiAgX2NyZWF0ZUNsYXNzKFRpbGVBYm92ZVRoZUZvbGRDb250ZW50LCBbe1xuICAgIGtleTogXCJyZW5kZXJcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcmVuZGVyKCkge1xuICAgICAgdmFyIHByZWZpeCA9IHRoaXMuY29udGV4dDtcbiAgICAgIHZhciBjaGlsZHJlbiA9IHRoaXMucHJvcHMuY2hpbGRyZW47XG4gICAgICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0X19kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoXCJzcGFuXCIsIHtcbiAgICAgICAgY2xhc3NOYW1lOiBcIlwiLmNvbmNhdChwcmVmaXgsIFwiLS10aWxlLWNvbnRlbnRfX2Fib3ZlLXRoZS1mb2xkXCIpXG4gICAgICB9LCBjaGlsZHJlbik7XG4gICAgfVxuICB9XSk7XG5cbiAgcmV0dXJuIFRpbGVBYm92ZVRoZUZvbGRDb250ZW50O1xufShDb21wb25lbnQpO1xuXG5fZGVmaW5lUHJvcGVydHkoVGlsZUFib3ZlVGhlRm9sZENvbnRlbnQsIFwicHJvcFR5cGVzXCIsIHtcbiAgLyoqXG4gICAqIFRoZSBjaGlsZCBub2Rlcy5cbiAgICovXG4gIGNoaWxkcmVuOiBQcm9wVHlwZXMubm9kZVxufSk7XG5cbl9kZWZpbmVQcm9wZXJ0eShUaWxlQWJvdmVUaGVGb2xkQ29udGVudCwgXCJjb250ZXh0VHlwZVwiLCBQcmVmaXhDb250ZXh0KTtcblxudmFyIFRpbGVCZWxvd1RoZUZvbGRDb250ZW50ID0gLyojX19QVVJFX18qL2Z1bmN0aW9uIChfQ29tcG9uZW50NSkge1xuICBfaW5oZXJpdHMoVGlsZUJlbG93VGhlRm9sZENvbnRlbnQsIF9Db21wb25lbnQ1KTtcblxuICB2YXIgX3N1cGVyNSA9IF9jcmVhdGVTdXBlcihUaWxlQmVsb3dUaGVGb2xkQ29udGVudCk7XG5cbiAgZnVuY3Rpb24gVGlsZUJlbG93VGhlRm9sZENvbnRlbnQoKSB7XG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIFRpbGVCZWxvd1RoZUZvbGRDb250ZW50KTtcblxuICAgIHJldHVybiBfc3VwZXI1LmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gIH1cblxuICBfY3JlYXRlQ2xhc3MoVGlsZUJlbG93VGhlRm9sZENvbnRlbnQsIFt7XG4gICAga2V5OiBcInJlbmRlclwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiByZW5kZXIoKSB7XG4gICAgICB2YXIgY2hpbGRyZW4gPSB0aGlzLnByb3BzLmNoaWxkcmVuO1xuICAgICAgdmFyIHByZWZpeCA9IHRoaXMuY29udGV4dDtcbiAgICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3RfX2RlZmF1bHQuY3JlYXRlRWxlbWVudChcInNwYW5cIiwge1xuICAgICAgICBjbGFzc05hbWU6IFwiXCIuY29uY2F0KHByZWZpeCwgXCItLXRpbGUtY29udGVudF9fYmVsb3ctdGhlLWZvbGRcIilcbiAgICAgIH0sIGNoaWxkcmVuKTtcbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gVGlsZUJlbG93VGhlRm9sZENvbnRlbnQ7XG59KENvbXBvbmVudCk7XG5cbl9kZWZpbmVQcm9wZXJ0eShUaWxlQmVsb3dUaGVGb2xkQ29udGVudCwgXCJwcm9wVHlwZXNcIiwge1xuICAvKipcbiAgICogVGhlIGNoaWxkIG5vZGVzLlxuICAgKi9cbiAgY2hpbGRyZW46IFByb3BUeXBlcy5ub2RlXG59KTtcblxuX2RlZmluZVByb3BlcnR5KFRpbGVCZWxvd1RoZUZvbGRDb250ZW50LCBcImNvbnRleHRUeXBlXCIsIFByZWZpeENvbnRleHQpO1xuXG5leHBvcnQgeyBDbGlja2FibGVUaWxlLCBFeHBhbmRhYmxlVGlsZSwgU2VsZWN0YWJsZVRpbGUsIFRpbGUsIFRpbGVBYm92ZVRoZUZvbGRDb250ZW50LCBUaWxlQmVsb3dUaGVGb2xkQ29udGVudCB9O1xuIl0sIm5hbWVzIjpbImluaGVyaXRzIiwiX2luaGVyaXRzIiwiY3JlYXRlU3VwZXIiLCJfY3JlYXRlU3VwZXIiLCJjbGFzc0NhbGxDaGVjayIsIl9jbGFzc0NhbGxDaGVjayIsImNyZWF0ZUNsYXNzIiwiX2NyZWF0ZUNsYXNzIiwib2JqZWN0V2l0aG91dFByb3BlcnRpZXMiLCJfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMiLCJkZWZpbmVQcm9wZXJ0eSIsIl9kZWZpbmVQcm9wZXJ0eSIsImV4dGVuZHMiLCJfZXh0ZW5kcyIsImFzc2VydFRoaXNJbml0aWFsaXplZCIsIl9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQiLCJzbGljZWRUb0FycmF5IiwiX3NsaWNlZFRvQXJyYXkiLCJSZWFjdF9fZGVmYXVsdCIsIkNvbXBvbmVudCIsInVzZVN0YXRlIiwidXNlUmVmIiwidXNlRWZmZWN0IiwiUHJvcFR5cGVzIiwiY3giLCJMaW5rIiwiQ2hlY2tib3hDaGVja2VkRmlsbGVkIiwiQ2hlY2tib3giLCJDaGV2cm9uRG93biIsImRlcHJlY2F0ZSIsImNvbXBvc2VFdmVudEhhbmRsZXJzIiwiUHJlZml4Q29udGV4dCIsInVzZVByZWZpeCIsIm1hdGNoZXMiLCJFbnRlciIsIlNwYWNlIiwiX0NoZWNrYm94Q2hlY2tlZEZpbGxlIiwiX0NoZWNrYm94IiwiX0NoZXZyb25Eb3duIiwiX2V4Y2x1ZGVkIiwiX2V4Y2x1ZGVkMiIsIl9leGNsdWRlZDMiLCJfZXhjbHVkZWQ0IiwiVGlsZSIsIl9Db21wb25lbnQiLCJfc3VwZXIiLCJhcHBseSIsImFyZ3VtZW50cyIsImtleSIsInZhbHVlIiwicmVuZGVyIiwicHJlZml4IiwiY29udGV4dCIsIl90aGlzJHByb3BzIiwicHJvcHMiLCJjaGlsZHJlbiIsImNsYXNzTmFtZSIsImxpZ2h0IiwicmVzdCIsInRpbGVDbGFzc2VzIiwiY29uY2F0IiwiY3JlYXRlRWxlbWVudCIsIm5vZGUiLCJzdHJpbmciLCJib29sIiwiQ2xpY2thYmxlVGlsZSIsIl9Db21wb25lbnQyIiwiX3N1cGVyMiIsIl90aGlzIiwiX2xlbiIsImxlbmd0aCIsImFyZ3MiLCJBcnJheSIsIl9rZXkiLCJjYWxsIiwiZXZ0IiwicGVyc2lzdCIsInNldFN0YXRlIiwiY2xpY2tlZCIsInN0YXRlIiwiX3RoaXMkcHJvcHMkaGFuZGxlQ2xpIiwiX3RoaXMkcHJvcHMyIiwiX3RoaXMkcHJvcHMkb25DbGljayIsIl90aGlzJHByb3BzMyIsImhhbmRsZUNsaWNrIiwib25DbGljayIsIl90aGlzJHByb3BzJGhhbmRsZUtleSIsIl90aGlzJHByb3BzNCIsImhhbmRsZUtleURvd24iLCJvbktleURvd24iLCJfdGhpcyRwcm9wcyRoYW5kbGVLZXkyIiwiX3RoaXMkcHJvcHM1IiwiX2N4MiIsIl90aGlzJHByb3BzNiIsImhyZWYiLCJjbGFzc2VzIiwiZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzIiwiX3JlZiIsInByZXZDbGlja2VkIiwiZnVuYyIsInJlbCIsIlNlbGVjdGFibGVUaWxlIiwiaGFuZGxlT25DbGljayIsInByZXZlbnREZWZhdWx0Iiwic2V0SXNTZWxlY3RlZCIsImlzU2VsZWN0ZWQiLCJjbGlja0hhbmRsZXIiLCJvbkNoYW5nZSIsImhhbmRsZU9uS2V5RG93biIsImtleURvd25IYW5kbGVyIiwiaGFuZGxlQ2hhbmdlIiwiZXZlbnQiLCJ0YXJnZXQiLCJjaGVja2VkIiwiX2N4MyIsImlkIiwidGFiSW5kZXgiLCJuYW1lIiwidGl0bGUiLCJpY29uRGVzY3JpcHRpb24iLCJkaXNhYmxlZCIsInNlbGVjdGVkIiwiX3VzZVN0YXRlIiwiX3VzZVN0YXRlMiIsImlucHV0IiwiaW5wdXRDbGFzc2VzIiwiRnJhZ21lbnQiLCJyZWYiLCJ0eXBlIiwiaHRtbEZvciIsImRlZmF1bHRQcm9wcyIsInByb3BUeXBlcyIsIm51bWJlciIsIm9uZU9mVHlwZSIsImlzUmVxdWlyZWQiLCJFeHBhbmRhYmxlVGlsZSIsIl9Db21wb25lbnQzIiwiX3N1cGVyMyIsIl90aGlzMiIsIl9sZW4yIiwiX2tleTIiLCJyZXNpemVPYnNlcnZlciIsIlJlc2l6ZU9ic2VydmVyIiwiZW50cmllcyIsIl9lbnRyaWVzIiwiYWJvdmVUaGVGb2xkIiwidGlsZU1heEhlaWdodCIsImNvbnRlbnRSZWN0IiwiaGVpZ2h0IiwidGlsZSIsImdldFN0eWxlIiwid2luZG93IiwiZ2V0Q29tcHV0ZWRTdHlsZSIsIm9ic2VydmUiLCJnZXRCb3VuZGluZ0NsaWVudFJlY3QiLCJ0aWxlUGFkZGluZyIsInBhcnNlSW50IiwiZ2V0UHJvcGVydHlWYWx1ZSIsInByZXZQcm9wcyIsImV4cGFuZGVkIiwic2V0TWF4SGVpZ2h0IiwidGlsZUNvbnRlbnQiLCJvbkJlZm9yZUNsaWNrIiwidGFnTmFtZSIsIl90aGlzMiRwcm9wcyRoYW5kbGVDbCIsIl90aGlzMiRwcm9wcyIsIl90aGlzMiRwcm9wcyRvbkNsaWNrIiwiX3RoaXMyJHByb3BzMiIsIkNoaWxkcmVuIiwidG9BcnJheSIsImNvbXBvbmVudFdpbGxVbm1vdW50IiwiZGlzY29ubmVjdCIsIl9jeDUiLCJfdGhpczMiLCJfdGhpcyRwcm9wczciLCJvbktleVVwIiwidGlsZUNvbGxhcHNlZEljb25UZXh0IiwidGlsZUV4cGFuZGVkSWNvblRleHQiLCJ0aWxlQ29sbGFwc2VkTGFiZWwiLCJ0aWxlRXhwYW5kZWRMYWJlbCIsImlzRXhwYW5kZWQiLCJ0aWxlU3R5bGUiLCJtYXhIZWlnaHQiLCJjaGlsZHJlbkFzQXJyYXkiLCJnZXRDaGlsZHJlbiIsInN0eWxlIiwiaGFuZGxlS2V5VXAiLCJfcmVmMiIsInByZXZFeHBhbmRlZCIsInByZXZUaWxlTWF4SGVpZ2h0IiwicHJldlRpbGVQYWRkaW5nIiwiY3VycmVudEV4cGFuZGVkIiwiY3VycmVudFRpbGVNYXhIZWlnaHQiLCJjdXJyZW50VGlsZVBhZGRpbmciLCJleHBhbmRlZENoYW5nZWQiLCJ0aWxlTWF4SGVpZ2h0Q2hhbmdlZCIsInRpbGVQYWRkaW5nQ2hhbmdlZCIsIlRpbGVBYm92ZVRoZUZvbGRDb250ZW50IiwiX0NvbXBvbmVudDQiLCJfc3VwZXI0IiwiVGlsZUJlbG93VGhlRm9sZENvbnRlbnQiLCJfQ29tcG9uZW50NSIsIl9zdXBlcjUiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/@carbon/react/es/components/Tile/Tile.js\n");
2604
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"ClickableTile\": () => (/* binding */ ClickableTile),\n/* harmony export */ \"ExpandableTile\": () => (/* binding */ ExpandableTile),\n/* harmony export */ \"SelectableTile\": () => (/* binding */ SelectableTile),\n/* harmony export */ \"Tile\": () => (/* binding */ Tile),\n/* harmony export */ \"TileAboveTheFoldContent\": () => (/* binding */ TileAboveTheFoldContent),\n/* harmony export */ \"TileBelowTheFoldContent\": () => (/* binding */ TileBelowTheFoldContent)\n/* harmony export */ });\n/* harmony import */ var _virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../_virtual/_rollupPluginBabelHelpers.js */ \"../../../node_modules/@carbon/react/es/_virtual/_rollupPluginBabelHelpers.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"webpack/sharing/consume/default/react/react\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! prop-types */ \"../../../node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var classnames__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! classnames */ \"../../../node_modules/classnames/index.js\");\n/* harmony import */ var classnames__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(classnames__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _Link_Link_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../Link/Link.js */ \"../../../node_modules/@carbon/react/es/components/Link/Link.js\");\n/* harmony import */ var _carbon_icons_react__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @carbon/icons-react */ \"../../../node_modules/@carbon/icons-react/es/generated/bucket-2.js\");\n/* harmony import */ var _prop_types_deprecate_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../../prop-types/deprecate.js */ \"../../../node_modules/@carbon/react/es/prop-types/deprecate.js\");\n/* harmony import */ var _tools_events_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../../tools/events.js */ \"../../../node_modules/@carbon/react/es/tools/events.js\");\n/* harmony import */ var _internal_usePrefix_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../internal/usePrefix.js */ \"../../../node_modules/@carbon/react/es/internal/usePrefix.js\");\n/* harmony import */ var _internal_keyboard_match_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../internal/keyboard/match.js */ \"../../../node_modules/@carbon/react/es/internal/keyboard/match.js\");\n/* harmony import */ var _internal_keyboard_keys_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../internal/keyboard/keys.js */ \"../../../node_modules/@carbon/react/es/internal/keyboard/keys.js\");\n/**\n * Copyright IBM Corp. 2016, 2022\n *\n * This source code is licensed under the Apache-2.0 license found in the\n * LICENSE file in the root directory of this source tree.\n */ \n\n\n\n\n\n\n\n\n\n\nvar _CheckboxCheckedFille, _Checkbox, _ChevronDown;\nvar _excluded = [\n \"children\",\n \"className\",\n \"light\"\n], _excluded2 = [\n \"children\",\n \"href\",\n \"className\",\n \"handleClick\",\n \"handleKeyDown\",\n \"onClick\",\n \"onKeyDown\",\n \"clicked\",\n \"light\"\n], _excluded3 = [\n \"children\",\n \"id\",\n \"tabIndex\",\n \"value\",\n \"name\",\n \"title\",\n \"iconDescription\",\n \"className\",\n \"handleClick\",\n \"handleKeyDown\",\n \"onClick\",\n \"onChange\",\n \"onKeyDown\",\n \"light\",\n \"disabled\",\n \"selected\"\n], _excluded4 = [\n \"tabIndex\",\n \"className\",\n \"expanded\",\n \"tileMaxHeight\",\n \"tilePadding\",\n \"handleClick\",\n \"onKeyUp\",\n \"tileCollapsedIconText\",\n \"tileExpandedIconText\",\n \"tileCollapsedLabel\",\n \"tileExpandedLabel\",\n \"onBeforeClick\",\n \"light\"\n];\nvar Tile = /*#__PURE__*/ function(_Component) {\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.inherits)(Tile, _Component);\n var _super = (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.createSuper)(Tile);\n function Tile() {\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.classCallCheck)(this, Tile);\n return _super.apply(this, arguments);\n }\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.createClass)(Tile, [\n {\n key: \"render\",\n value: function render() {\n var prefix = this.context;\n var _this$props = this.props, children = _this$props.children, className = _this$props.className, light = _this$props.light, rest = (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.objectWithoutProperties)(_this$props, _excluded);\n var tileClasses = classnames__WEBPACK_IMPORTED_MODULE_1___default()(\"\".concat(prefix, \"--tile\"), (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)({}, \"\".concat(prefix, \"--tile--light\"), light), className);\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__[\"extends\"])({\n className: tileClasses\n }, rest), children);\n }\n }\n ]);\n return Tile;\n}(react__WEBPACK_IMPORTED_MODULE_0__.Component);\n(0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(Tile, \"propTypes\", {\n /**\n * The child nodes.\n */ children: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().node),\n /**\n * The CSS class names.\n */ className: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string),\n /**\n * `true` to use the light version. For use on $ui-01 backgrounds only.\n * Don't use this to make tile background color same as container background color.\n */ light: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().bool)\n});\n(0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(Tile, \"contextType\", _internal_usePrefix_js__WEBPACK_IMPORTED_MODULE_4__.PrefixContext);\n(0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(Tile, \"defaultProps\", {\n light: false\n});\nvar ClickableTile = /*#__PURE__*/ function(_Component2) {\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.inherits)(ClickableTile, _Component2);\n var _super2 = (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.createSuper)(ClickableTile);\n function ClickableTile() {\n var _this;\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.classCallCheck)(this, ClickableTile);\n for(var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++){\n args[_key] = arguments[_key];\n }\n _this = _super2.call.apply(_super2, [\n this\n ].concat(args));\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)((0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.assertThisInitialized)(_this), \"state\", {});\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)((0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.assertThisInitialized)(_this), \"handleClick\", function(evt) {\n evt.persist();\n _this.setState({\n clicked: !_this.state.clicked\n }, function() {\n var _this$props$handleCli, _this$props2, _this$props$onClick, _this$props3;\n (// TODO: Remove handleClick prop when handleClick is deprecated\n (_this$props$handleCli = (_this$props2 = _this.props).handleClick) === null || _this$props$handleCli === void 0 ? void 0 : _this$props$handleCli.call(_this$props2, evt)) || ((_this$props$onClick = (_this$props3 = _this.props).onClick) === null || _this$props$onClick === void 0 ? void 0 : _this$props$onClick.call(_this$props3, evt));\n });\n });\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)((0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.assertThisInitialized)(_this), \"handleKeyDown\", function(evt) {\n evt.persist();\n if ((0,_internal_keyboard_match_js__WEBPACK_IMPORTED_MODULE_5__.matches)(evt, [\n _internal_keyboard_keys_js__WEBPACK_IMPORTED_MODULE_6__.Enter,\n _internal_keyboard_keys_js__WEBPACK_IMPORTED_MODULE_6__.Space\n ])) {\n _this.setState({\n clicked: !_this.state.clicked\n }, function() {\n var _this$props$handleKey, _this$props4;\n (// TODO: Remove handleKeyDown prop when handleKeyDown is deprecated\n (_this$props$handleKey = (_this$props4 = _this.props).handleKeyDown) === null || _this$props$handleKey === void 0 ? void 0 : _this$props$handleKey.call(_this$props4, evt)) || _this.props.onKeyDown(evt);\n });\n } else {\n var _this$props$handleKey2, _this$props5;\n // TODO: Remove handleKeyDown prop when handleKeyDown is deprecated\n ((_this$props$handleKey2 = (_this$props5 = _this.props).handleKeyDown) === null || _this$props$handleKey2 === void 0 ? void 0 : _this$props$handleKey2.call(_this$props5, evt)) || _this.props.onKeyDown(evt);\n }\n });\n return _this;\n }\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.createClass)(ClickableTile, [\n {\n key: \"render\",\n value: function render() {\n var _cx2;\n var prefix = this.context;\n var _this$props6 = this.props, children = _this$props6.children, href = _this$props6.href, className = _this$props6.className;\n _this$props6.handleClick;\n _this$props6.handleKeyDown;\n _this$props6.onClick;\n _this$props6.onKeyDown;\n _this$props6.clicked;\n var light = _this$props6.light, rest = (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.objectWithoutProperties)(_this$props6, _excluded2);\n var classes = classnames__WEBPACK_IMPORTED_MODULE_1___default()(\"\".concat(prefix, \"--tile\"), \"\".concat(prefix, \"--tile--clickable\"), (_cx2 = {}, (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(_cx2, \"\".concat(prefix, \"--tile--is-clicked\"), this.state.clicked), (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(_cx2, \"\".concat(prefix, \"--tile--light\"), light), _cx2), className);\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_Link_Link_js__WEBPACK_IMPORTED_MODULE_7__[\"default\"], (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__[\"extends\"])({\n href: href,\n className: classes\n }, rest, {\n onClick: this.handleClick,\n onKeyDown: this.handleKeyDown\n }), children);\n }\n }\n ], [\n {\n key: \"getDerivedStateFromProps\",\n value: function getDerivedStateFromProps(_ref, state) {\n var clicked = _ref.clicked;\n var prevClicked = state.prevClicked;\n return prevClicked === clicked ? null : {\n clicked: clicked,\n prevClicked: clicked\n };\n }\n }\n ]);\n return ClickableTile;\n}(react__WEBPACK_IMPORTED_MODULE_0__.Component);\n(0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(ClickableTile, \"propTypes\", {\n /**\n * The child nodes.\n */ children: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().node),\n /**\n * The CSS class names.\n */ className: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string),\n /**\n * Deprecated in v11. Use 'onClick' instead.\n */ handleClick: (0,_prop_types_deprecate_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"])((prop_types__WEBPACK_IMPORTED_MODULE_3___default().func), \"The handleClick prop for ClickableTile has been deprecated in favor of onClick. It will be removed in the next major release.\"),\n /**\n * Specify the function to run when the ClickableTile is interacted with via a keyboard\n */ handleKeyDown: (0,_prop_types_deprecate_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"])((prop_types__WEBPACK_IMPORTED_MODULE_3___default().func), \"The handleKeyDown prop for ClickableTile has been deprecated in favor of onKeyDown. It will be removed in the next major release.\"),\n /**\n * The href for the link.\n */ href: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string),\n /**\n * `true` to use the light version. For use on $ui-01 backgrounds only.\n * Don't use this to make tile background color same as container background color.\n */ light: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().bool),\n /**\n * Specify the function to run when the ClickableTile is clicked\n */ onClick: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().func),\n /**\n * Specify the function to run when the ClickableTile is interacted with via a keyboard\n */ onKeyDown: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().func),\n /**\n * The rel property for the link.\n */ rel: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string)\n});\n(0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(ClickableTile, \"contextType\", _internal_usePrefix_js__WEBPACK_IMPORTED_MODULE_4__.PrefixContext);\n(0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(ClickableTile, \"defaultProps\", {\n clicked: false,\n onClick: function onClick() {},\n onKeyDown: function onKeyDown() {},\n light: false\n});\nfunction SelectableTile(props) {\n var handleOnClick = function handleOnClick(evt) {\n evt.preventDefault();\n evt.persist();\n setIsSelected(!isSelected);\n clickHandler(evt);\n onChange(evt);\n } // TODO: rename to handleKeyDown when handleKeyDown prop is deprecated\n ;\n var handleOnKeyDown = function handleOnKeyDown(evt) {\n evt.persist();\n if ((0,_internal_keyboard_match_js__WEBPACK_IMPORTED_MODULE_5__.matches)(evt, [\n _internal_keyboard_keys_js__WEBPACK_IMPORTED_MODULE_6__.Enter,\n _internal_keyboard_keys_js__WEBPACK_IMPORTED_MODULE_6__.Space\n ])) {\n evt.preventDefault();\n setIsSelected(!isSelected);\n onChange(evt);\n }\n keyDownHandler(evt);\n };\n var handleChange = function handleChange(event) {\n setIsSelected(event.target.checked);\n onChange(event);\n };\n var _cx3;\n var children = props.children, id = props.id, tabIndex = props.tabIndex, value = props.value, name = props.name, title = props.title;\n props.iconDescription;\n var className = props.className, handleClick = props.handleClick, handleKeyDown = props.handleKeyDown, onClick = props.onClick, onChange = props.onChange, onKeyDown = props.onKeyDown, light = props.light, disabled = props.disabled, selected = props.selected, rest = (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.objectWithoutProperties)(props, _excluded3);\n var prefix = (0,_internal_usePrefix_js__WEBPACK_IMPORTED_MODULE_4__.usePrefix)(); // TODO: replace with onClick when handleClick prop is deprecated\n var clickHandler = handleClick || onClick; // TODO: replace with onKeyDown when handleKeyDown prop is deprecated\n var keyDownHandler = handleKeyDown || onKeyDown;\n var _useState = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(selected), _useState2 = (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.slicedToArray)(_useState, 2), isSelected = _useState2[0], setIsSelected = _useState2[1];\n var input = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(null);\n var classes = classnames__WEBPACK_IMPORTED_MODULE_1___default()(\"\".concat(prefix, \"--tile\"), \"\".concat(prefix, \"--tile--selectable\"), (_cx3 = {}, (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(_cx3, \"\".concat(prefix, \"--tile--is-selected\"), isSelected), (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(_cx3, \"\".concat(prefix, \"--tile--light\"), light), (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(_cx3, \"\".concat(prefix, \"--tile--disabled\"), disabled), _cx3), className);\n var inputClasses = classnames__WEBPACK_IMPORTED_MODULE_1___default()(\"\".concat(prefix, \"--tile-input\"), (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)({}, \"\".concat(prefix, \"--tile-input--checked\"), isSelected)); // TODO: rename to handleClick when handleClick prop is deprecated\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(function() {\n setIsSelected(selected);\n }, [\n selected\n ]);\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement((react__WEBPACK_IMPORTED_MODULE_0___default().Fragment), null, /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"input\", {\n ref: input,\n tabIndex: -1,\n id: id,\n className: inputClasses,\n value: value,\n onChange: !disabled ? handleChange : null,\n type: \"checkbox\",\n disabled: disabled,\n name: name,\n title: title,\n checked: isSelected\n }), /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"label\", (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__[\"extends\"])({\n htmlFor: id,\n className: classes // eslint-disable-next-line jsx-a11y/no-noninteractive-tabindex\n ,\n tabIndex: !disabled ? tabIndex : null\n }, rest, {\n onClick: !disabled ? handleOnClick : null,\n onKeyDown: !disabled ? handleOnKeyDown : null\n }), /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"span\", {\n className: \"\".concat(prefix, \"--tile__checkmark \").concat(prefix, \"--tile__checkmark--persistent\")\n }, isSelected ? _CheckboxCheckedFille || (_CheckboxCheckedFille = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_carbon_icons_react__WEBPACK_IMPORTED_MODULE_9__.CheckboxCheckedFilled, null)) : _Checkbox || (_Checkbox = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_carbon_icons_react__WEBPACK_IMPORTED_MODULE_9__.Checkbox, null))), /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"span\", {\n className: \"\".concat(prefix, \"--tile-content\")\n }, children)));\n}\nSelectableTile.defaultProps = {\n value: \"value\",\n title: \"title\",\n selected: false,\n tabIndex: 0,\n light: false,\n onClick: function onClick() {},\n onChange: function onChange() {},\n onKeyDown: function onKeyDown() {}\n};\nSelectableTile.propTypes = {\n /**\n * The child nodes.\n */ children: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().node),\n /**\n * The CSS class names.\n */ className: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string),\n /**\n * Specify whether the SelectableTile should be disabled\n */ disabled: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().bool),\n /**\n * Specify the function to run when the SelectableTile is clicked\n */ handleClick: (0,_prop_types_deprecate_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"])((prop_types__WEBPACK_IMPORTED_MODULE_3___default().func), \"The `handleClick` prop for `SelectableTile` has been deprecated in favor of `onClick`. It will be removed in the next major release.\"),\n /**\n * Specify the function to run when the SelectableTile is interacted with via a keyboard\n */ handleKeyDown: (0,_prop_types_deprecate_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"])((prop_types__WEBPACK_IMPORTED_MODULE_3___default().func), \"The `handleKeyDown` prop for `SelectableTile` has been deprecated in favor of `onKeyDown`. It will be removed in the next major release.\"),\n /**\n * The description of the checkmark icon.\n */ iconDescription: (0,_prop_types_deprecate_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"])((prop_types__WEBPACK_IMPORTED_MODULE_3___default().string), \"The `iconDescription` prop for `SelectableTile` is no longer needed and has \" + \"been deprecated. It will be removed in the next major release.\"),\n /**\n * The ID of the `<input>`.\n */ id: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string),\n /**\n * `true` to use the light version. For use on $ui-01 backgrounds only.\n * Don't use this to make tile background color same as container background color.\n */ light: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().bool),\n /**\n * The `name` of the `<input>`.\n */ name: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string),\n /**\n * The empty handler of the `<input>`.\n */ onChange: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().func),\n /**\n * Specify the function to run when the SelectableTile is clicked\n */ onClick: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().func),\n /**\n * Specify the function to run when the SelectableTile is interacted with via a keyboard\n */ onKeyDown: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().func),\n /**\n * `true` to select this tile.\n */ selected: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().bool),\n /**\n * Specify the tab index of the wrapper element\n */ tabIndex: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().number),\n /**\n * The `title` of the `<input>`.\n */ title: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string),\n /**\n * The value of the `<input>`.\n */ value: prop_types__WEBPACK_IMPORTED_MODULE_3___default().oneOfType([\n (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string),\n (prop_types__WEBPACK_IMPORTED_MODULE_3___default().number)\n ]).isRequired\n};\nvar ExpandableTile = /*#__PURE__*/ function(_Component3) {\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.inherits)(ExpandableTile, _Component3);\n var _super3 = (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.createSuper)(ExpandableTile);\n function ExpandableTile() {\n var _this2;\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.classCallCheck)(this, ExpandableTile);\n for(var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++){\n args[_key2] = arguments[_key2];\n }\n _this2 = _super3.call.apply(_super3, [\n this\n ].concat(args));\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)((0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.assertThisInitialized)(_this2), \"state\", {});\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)((0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.assertThisInitialized)(_this2), \"resizeObserver\", null);\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)((0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.assertThisInitialized)(_this2), \"componentDidMount\", function() {\n _this2.resizeObserver = new ResizeObserver(function(entries) {\n var _entries = (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.slicedToArray)(entries, 1), aboveTheFold = _entries[0];\n _this2.setState({\n tileMaxHeight: aboveTheFold.contentRect.height\n });\n });\n if (_this2.tile) {\n var getStyle = window.getComputedStyle(_this2.tile, null);\n if (_this2.aboveTheFold) {\n _this2.resizeObserver.observe(_this2.aboveTheFold);\n _this2.setState({\n tileMaxHeight: _this2.aboveTheFold.getBoundingClientRect().height,\n tilePadding: parseInt(getStyle.getPropertyValue(\"padding-top\"), 10) + parseInt(getStyle.getPropertyValue(\"padding-bottom\"), 10)\n });\n }\n }\n });\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)((0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.assertThisInitialized)(_this2), \"componentDidUpdate\", function(prevProps) {\n if (prevProps.expanded !== _this2.props.expanded) {\n _this2.setMaxHeight();\n }\n });\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)((0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.assertThisInitialized)(_this2), \"setMaxHeight\", function() {\n if (_this2.state.expanded ? _this2.tileContent : _this2.aboveTheFold) {\n _this2.setState({\n tileMaxHeight: _this2.state.expanded ? _this2.tileContent.getBoundingClientRect().height : _this2.aboveTheFold.getBoundingClientRect().height\n });\n }\n });\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)((0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.assertThisInitialized)(_this2), \"handleClick\", function(evt) {\n if (!_this2.props.onBeforeClick(evt) || evt.target.tagName === \"INPUT\") {\n return;\n }\n evt.persist();\n _this2.setState({\n expanded: !_this2.state.expanded\n }, function() {\n var _this2$props$handleCl, _this2$props, _this2$props$onClick, _this2$props2;\n _this2.setMaxHeight(); // TODO: Remove handleClick prop when handleClick is deprecated\n ((_this2$props$handleCl = (_this2$props = _this2.props).handleClick) === null || _this2$props$handleCl === void 0 ? void 0 : _this2$props$handleCl.call(_this2$props, evt)) || ((_this2$props$onClick = (_this2$props2 = _this2.props).onClick) === null || _this2$props$onClick === void 0 ? void 0 : _this2$props$onClick.call(_this2$props2, evt));\n });\n });\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)((0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.assertThisInitialized)(_this2), \"handleKeyUp\", function(evt) {\n if (evt.target !== _this2.tile) {\n if ((0,_internal_keyboard_match_js__WEBPACK_IMPORTED_MODULE_5__.matches)(evt, [\n _internal_keyboard_keys_js__WEBPACK_IMPORTED_MODULE_6__.Enter,\n _internal_keyboard_keys_js__WEBPACK_IMPORTED_MODULE_6__.Space\n ])) {\n evt.preventDefault();\n }\n }\n });\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)((0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.assertThisInitialized)(_this2), \"getChildren\", function() {\n return react__WEBPACK_IMPORTED_MODULE_0___default().Children.toArray(_this2.props.children);\n });\n return _this2;\n }\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.createClass)(ExpandableTile, [\n {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n if (this.resizeObserver) {\n this.resizeObserver.disconnect();\n }\n }\n },\n {\n key: \"render\",\n value: function render() {\n var _cx5, _this3 = this;\n var _this$props7 = this.props, tabIndex = _this$props7.tabIndex, className = _this$props7.className;\n _this$props7.expanded;\n _this$props7.tileMaxHeight;\n _this$props7.tilePadding;\n _this$props7.handleClick;\n var onKeyUp = _this$props7.onKeyUp, tileCollapsedIconText = _this$props7.tileCollapsedIconText, tileExpandedIconText = _this$props7.tileExpandedIconText, tileCollapsedLabel = _this$props7.tileCollapsedLabel, tileExpandedLabel = _this$props7.tileExpandedLabel;\n _this$props7.onBeforeClick;\n var light = _this$props7.light, rest = (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.objectWithoutProperties)(_this$props7, _excluded4);\n var prefix = this.context;\n var isExpanded = this.state.expanded;\n var classes = classnames__WEBPACK_IMPORTED_MODULE_1___default()(\"\".concat(prefix, \"--tile\"), \"\".concat(prefix, \"--tile--expandable\"), (_cx5 = {}, (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(_cx5, \"\".concat(prefix, \"--tile--is-expanded\"), isExpanded), (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(_cx5, \"\".concat(prefix, \"--tile--light\"), light), _cx5), className);\n var tileStyle = {\n maxHeight: isExpanded ? null : this.state.tileMaxHeight + this.state.tilePadding\n };\n var childrenAsArray = this.getChildren();\n return(/*#__PURE__*/ // eslint-disable-next-line jsx-a11y/click-events-have-key-events,jsx-a11y/no-static-element-interactions\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"button\", (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__[\"extends\"])({\n type: \"button\",\n ref: function ref(tile) {\n _this3.tile = tile;\n },\n style: tileStyle,\n className: classes,\n \"aria-expanded\": isExpanded,\n title: isExpanded ? tileExpandedIconText : tileCollapsedIconText\n }, rest, {\n onKeyUp: (0,_tools_events_js__WEBPACK_IMPORTED_MODULE_10__.composeEventHandlers)([\n onKeyUp,\n this.handleKeyUp\n ]),\n onClick: this.handleClick,\n tabIndex: tabIndex\n }), /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n ref: function ref(tileContent) {\n _this3.tileContent = tileContent;\n }\n }, /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n ref: function ref(aboveTheFold) {\n _this3.aboveTheFold = aboveTheFold;\n },\n className: \"\".concat(prefix, \"--tile-content\")\n }, childrenAsArray[0]), /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"\".concat(prefix, \"--tile__chevron\")\n }, /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"span\", null, isExpanded ? tileExpandedLabel : tileCollapsedLabel), _ChevronDown || (_ChevronDown = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_carbon_icons_react__WEBPACK_IMPORTED_MODULE_9__.ChevronDown, null))), /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"\".concat(prefix, \"--tile-content\")\n }, childrenAsArray[1]))));\n }\n }\n ], [\n {\n key: \"getDerivedStateFromProps\",\n value: function getDerivedStateFromProps(_ref2, state) {\n var expanded = _ref2.expanded, tileMaxHeight = _ref2.tileMaxHeight, tilePadding = _ref2.tilePadding;\n var prevExpanded = state.prevExpanded, prevTileMaxHeight = state.prevTileMaxHeight, prevTilePadding = state.prevTilePadding, currentExpanded = state.expanded, currentTileMaxHeight = state.tileMaxHeight, currentTilePadding = state.tilePadding;\n var expandedChanged = prevExpanded !== expanded;\n var tileMaxHeightChanged = prevTileMaxHeight !== tileMaxHeight;\n var tilePaddingChanged = prevTilePadding !== tilePadding;\n return !expandedChanged && !tileMaxHeightChanged && !tilePaddingChanged ? null : {\n expanded: !expandedChanged ? currentExpanded : expanded,\n tileMaxHeight: !tileMaxHeightChanged ? currentTileMaxHeight : tileMaxHeight,\n tilePadding: !tilePaddingChanged ? currentTilePadding : tilePadding,\n prevExpanded: expanded,\n prevTileMaxHeight: tileMaxHeight,\n prevTilePadding: tilePadding\n };\n }\n }\n ]);\n return ExpandableTile;\n}(react__WEBPACK_IMPORTED_MODULE_0__.Component);\n(0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(ExpandableTile, \"propTypes\", {\n /**\n * The child nodes.\n */ children: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().node),\n /**\n * The CSS class names.\n */ className: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string),\n /**\n * `true` if the tile is expanded.\n */ expanded: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().bool),\n /**\n * Deprecated in v11. Use 'onClick' instead.\n */ handleClick: (0,_prop_types_deprecate_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"])((prop_types__WEBPACK_IMPORTED_MODULE_3___default().func), \"The handleClick prop for ExpandableTile has been deprecated in favor of onClick. It will be removed in the next major release.\"),\n /**\n * An ID that can be provided to aria-labelledby\n */ id: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string),\n /**\n * `true` to use the light version. For use on $ui-01 backgrounds only.\n * Don't use this to make tile background color same as container background color.\n */ light: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().bool),\n /**\n * optional handler to decide whether to ignore a click. returns false if click should be ignored\n */ onBeforeClick: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().func),\n /**\n * Specify the function to run when the ExpandableTile is clicked\n */ onClick: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().func),\n /**\n * optional handler to trigger a function when a key is pressed\n */ onKeyUp: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().func),\n /**\n * The `tabindex` attribute.\n */ tabIndex: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().number),\n /**\n * The description of the \"collapsed\" icon that can be read by screen readers.\n */ tileCollapsedIconText: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string),\n /**\n * When \"collapsed\", a label to appear next to the chevron (e.g., \"View more\").\n */ tileCollapsedLabel: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string),\n /**\n * The description of the \"expanded\" icon that can be read by screen readers.\n */ tileExpandedIconText: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string),\n /**\n * When \"expanded\", a label to appear next to the chevron (e.g., \"View less\").\n */ tileExpandedLabel: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string)\n});\n(0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(ExpandableTile, \"contextType\", _internal_usePrefix_js__WEBPACK_IMPORTED_MODULE_4__.PrefixContext);\n(0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(ExpandableTile, \"defaultProps\", {\n tabIndex: 0,\n expanded: false,\n tileMaxHeight: 0,\n tilePadding: 0,\n onBeforeClick: function onBeforeClick() {\n return true;\n },\n onClick: function onClick() {},\n tileCollapsedIconText: \"Interact to expand Tile\",\n tileExpandedIconText: \"Interact to collapse Tile\",\n light: false\n});\nvar TileAboveTheFoldContent = /*#__PURE__*/ function(_Component4) {\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.inherits)(TileAboveTheFoldContent, _Component4);\n var _super4 = (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.createSuper)(TileAboveTheFoldContent);\n function TileAboveTheFoldContent() {\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.classCallCheck)(this, TileAboveTheFoldContent);\n return _super4.apply(this, arguments);\n }\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.createClass)(TileAboveTheFoldContent, [\n {\n key: \"render\",\n value: function render() {\n var prefix = this.context;\n var children = this.props.children;\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"span\", {\n className: \"\".concat(prefix, \"--tile-content__above-the-fold\")\n }, children);\n }\n }\n ]);\n return TileAboveTheFoldContent;\n}(react__WEBPACK_IMPORTED_MODULE_0__.Component);\n(0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(TileAboveTheFoldContent, \"propTypes\", {\n /**\n * The child nodes.\n */ children: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().node)\n});\n(0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(TileAboveTheFoldContent, \"contextType\", _internal_usePrefix_js__WEBPACK_IMPORTED_MODULE_4__.PrefixContext);\nvar TileBelowTheFoldContent = /*#__PURE__*/ function(_Component5) {\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.inherits)(TileBelowTheFoldContent, _Component5);\n var _super5 = (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.createSuper)(TileBelowTheFoldContent);\n function TileBelowTheFoldContent() {\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.classCallCheck)(this, TileBelowTheFoldContent);\n return _super5.apply(this, arguments);\n }\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.createClass)(TileBelowTheFoldContent, [\n {\n key: \"render\",\n value: function render() {\n var children = this.props.children;\n var prefix = this.context;\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"span\", {\n className: \"\".concat(prefix, \"--tile-content__below-the-fold\")\n }, children);\n }\n }\n ]);\n return TileBelowTheFoldContent;\n}(react__WEBPACK_IMPORTED_MODULE_0__.Component);\n(0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(TileBelowTheFoldContent, \"propTypes\", {\n /**\n * The child nodes.\n */ children: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().node)\n});\n(0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(TileBelowTheFoldContent, \"contextType\", _internal_usePrefix_js__WEBPACK_IMPORTED_MODULE_4__.PrefixContext);\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0BjYXJib24vcmVhY3QvZXMvY29tcG9uZW50cy9UaWxlL1RpbGUuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTs7Ozs7Q0FLQyxHQUUrVztBQUNqUztBQUM1QztBQUNQO0FBQ087QUFDZ0Q7QUFDN0I7QUFDTztBQUNVO0FBQ1o7QUFDSTtBQUUvRCxJQUFJb0MsdUJBQXVCQyxXQUFXQztBQUV0QyxJQUFJQyxZQUFZO0lBQUM7SUFBWTtJQUFhO0NBQVEsRUFDOUNDLGFBQWE7SUFBQztJQUFZO0lBQVE7SUFBYTtJQUFlO0lBQWlCO0lBQVc7SUFBYTtJQUFXO0NBQVEsRUFDMUhDLGFBQWE7SUFBQztJQUFZO0lBQU07SUFBWTtJQUFTO0lBQVE7SUFBUztJQUFtQjtJQUFhO0lBQWU7SUFBaUI7SUFBVztJQUFZO0lBQWE7SUFBUztJQUFZO0NBQVcsRUFDMU1DLGFBQWE7SUFBQztJQUFZO0lBQWE7SUFBWTtJQUFpQjtJQUFlO0lBQWU7SUFBVztJQUF5QjtJQUF3QjtJQUFzQjtJQUFxQjtJQUFpQjtDQUFRO0FBQ3RPLElBQUlDLE9BQU8sV0FBVyxHQUFFLFNBQVVDLFVBQVUsRUFBRTtJQUM1QzNDLDhFQUFTQSxDQUFDMEMsTUFBTUM7SUFFaEIsSUFBSUMsU0FBUzFDLGlGQUFZQSxDQUFDd0M7SUFFMUIsU0FBU0EsT0FBTztRQUNkdEMsb0ZBQWVBLENBQUMsSUFBSSxFQUFFc0M7UUFFdEIsT0FBT0UsT0FBT0MsS0FBSyxDQUFDLElBQUksRUFBRUM7SUFDNUI7SUFFQXhDLGlGQUFZQSxDQUFDb0MsTUFBTTtRQUFDO1lBQ2xCSyxLQUFLO1lBQ0xDLE9BQU8sU0FBU0MsU0FBUztnQkFDdkIsSUFBSUMsU0FBUyxJQUFJLENBQUNDLE9BQU87Z0JBRXpCLElBQUlDLGNBQWMsSUFBSSxDQUFDQyxLQUFLLEVBQ3hCQyxXQUFXRixZQUFZRSxRQUFRLEVBQy9CQyxZQUFZSCxZQUFZRyxTQUFTLEVBQ2pDQyxRQUFR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QUM2TCx5QkFBeUIsZUFBZXpLLGlFQUFhQTtBQUU0QyIsInNvdXJjZXMiOlsid2VicGFjazovL0BvcGVubXJzL2VzbS1hcHAtc2hlbGwvLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0BjYXJib24vcmVhY3QvZXMvY29tcG9uZW50cy9UaWxlL1RpbGUuanM/MGNhNiJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvcHlyaWdodCBJQk0gQ29ycC4gMjAxNiwgMjAyMlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZS0yLjAgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqL1xuXG5pbXBvcnQgeyBpbmhlcml0cyBhcyBfaW5oZXJpdHMsIGNyZWF0ZVN1cGVyIGFzIF9jcmVhdGVTdXBlciwgY2xhc3NDYWxsQ2hlY2sgYXMgX2NsYXNzQ2FsbENoZWNrLCBjcmVhdGVDbGFzcyBhcyBfY3JlYXRlQ2xhc3MsIG9iamVjdFdpdGhvdXRQcm9wZXJ0aWVzIGFzIF9vYmplY3RXaXRob3V0UHJvcGVydGllcywgZGVmaW5lUHJvcGVydHkgYXMgX2RlZmluZVByb3BlcnR5LCBleHRlbmRzIGFzIF9leHRlbmRzLCBhc3NlcnRUaGlzSW5pdGlhbGl6ZWQgYXMgX2Fzc2VydFRoaXNJbml0aWFsaXplZCwgc2xpY2VkVG9BcnJheSBhcyBfc2xpY2VkVG9BcnJheSB9IGZyb20gJy4uLy4uL192aXJ0dWFsL19yb2xsdXBQbHVnaW5CYWJlbEhlbHBlcnMuanMnO1xuaW1wb3J0IFJlYWN0X19kZWZhdWx0LCB7IENvbXBvbmVudCwgdXNlU3RhdGUsIHVzZVJlZiwgdXNlRWZmZWN0IH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJztcbmltcG9ydCBjeCBmcm9tICdjbGFzc25hbWVzJztcbmltcG9ydCBMaW5rIGZyb20gJy4uL0xpbmsvTGluay5qcyc7XG5pbXBvcnQgeyBDaGVja2JveENoZWNrZWRGaWxsZWQsIENoZWNrYm94LCBDaGV2cm9uRG93biB9IGZyb20gJ0BjYXJib24vaWNvbnMtcmVhY3QnO1xuaW1wb3J0IGRlcHJlY2F0ZSBmcm9tICcuLi8uLi9wcm9wLXR5cGVzL2RlcHJlY2F0ZS5qcyc7XG5pbXBvcnQgeyBjb21wb3NlRXZlbnRIYW5kbGVycyB9IGZyb20gJy4uLy4uL3Rvb2xzL2V2ZW50cy5qcyc7XG5pbXBvcnQgeyBQcmVmaXhDb250ZXh0LCB1c2VQcmVmaXggfSBmcm9tICcuLi8uLi9pbnRlcm5hbC91c2VQcmVmaXguanMnO1xuaW1wb3J0IHsgbWF0Y2hlcyB9IGZyb20gJy4uLy4uL2ludGVybmFsL2tleWJvYXJkL21hdGNoLmpzJztcbmltcG9ydCB7IEVudGVyLCBTcGFjZSB9IGZyb20gJy4uLy4uL2ludGVybmFsL2tleWJvYXJkL2tleXMuanMnO1xuXG52YXIgX0NoZWNrYm94Q2hlY2tlZEZpbGxlLCBfQ2hlY2tib3gsIF9DaGV2cm9uRG93bjtcblxudmFyIF9leGNsdWRlZCA9IFtcImNoaWxkcmVuXCIsIFwiY2xhc3NOYW1lXCIsIFwibGlnaHRcIl0sXG4gICAgX2V4Y2x1ZGVkMiA9IFtcImNoaWxkcmVuXCIsIFwiaHJlZlwiLCBcImNsYXNzTmFtZVwiLCBcImhhbmRsZUNsaWNrXCIsIFwiaGFuZGxlS2V5RG93blwiLCBcIm9uQ2xpY2tcIiwgXCJvbktleURvd25cIiwgXCJjbGlja2VkXCIsIFwibGlnaHRcIl0sXG4gICAgX2V4Y2x1ZGVkMyA9IFtcImNoaWxkcmVuXCIsIFwiaWRcIiwgXCJ0YWJJbmRleFwiLCBcInZhbHVlXCIsIFwibmFtZVwiLCBcInRpdGxlXCIsIFwiaWNvbkRlc2NyaXB0aW9uXCIsIFwiY2xhc3NOYW1lXCIsIFwiaGFuZGxlQ2xpY2tcIiwgXCJoYW5kbGVLZXlEb3duXCIsIFwib25DbGlja1wiLCBcIm9uQ2hhbmdlXCIsIFwib25LZXlEb3duXCIsIFwibGlnaHRcIiwgXCJkaXNhYmxlZFwiLCBcInNlbGVjdGVkXCJdLFxuICAgIF9leGNsdWRlZDQgPSBbXCJ0YWJJbmRleFwiLCBcImNsYXNzTmFtZVwiLCBcImV4cGFuZGVkXCIsIFwidGlsZU1heEhlaWdodFwiLCBcInRpbGVQYWRkaW5nXCIsIFwiaGFuZGxlQ2xpY2tcIiwgXCJvbktleVVwXCIsIFwidGlsZUNvbGxhcHNlZEljb25UZXh0XCIsIFwidGlsZUV4cGFuZGVkSWNvblRleHRcIiwgXCJ0aWxlQ29sbGFwc2VkTGFiZWxcIiwgXCJ0aWxlRXhwYW5kZWRMYWJlbFwiLCBcIm9uQmVmb3JlQ2xpY2tcIiwgXCJsaWdodFwiXTtcbnZhciBUaWxlID0gLyojX19QVVJFX18qL2Z1bmN0aW9uIChfQ29tcG9uZW50KSB7XG4gIF9pbmhlcml0cyhUaWxlLCBfQ29tcG9uZW50KTtcblxuICB2YXIgX3N1cGVyID0gX2NyZWF0ZVN1cGVyKFRpbGUpO1xuXG4gIGZ1bmN0aW9uIFRpbGUoKSB7XG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIFRpbGUpO1xuXG4gICAgcmV0dXJuIF9zdXBlci5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICB9XG5cbiAgX2NyZWF0ZUNsYXNzKFRpbGUsIFt7XG4gICAga2V5OiBcInJlbmRlclwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiByZW5kZXIoKSB7XG4gICAgICB2YXIgcHJlZml4ID0gdGhpcy5jb250ZXh0O1xuXG4gICAgICB2YXIgX3RoaXMkcHJvcHMgPSB0aGlzLnByb3BzLFxuICAgICAgICAgIGNoaWxkcmVuID0gX3RoaXMkcHJvcHMuY2hpbGRyZW4sXG4gICAgICAgICAgY2xhc3NOYW1lID0gX3RoaXMkcHJvcHMuY2xhc3NOYW1lLFxuICAgICAgICAgIGxpZ2h0ID0gX3RoaXMkcHJvcHMubGlnaHQsXG4gICAgICAgICAgcmVzdCA9IF9vYmplY3RXaXRob3V0UHJvcGVydGllcyhfdGhpcyRwcm9wcywgX2V4Y2x1ZGVkKTtcblxuICAgICAgdmFyIHRpbGVDbGFzc2VzID0gY3goXCJcIi5jb25jYXQocHJlZml4LCBcIi0tdGlsZVwiKSwgX2RlZmluZVByb3BlcnR5KHt9LCBcIlwiLmNvbmNhdChwcmVmaXgsIFwiLS10aWxlLS1saWdodFwiKSwgbGlnaHQpLCBjbGFzc05hbWUpO1xuICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdF9fZGVmYXVsdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIF9leHRlbmRzKHtcbiAgICAgICAgY2xhc3NOYW1lOiB0aWxlQ2xhc3Nlc1xuICAgICAgfSwgcmVzdCksIGNoaWxkcmVuKTtcbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gVGlsZTtcbn0oQ29tcG9uZW50KTtcblxuX2RlZmluZVByb3BlcnR5KFRpbGUsIFwicHJvcFR5cGVzXCIsIHtcbiAgLyoqXG4gICAqIFRoZSBjaGlsZCBub2Rlcy5cbiAgICovXG4gIGNoaWxkcmVuOiBQcm9wVHlwZXMubm9kZSxcblxuICAvKipcbiAgICogVGhlIENTUyBjbGFzcyBuYW1lcy5cbiAgICovXG4gIGNsYXNzTmFtZTogUHJvcFR5cGVzLnN0cmluZyxcblxuICAvKipcbiAgICogYHRydWVgIHRvIHVzZSB0aGUgbGlnaHQgdmVyc2lvbi4gRm9yIHVzZSBvbiAkdWktMDEgYmFja2dyb3VuZHMgb25seS5cbiAgICogRG9uJ3QgdXNlIHRoaXMgdG8gbWFrZSB0aWxlIGJhY2tncm91bmQgY29sb3Igc2FtZSBhcyBjb250YWluZXIgYmFja2dyb3VuZCBjb2xvci5cbiAgICovXG4gIGxpZ2h0OiBQcm9wVHlwZXMuYm9vbFxufSk7XG5cbl9kZWZpbmVQcm9wZXJ0eShUaWxlLCBcImNvbnRleHRUeXBlXCIsIFByZWZpeENvbnRleHQpO1xuXG5fZGVmaW5lUHJvcGVydHkoVGlsZSwgXCJkZWZhdWx0UHJvcHNcIiwge1xuICBsaWdodDogZmFsc2Vcbn0pO1xuXG52YXIgQ2xpY2thYmxlVGlsZSA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoX0NvbXBvbmVudDIpIHtcbiAgX2luaGVyaXRzKENsaWNrYWJsZVRpbGUsIF9Db21wb25lbnQyKTtcblxuICB2YXIgX3N1cGVyMiA9IF9jcmVhdGVTdXBlcihDbGlja2FibGVUaWxlKTtcblxuICBmdW5jdGlvbiBDbGlja2FibGVUaWxlKCkge1xuICAgIHZhciBfdGhpcztcblxuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBDbGlja2FibGVUaWxlKTtcblxuICAgIGZvciAodmFyIF9sZW4gPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gbmV3IEFycmF5KF9sZW4pLCBfa2V5ID0gMDsgX2tleSA8IF9sZW47IF9rZXkrKykge1xuICAgICAgYXJnc1tfa2V5XSA9IGFyZ3VtZW50c1tfa2V5XTtcbiAgICB9XG5cbiAgICBfdGhpcyA9IF9zdXBlcjIuY2FsbC5hcHBseShfc3VwZXIyLCBbdGhpc10uY29uY2F0KGFyZ3MpKTtcblxuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSwgXCJzdGF0ZVwiLCB7fSk7XG5cbiAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcyksIFwiaGFuZGxlQ2xpY2tcIiwgZnVuY3Rpb24gKGV2dCkge1xuICAgICAgZXZ0LnBlcnNpc3QoKTtcblxuICAgICAgX3RoaXMuc2V0U3RhdGUoe1xuICAgICAgICBjbGlja2VkOiAhX3RoaXMuc3RhdGUuY2xpY2tlZFxuICAgICAgfSwgZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgX3RoaXMkcHJvcHMkaGFuZGxlQ2xpLCBfdGhpcyRwcm9wczIsIF90aGlzJHByb3BzJG9uQ2xpY2ssIF90aGlzJHByb3BzMztcblxuICAgICAgICAvLyBUT0RPOiBSZW1vdmUgaGFuZGxlQ2xpY2sgcHJvcCB3aGVuIGhhbmRsZUNsaWNrIGlzIGRlcHJlY2F0ZWRcbiAgICAgICAgKChfdGhpcyRwcm9wcyRoYW5kbGVDbGkgPSAoX3RoaXMkcHJvcHMyID0gX3RoaXMucHJvcHMpLmhhbmRsZUNsaWNrKSA9PT0gbnVsbCB8fCBfdGhpcyRwcm9wcyRoYW5kbGVDbGkgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF90aGlzJHByb3BzJGhhbmRsZUNsaS5jYWxsKF90aGlzJHByb3BzMiwgZXZ0KSkgfHwgKChfdGhpcyRwcm9wcyRvbkNsaWNrID0gKF90aGlzJHByb3BzMyA9IF90aGlzLnByb3BzKS5vbkNsaWNrKSA9PT0gbnVsbCB8fCBfdGhpcyRwcm9wcyRvbkNsaWNrID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfdGhpcyRwcm9wcyRvbkNsaWNrLmNhbGwoX3RoaXMkcHJvcHMzLCBldnQpKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpLCBcImhhbmRsZUtleURvd25cIiwgZnVuY3Rpb24gKGV2dCkge1xuICAgICAgZXZ0LnBlcnNpc3QoKTtcblxuICAgICAgaWYgKG1hdGNoZXMoZXZ0LCBbRW50ZXIsIFNwYWNlXSkpIHtcbiAgICAgICAgX3RoaXMuc2V0U3RhdGUoe1xuICAgICAgICAgIGNsaWNrZWQ6ICFfdGhpcy5zdGF0ZS5jbGlja2VkXG4gICAgICAgIH0sIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICB2YXIgX3RoaXMkcHJvcHMkaGFuZGxlS2V5LCBfdGhpcyRwcm9wczQ7XG5cbiAgICAgICAgICAvLyBUT0RPOiBSZW1vdmUgaGFuZGxlS2V5RG93biBwcm9wIHdoZW4gaGFuZGxlS2V5RG93biBpcyBkZXByZWNhdGVkXG4gICAgICAgICAgKChfdGhpcyRwcm9wcyRoYW5kbGVLZXkgPSAoX3RoaXMkcHJvcHM0ID0gX3RoaXMucHJvcHMpLmhhbmRsZUtleURvd24pID09PSBudWxsIHx8IF90aGlzJHByb3BzJGhhbmRsZUtleSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX3RoaXMkcHJvcHMkaGFuZGxlS2V5LmNhbGwoX3RoaXMkcHJvcHM0LCBldnQpKSB8fCBfdGhpcy5wcm9wcy5vbktleURvd24oZXZ0KTtcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB2YXIgX3RoaXMkcHJvcHMkaGFuZGxlS2V5MiwgX3RoaXMkcHJvcHM1O1xuXG4gICAgICAgIC8vIFRPRE86IFJlbW92ZSBoYW5kbGVLZXlEb3duIHByb3Agd2hlbiBoYW5kbGVLZXlEb3duIGlzIGRlcHJlY2F0ZWRcbiAgICAgICAgKChfdGhpcyRwcm9wcyRoYW5kbGVLZXkyID0gKF90aGlzJHByb3BzNSA9IF90aGlzLnByb3BzKS5oYW5kbGVLZXlEb3duKSA9PT0gbnVsbCB8fCBfdGhpcyRwcm9wcyRoYW5kbGVLZXkyID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfdGhpcyRwcm9wcyRoYW5kbGVLZXkyLmNhbGwoX3RoaXMkcHJvcHM1LCBldnQpKSB8fCBfdGhpcy5wcm9wcy5vbktleURvd24oZXZ0KTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBfdGhpcztcbiAgfVxuXG4gIF9jcmVhdGVDbGFzcyhDbGlja2FibGVUaWxlLCBbe1xuICAgIGtleTogXCJyZW5kZXJcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcmVuZGVyKCkge1xuICAgICAgdmFyIF9jeDI7XG5cbiAgICAgIHZhciBwcmVmaXggPSB0aGlzLmNvbnRleHQ7XG5cbiAgICAgIHZhciBfdGhpcyRwcm9wczYgPSB0aGlzLnByb3BzLFxuICAgICAgICAgIGNoaWxkcmVuID0gX3RoaXMkcHJvcHM2LmNoaWxkcmVuLFxuICAgICAgICAgIGhyZWYgPSBfdGhpcyRwcm9wczYuaHJlZixcbiAgICAgICAgICBjbGFzc05hbWUgPSBfdGhpcyRwcm9wczYuY2xhc3NOYW1lO1xuICAgICAgICAgIF90aGlzJHByb3BzNi5oYW5kbGVDbGljaztcbiAgICAgICAgICBfdGhpcyRwcm9wczYuaGFuZGxlS2V5RG93bjtcbiAgICAgICAgICBfdGhpcyRwcm9wczYub25DbGljaztcbiAgICAgICAgICBfdGhpcyRwcm9wczYub25LZXlEb3duO1xuICAgICAgICAgIF90aGlzJHByb3BzNi5jbGlja2VkO1xuICAgICAgICAgIHZhciBsaWdodCA9IF90aGlzJHByb3BzNi5saWdodCxcbiAgICAgICAgICByZXN0ID0gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzKF90aGlzJHByb3BzNiwgX2V4Y2x1ZGVkMik7XG5cbiAgICAgIHZhciBjbGFzc2VzID0gY3goXCJcIi5jb25jYXQocHJlZml4LCBcIi0tdGlsZVwiKSwgXCJcIi5jb25jYXQocHJlZml4LCBcIi0tdGlsZS0tY2xpY2thYmxlXCIpLCAoX2N4MiA9IHt9LCBfZGVmaW5lUHJvcGVydHkoX2N4MiwgXCJcIi5jb25jYXQocHJlZml4LCBcIi0tdGlsZS0taXMtY2xpY2tlZFwiKSwgdGhpcy5zdGF0ZS5jbGlja2VkKSwgX2RlZmluZVByb3BlcnR5KF9jeDIsIFwiXCIuY29uY2F0KHByZWZpeCwgXCItLXRpbGUtLWxpZ2h0XCIpLCBsaWdodCksIF9jeDIpLCBjbGFzc05hbWUpO1xuICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdF9fZGVmYXVsdC5jcmVhdGVFbGVtZW50KExpbmssIF9leHRlbmRzKHtcbiAgICAgICAgaHJlZjogaHJlZixcbiAgICAgICAgY2xhc3NOYW1lOiBjbGFzc2VzXG4gICAgICB9LCByZXN0LCB7XG4gICAgICAgIG9uQ2xpY2s6IHRoaXMuaGFuZGxlQ2xpY2ssXG4gICAgICAgIG9uS2V5RG93bjogdGhpcy5oYW5kbGVLZXlEb3duXG4gICAgICB9KSwgY2hpbGRyZW4pO1xuICAgIH1cbiAgfV0sIFt7XG4gICAga2V5OiBcImdldERlcml2ZWRTdGF0ZUZyb21Qcm9wc1wiLFxuICAgIHZhbHVlOiAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QvcHJvcC10eXBlc1xuICAgIGZ1bmN0aW9uIGdldERlcml2ZWRTdGF0ZUZyb21Qcm9wcyhfcmVmLCBzdGF0ZSkge1xuICAgICAgdmFyIGNsaWNrZWQgPSBfcmVmLmNsaWNrZWQ7XG4gICAgICB2YXIgcHJldkNsaWNrZWQgPSBzdGF0ZS5wcmV2Q2xpY2tlZDtcbiAgICAgIHJldHVybiBwcmV2Q2xpY2tlZCA9PT0gY2xpY2tlZCA/IG51bGwgOiB7XG4gICAgICAgIGNsaWNrZWQ6IGNsaWNrZWQsXG4gICAgICAgIHByZXZDbGlja2VkOiBjbGlja2VkXG4gICAgICB9O1xuICAgIH1cbiAgfV0pO1xuXG4gIHJldHVybiBDbGlja2FibGVUaWxlO1xufShDb21wb25lbnQpO1xuXG5fZGVmaW5lUHJvcGVydHkoQ2xpY2thYmxlVGlsZSwgXCJwcm9wVHlwZXNcIiwge1xuICAvKipcbiAgICogVGhlIGNoaWxkIG5vZGVzLlxuICAgKi9cbiAgY2hpbGRyZW46IFByb3BUeXBlcy5ub2RlLFxuXG4gIC8qKlxuICAgKiBUaGUgQ1NTIGNsYXNzIG5hbWVzLlxuICAgKi9cbiAgY2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuXG4gIC8qKlxuICAgKiBEZXByZWNhdGVkIGluIHYxMS4gVXNlICdvbkNsaWNrJyBpbnN0ZWFkLlxuICAgKi9cbiAgaGFuZGxlQ2xpY2s6IGRlcHJlY2F0ZShQcm9wVHlwZXMuZnVuYywgJ1RoZSBoYW5kbGVDbGljayBwcm9wIGZvciBDbGlja2FibGVUaWxlIGhhcyBiZWVuIGRlcHJlY2F0ZWQgaW4gZmF2b3Igb2Ygb25DbGljay4gSXQgd2lsbCBiZSByZW1vdmVkIGluIHRoZSBuZXh0IG1ham9yIHJlbGVhc2UuJyksXG5cbiAgLyoqXG4gICAqIFNwZWNpZnkgdGhlIGZ1bmN0aW9uIHRvIHJ1biB3aGVuIHRoZSBDbGlja2FibGVUaWxlIGlzIGludGVyYWN0ZWQgd2l0aCB2aWEgYSBrZXlib2FyZFxuICAgKi9cbiAgaGFuZGxlS2V5RG93bjogZGVwcmVjYXRlKFByb3BUeXBlcy5mdW5jLCAnVGhlIGhhbmRsZUtleURvd24gcHJvcCBmb3IgQ2xpY2thYmxlVGlsZSBoYXMgYmVlbiBkZXByZWNhdGVkIGluIGZhdm9yIG9mIG9uS2V5RG93bi4gSXQgd2lsbCBiZSByZW1vdmVkIGluIHRoZSBuZXh0IG1ham9yIHJlbGVhc2UuJyksXG5cbiAgLyoqXG4gICAqIFRoZSBocmVmIGZvciB0aGUgbGluay5cbiAgICovXG4gIGhyZWY6IFByb3BUeXBlcy5zdHJpbmcsXG5cbiAgLyoqXG4gICAqIGB0cnVlYCB0byB1c2UgdGhlIGxpZ2h0IHZlcnNpb24uIEZvciB1c2Ugb24gJHVpLTAxIGJhY2tncm91bmRzIG9ubHkuXG4gICAqIERvbid0IHVzZSB0aGlzIHRvIG1ha2UgdGlsZSBiYWNrZ3JvdW5kIGNvbG9yIHNhbWUgYXMgY29udGFpbmVyIGJhY2tncm91bmQgY29sb3IuXG4gICAqL1xuICBsaWdodDogUHJvcFR5cGVzLmJvb2wsXG5cbiAgLyoqXG4gICAqIFNwZWNpZnkgdGhlIGZ1bmN0aW9uIHRvIHJ1biB3aGVuIHRoZSBDbGlja2FibGVUaWxlIGlzIGNsaWNrZWRcbiAgICovXG4gIG9uQ2xpY2s6IFByb3BUeXBlcy5mdW5jLFxuXG4gIC8qKlxuICAgKiBTcGVjaWZ5IHRoZSBmdW5jdGlvbiB0byBydW4gd2hlbiB0aGUgQ2xpY2thYmxlVGlsZSBpcyBpbnRlcmFjdGVkIHdpdGggdmlhIGEga2V5Ym9hcmRcbiAgICovXG4gIG9uS2V5RG93bjogUHJvcFR5cGVzLmZ1bmMsXG5cbiAgLyoqXG4gICAqIFRoZSByZWwgcHJvcGVydHkgZm9yIHRoZSBsaW5rLlxuICAgKi9cbiAgcmVsOiBQcm9wVHlwZXMuc3RyaW5nXG59KTtcblxuX2RlZmluZVByb3BlcnR5KENsaWNrYWJsZVRpbGUsIFwiY29udGV4dFR5cGVcIiwgUHJlZml4Q29udGV4dCk7XG5cbl9kZWZpbmVQcm9wZXJ0eShDbGlja2FibGVUaWxlLCBcImRlZmF1bHRQcm9wc1wiLCB7XG4gIGNsaWNrZWQ6IGZhbHNlLFxuICBvbkNsaWNrOiBmdW5jdGlvbiBvbkNsaWNrKCkge30sXG4gIG9uS2V5RG93bjogZnVuY3Rpb24gb25LZXlEb3duKCkge30sXG4gIGxpZ2h0OiBmYWxzZVxufSk7XG5cbmZ1bmN0aW9uIFNlbGVjdGFibGVUaWxlKHByb3BzKSB7XG4gIHZhciBfY3gzO1xuXG4gIHZhciBjaGlsZHJlbiA9IHByb3BzLmNoaWxkcmVuLFxuICAgICAgaWQgPSBwcm9wcy5pZCxcbiAgICAgIHRhYkluZGV4ID0gcHJvcHMudGFiSW5kZXgsXG4gICAgICB2YWx1ZSA9IHByb3BzLnZhbHVlLFxuICAgICAgbmFtZSA9IHByb3BzLm5hbWUsXG4gICAgICB0aXRsZSA9IHByb3BzLnRpdGxlO1xuICAgICAgcHJvcHMuaWNvbkRlc2NyaXB0aW9uO1xuICAgICAgdmFyIGNsYXNzTmFtZSA9IHByb3BzLmNsYXNzTmFtZSxcbiAgICAgIGhhbmRsZUNsaWNrID0gcHJvcHMuaGFuZGxlQ2xpY2ssXG4gICAgICBoYW5kbGVLZXlEb3duID0gcHJvcHMuaGFuZGxlS2V5RG93bixcbiAgICAgIG9uQ2xpY2sgPSBwcm9wcy5vbkNsaWNrLFxuICAgICAgb25DaGFuZ2UgPSBwcm9wcy5vbkNoYW5nZSxcbiAgICAgIG9uS2V5RG93biA9IHByb3BzLm9uS2V5RG93bixcbiAgICAgIGxpZ2h0ID0gcHJvcHMubGlnaHQsXG4gICAgICBkaXNhYmxlZCA9IHByb3BzLmRpc2FibGVkLFxuICAgICAgc2VsZWN0ZWQgPSBwcm9wcy5zZWxlY3RlZCxcbiAgICAgIHJlc3QgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMocHJvcHMsIF9leGNsdWRlZDMpO1xuXG4gIHZhciBwcmVmaXggPSB1c2VQcmVmaXgoKTsgLy8gVE9ETzogcmVwbGFjZSB3aXRoIG9uQ2xpY2sgd2hlbiBoYW5kbGVDbGljayBwcm9wIGlzIGRlcHJlY2F0ZWRcblxuICB2YXIgY2xpY2tIYW5kbGVyID0gaGFuZGxlQ2xpY2sgfHwgb25DbGljazsgLy8gVE9ETzogcmVwbGFjZSB3aXRoIG9uS2V5RG93biB3aGVuIGhhbmRsZUtleURvd24gcHJvcCBpcyBkZXByZWNhdGVkXG5cbiAgdmFyIGtleURvd25IYW5kbGVyID0gaGFuZGxlS2V5RG93biB8fCBvbktleURvd247XG5cbiAgdmFyIF91c2VTdGF0ZSA9IHVzZVN0YXRlKHNlbGVjdGVkKSxcbiAgICAgIF91c2VTdGF0ZTIgPSBfc2xpY2VkVG9BcnJheShfdXNlU3RhdGUsIDIpLFxuICAgICAgaXNTZWxlY3RlZCA9IF91c2VTdGF0ZTJbMF0sXG4gICAgICBzZXRJc1NlbGVjdGVkID0gX3VzZVN0YXRlMlsxXTtcblxuICB2YXIgaW5wdXQgPSB1c2VSZWYobnVsbCk7XG4gIHZhciBjbGFzc2VzID0gY3goXCJcIi5jb25jYXQocHJlZml4LCBcIi0tdGlsZVwiKSwgXCJcIi5jb25jYXQocHJlZml4LCBcIi0tdGlsZS0tc2VsZWN0YWJsZVwiKSwgKF9jeDMgPSB7fSwgX2RlZmluZVByb3BlcnR5KF9jeDMsIFwiXCIuY29uY2F0KHByZWZpeCwgXCItLXRpbGUtLWlzLXNlbGVjdGVkXCIpLCBpc1NlbGVjdGVkKSwgX2RlZmluZVByb3BlcnR5KF9jeDMsIFwiXCIuY29uY2F0KHByZWZpeCwgXCItLXRpbGUtLWxpZ2h0XCIpLCBsaWdodCksIF9kZWZpbmVQcm9wZXJ0eShfY3gzLCBcIlwiLmNvbmNhdChwcmVmaXgsIFwiLS10aWxlLS1kaXNhYmxlZFwiKSwgZGlzYWJsZWQpLCBfY3gzKSwgY2xhc3NOYW1lKTtcbiAgdmFyIGlucHV0Q2xhc3NlcyA9IGN4KFwiXCIuY29uY2F0KHByZWZpeCwgXCItLXRpbGUtaW5wdXRcIiksIF9kZWZpbmVQcm9wZXJ0eSh7fSwgXCJcIi5jb25jYXQocHJlZml4LCBcIi0tdGlsZS1pbnB1dC0tY2hlY2tlZFwiKSwgaXNTZWxlY3RlZCkpOyAvLyBUT0RPOiByZW5hbWUgdG8gaGFuZGxlQ2xpY2sgd2hlbiBoYW5kbGVDbGljayBwcm9wIGlzIGRlcHJlY2F0ZWRcblxuICBmdW5jdGlvbiBoYW5kbGVPbkNsaWNrKGV2dCkge1xuICAgIGV2dC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIGV2dC5wZXJzaXN0KCk7XG4gICAgc2V0SXNTZWxlY3RlZCghaXNTZWxlY3RlZCk7XG4gICAgY2xpY2tIYW5kbGVyKGV2dCk7XG4gICAgb25DaGFuZ2UoZXZ0KTtcbiAgfSAvLyBUT0RPOiByZW5hbWUgdG8gaGFuZGxlS2V5RG93biB3aGVuIGhhbmRsZUtleURvd24gcHJvcCBpcyBkZXByZWNhdGVkXG5cblxuICBmdW5jdGlvbiBoYW5kbGVPbktleURvd24oZXZ0KSB7XG4gICAgZXZ0LnBlcnNpc3QoKTtcblxuICAgIGlmIChtYXRjaGVzKGV2dCwgW0VudGVyLCBTcGFjZV0pKSB7XG4gICAgICBldnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIHNldElzU2VsZWN0ZWQoIWlzU2VsZWN0ZWQpO1xuICAgICAgb25DaGFuZ2UoZXZ0KTtcbiAgICB9XG5cbiAgICBrZXlEb3duSGFuZGxlcihldnQpO1xuICB9XG5cbiAgZnVuY3Rpb24gaGFuZGxlQ2hhbmdlKGV2ZW50KSB7XG4gICAgc2V0SXNTZWxlY3RlZChldmVudC50YXJnZXQuY2hlY2tlZCk7XG4gICAgb25DaGFuZ2UoZXZlbnQpO1xuICB9XG5cbiAgdXNlRWZmZWN0KGZ1bmN0aW9uICgpIHtcbiAgICBzZXRJc1NlbGVjdGVkKHNlbGVjdGVkKTtcbiAgfSwgW3NlbGVjdGVkXSk7XG4gIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3RfX2RlZmF1bHQuY3JlYXRlRWxlbWVudChSZWFjdF9fZGVmYXVsdC5GcmFnbWVudCwgbnVsbCwgLyojX19QVVJFX18qL1JlYWN0X19kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoXCJpbnB1dFwiLCB7XG4gICAgcmVmOiBpbnB1dCxcbiAgICB0YWJJbmRleDogLTEsXG4gICAgaWQ6IGlkLFxuICAgIGNsYXNzTmFtZTogaW5wdXRDbGFzc2VzLFxuICAgIHZhbHVlOiB2YWx1ZSxcbiAgICBvbkNoYW5nZTogIWRpc2FibGVkID8gaGFuZGxlQ2hhbmdlIDogbnVsbCxcbiAgICB0eXBlOiBcImNoZWNrYm94XCIsXG4gICAgZGlzYWJsZWQ6IGRpc2FibGVkLFxuICAgIG5hbWU6IG5hbWUsXG4gICAgdGl0bGU6IHRpdGxlLFxuICAgIGNoZWNrZWQ6IGlzU2VsZWN0ZWRcbiAgfSksIC8qI19fUFVSRV9fKi9SZWFjdF9fZGVmYXVsdC5jcmVhdGVFbGVtZW50KFwibGFiZWxcIiwgX2V4dGVuZHMoe1xuICAgIGh0bWxGb3I6IGlkLFxuICAgIGNsYXNzTmFtZTogY2xhc3NlcyAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganN4LWExMXkvbm8tbm9uaW50ZXJhY3RpdmUtdGFiaW5kZXhcbiAgICAsXG4gICAgdGFiSW5kZXg6ICFkaXNhYmxlZCA/IHRhYkluZGV4IDogbnVsbFxuICB9LCByZXN0LCB7XG4gICAgb25DbGljazogIWRpc2FibGVkID8gaGFuZGxlT25DbGljayA6IG51bGwsXG4gICAgb25LZXlEb3duOiAhZGlzYWJsZWQgPyBoYW5kbGVPbktleURvd24gOiBudWxsXG4gIH0pLCAvKiNfX1BVUkVfXyovUmVhY3RfX2RlZmF1bHQuY3JlYXRlRWxlbWVudChcInNwYW5cIiwge1xuICAgIGNsYXNzTmFtZTogXCJcIi5jb25jYXQocHJlZml4LCBcIi0tdGlsZV9fY2hlY2ttYXJrIFwiKS5jb25jYXQocHJlZml4LCBcIi0tdGlsZV9fY2hlY2ttYXJrLS1wZXJzaXN0ZW50XCIpXG4gIH0sIGlzU2VsZWN0ZWQgPyBfQ2hlY2tib3hDaGVja2VkRmlsbGUgfHwgKF9DaGVja2JveENoZWNrZWRGaWxsZSA9IC8qI19fUFVSRV9fKi9SZWFjdF9fZGVmYXVsdC5jcmVhdGVFbGVtZW50KENoZWNrYm94Q2hlY2tlZEZpbGxlZCwgbnVsbCkpIDogX0NoZWNrYm94IHx8IChfQ2hlY2tib3ggPSAvKiNfX1BVUkVfXyovUmVhY3RfX2RlZmF1bHQuY3JlYXRlRWxlbWVudChDaGVja2JveCwgbnVsbCkpKSwgLyojX19QVVJFX18qL1JlYWN0X19kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoXCJzcGFuXCIsIHtcbiAgICBjbGFzc05hbWU6IFwiXCIuY29uY2F0KHByZWZpeCwgXCItLXRpbGUtY29udGVudFwiKVxuICB9LCBjaGlsZHJlbikpKTtcbn1cblNlbGVjdGFibGVUaWxlLmRlZmF1bHRQcm9wcyA9IHtcbiAgdmFsdWU6ICd2YWx1ZScsXG4gIHRpdGxlOiAndGl0bGUnLFxuICBzZWxlY3RlZDogZmFsc2UsXG4gIHRhYkluZGV4OiAwLFxuICBsaWdodDogZmFsc2UsXG4gIG9uQ2xpY2s6IGZ1bmN0aW9uIG9uQ2xpY2soKSB7fSxcbiAgb25DaGFuZ2U6IGZ1bmN0aW9uIG9uQ2hhbmdlKCkge30sXG4gIG9uS2V5RG93bjogZnVuY3Rpb24gb25LZXlEb3duKCkge31cbn07XG5TZWxlY3RhYmxlVGlsZS5wcm9wVHlwZXMgPSB7XG4gIC8qKlxuICAgKiBUaGUgY2hpbGQgbm9kZXMuXG4gICAqL1xuICBjaGlsZHJlbjogUHJvcFR5cGVzLm5vZGUsXG5cbiAgLyoqXG4gICAqIFRoZSBDU1MgY2xhc3MgbmFtZXMuXG4gICAqL1xuICBjbGFzc05hbWU6IFByb3BUeXBlcy5zdHJpbmcsXG5cbiAgLyoqXG4gICAqIFNwZWNpZnkgd2hldGhlciB0aGUgU2VsZWN0YWJsZVRpbGUgc2hvdWxkIGJlIGRpc2FibGVkXG4gICAqL1xuICBkaXNhYmxlZDogUHJvcFR5cGVzLmJvb2wsXG5cbiAgLyoqXG4gICAqIFNwZWNpZnkgdGhlIGZ1bmN0aW9uIHRvIHJ1biB3aGVuIHRoZSBTZWxlY3RhYmxlVGlsZSBpcyBjbGlja2VkXG4gICAqL1xuICBoYW5kbGVDbGljazogZGVwcmVjYXRlKFByb3BUeXBlcy5mdW5jLCAnVGhlIGBoYW5kbGVDbGlja2AgcHJvcCBmb3IgYFNlbGVjdGFibGVUaWxlYCBoYXMgYmVlbiBkZXByZWNhdGVkIGluIGZhdm9yIG9mIGBvbkNsaWNrYC4gSXQgd2lsbCBiZSByZW1vdmVkIGluIHRoZSBuZXh0IG1ham9yIHJlbGVhc2UuJyksXG5cbiAgLyoqXG4gICAqIFNwZWNpZnkgdGhlIGZ1bmN0aW9uIHRvIHJ1biB3aGVuIHRoZSBTZWxlY3RhYmxlVGlsZSBpcyBpbnRlcmFjdGVkIHdpdGggdmlhIGEga2V5Ym9hcmRcbiAgICovXG4gIGhhbmRsZUtleURvd246IGRlcHJlY2F0ZShQcm9wVHlwZXMuZnVuYywgJ1RoZSBgaGFuZGxlS2V5RG93bmAgcHJvcCBmb3IgYFNlbGVjdGFibGVUaWxlYCBoYXMgYmVlbiBkZXByZWNhdGVkIGluIGZhdm9yIG9mIGBvbktleURvd25gLiBJdCB3aWxsIGJlIHJlbW92ZWQgaW4gdGhlIG5leHQgbWFqb3IgcmVsZWFzZS4nKSxcblxuICAvKipcbiAgICogVGhlIGRlc2NyaXB0aW9uIG9mIHRoZSBjaGVja21hcmsgaWNvbi5cbiAgICovXG4gIGljb25EZXNjcmlwdGlvbjogZGVwcmVjYXRlKFByb3BUeXBlcy5zdHJpbmcsICdUaGUgYGljb25EZXNjcmlwdGlvbmAgcHJvcCBmb3IgYFNlbGVjdGFibGVUaWxlYCBpcyBubyBsb25nZXIgbmVlZGVkIGFuZCBoYXMgJyArICdiZWVuIGRlcHJlY2F0ZWQuIEl0IHdpbGwgYmUgcmVtb3ZlZCBpbiB0aGUgbmV4dCBtYWpvciByZWxlYXNlLicpLFxuXG4gIC8qKlxuICAgKiBUaGUgSUQgb2YgdGhlIGA8aW5wdXQ+YC5cbiAgICovXG4gIGlkOiBQcm9wVHlwZXMuc3RyaW5nLFxuXG4gIC8qKlxuICAgKiBgdHJ1ZWAgdG8gdXNlIHRoZSBsaWdodCB2ZXJzaW9uLiBGb3IgdXNlIG9uICR1aS0wMSBiYWNrZ3JvdW5kcyBvbmx5LlxuICAgKiBEb24ndCB1c2UgdGhpcyB0byBtYWtlIHRpbGUgYmFja2dyb3VuZCBjb2xvciBzYW1lIGFzIGNvbnRhaW5lciBiYWNrZ3JvdW5kIGNvbG9yLlxuICAgKi9cbiAgbGlnaHQ6IFByb3BUeXBlcy5ib29sLFxuXG4gIC8qKlxuICAgKiBUaGUgYG5hbWVgIG9mIHRoZSBgPGlucHV0PmAuXG4gICAqL1xuICBuYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuXG4gIC8qKlxuICAgKiBUaGUgZW1wdHkgaGFuZGxlciBvZiB0aGUgYDxpbnB1dD5gLlxuICAgKi9cbiAgb25DaGFuZ2U6IFByb3BUeXBlcy5mdW5jLFxuXG4gIC8qKlxuICAgKiBTcGVjaWZ5IHRoZSBmdW5jdGlvbiB0byBydW4gd2hlbiB0aGUgU2VsZWN0YWJsZVRpbGUgaXMgY2xpY2tlZFxuICAgKi9cbiAgb25DbGljazogUHJvcFR5cGVzLmZ1bmMsXG5cbiAgLyoqXG4gICAqIFNwZWNpZnkgdGhlIGZ1bmN0aW9uIHRvIHJ1biB3aGVuIHRoZSBTZWxlY3RhYmxlVGlsZSBpcyBpbnRlcmFjdGVkIHdpdGggdmlhIGEga2V5Ym9hcmRcbiAgICovXG4gIG9uS2V5RG93bjogUHJvcFR5cGVzLmZ1bmMsXG5cbiAgLyoqXG4gICAqIGB0cnVlYCB0byBzZWxlY3QgdGhpcyB0aWxlLlxuICAgKi9cbiAgc2VsZWN0ZWQ6IFByb3BUeXBlcy5ib29sLFxuXG4gIC8qKlxuICAgKiBTcGVjaWZ5IHRoZSB0YWIgaW5kZXggb2YgdGhlIHdyYXBwZXIgZWxlbWVudFxuICAgKi9cbiAgdGFiSW5kZXg6IFByb3BUeXBlcy5udW1iZXIsXG5cbiAgLyoqXG4gICAqIFRoZSBgdGl0bGVgIG9mIHRoZSBgPGlucHV0PmAuXG4gICAqL1xuICB0aXRsZTogUHJvcFR5cGVzLnN0cmluZyxcblxuICAvKipcbiAgICogVGhlIHZhbHVlIG9mIHRoZSBgPGlucHV0PmAuXG4gICAqL1xuICB2YWx1ZTogUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLnN0cmluZywgUHJvcFR5cGVzLm51bWJlcl0pLmlzUmVxdWlyZWRcbn07XG52YXIgRXhwYW5kYWJsZVRpbGUgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKF9Db21wb25lbnQzKSB7XG4gIF9pbmhlcml0cyhFeHBhbmRhYmxlVGlsZSwgX0NvbXBvbmVudDMpO1xuXG4gIHZhciBfc3VwZXIzID0gX2NyZWF0ZVN1cGVyKEV4cGFuZGFibGVUaWxlKTtcblxuICBmdW5jdGlvbiBFeHBhbmRhYmxlVGlsZSgpIHtcbiAgICB2YXIgX3RoaXMyO1xuXG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIEV4cGFuZGFibGVUaWxlKTtcblxuICAgIGZvciAodmFyIF9sZW4yID0gYXJndW1lbnRzLmxlbmd0aCwgYXJncyA9IG5ldyBBcnJheShfbGVuMiksIF9rZXkyID0gMDsgX2tleTIgPCBfbGVuMjsgX2tleTIrKykge1xuICAgICAgYXJnc1tfa2V5Ml0gPSBhcmd1bWVudHNbX2tleTJdO1xuICAgIH1cblxuICAgIF90aGlzMiA9IF9zdXBlcjMuY2FsbC5hcHBseShfc3VwZXIzLCBbdGhpc10uY29uY2F0KGFyZ3MpKTtcblxuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzMiksIFwic3RhdGVcIiwge30pO1xuXG4gICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMyKSwgXCJyZXNpemVPYnNlcnZlclwiLCBudWxsKTtcblxuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzMiksIFwiY29tcG9uZW50RGlkTW91bnRcIiwgZnVuY3Rpb24gKCkge1xuICAgICAgX3RoaXMyLnJlc2l6ZU9ic2VydmVyID0gbmV3IFJlc2l6ZU9ic2VydmVyKGZ1bmN0aW9uIChlbnRyaWVzKSB7XG4gICAgICAgIHZhciBfZW50cmllcyA9IF9zbGljZWRUb0FycmF5KGVudHJpZXMsIDEpLFxuICAgICAgICAgICAgYWJvdmVUaGVGb2xkID0gX2VudHJpZXNbMF07XG5cbiAgICAgICAgX3RoaXMyLnNldFN0YXRlKHtcbiAgICAgICAgICB0aWxlTWF4SGVpZ2h0OiBhYm92ZVRoZUZvbGQuY29udGVudFJlY3QuaGVpZ2h0XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG5cbiAgICAgIGlmIChfdGhpczIudGlsZSkge1xuICAgICAgICB2YXIgZ2V0U3R5bGUgPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShfdGhpczIudGlsZSwgbnVsbCk7XG5cbiAgICAgICAgaWYgKF90aGlzMi5hYm92ZVRoZUZvbGQpIHtcbiAgICAgICAgICBfdGhpczIucmVzaXplT2JzZXJ2ZXIub2JzZXJ2ZShfdGhpczIuYWJvdmVUaGVGb2xkKTtcblxuICAgICAgICAgIF90aGlzMi5zZXRTdGF0ZSh7XG4gICAgICAgICAgICB0aWxlTWF4SGVpZ2h0OiBfdGhpczIuYWJvdmVUaGVGb2xkLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmhlaWdodCxcbiAgICAgICAgICAgIHRpbGVQYWRkaW5nOiBwYXJzZUludChnZXRTdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCdwYWRkaW5nLXRvcCcpLCAxMCkgKyBwYXJzZUludChnZXRTdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCdwYWRkaW5nLWJvdHRvbScpLCAxMClcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuXG4gICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMyKSwgXCJjb21wb25lbnREaWRVcGRhdGVcIiwgZnVuY3Rpb24gKHByZXZQcm9wcykge1xuICAgICAgaWYgKHByZXZQcm9wcy5leHBhbmRlZCAhPT0gX3RoaXMyLnByb3BzLmV4cGFuZGVkKSB7XG4gICAgICAgIF90aGlzMi5zZXRNYXhIZWlnaHQoKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzMiksIFwic2V0TWF4SGVpZ2h0XCIsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGlmIChfdGhpczIuc3RhdGUuZXhwYW5kZWQgPyBfdGhpczIudGlsZUNvbnRlbnQgOiBfdGhpczIuYWJvdmVUaGVGb2xkKSB7XG4gICAgICAgIF90aGlzMi5zZXRTdGF0ZSh7XG4gICAgICAgICAgdGlsZU1heEhlaWdodDogX3RoaXMyLnN0YXRlLmV4cGFuZGVkID8gX3RoaXMyLnRpbGVDb250ZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmhlaWdodCA6IF90aGlzMi5hYm92ZVRoZUZvbGQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkuaGVpZ2h0XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMyKSwgXCJoYW5kbGVDbGlja1wiLCBmdW5jdGlvbiAoZXZ0KSB7XG4gICAgICBpZiAoIV90aGlzMi5wcm9wcy5vbkJlZm9yZUNsaWNrKGV2dCkgfHwgZXZ0LnRhcmdldC50YWdOYW1lID09PSAnSU5QVVQnKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgZXZ0LnBlcnNpc3QoKTtcblxuICAgICAgX3RoaXMyLnNldFN0YXRlKHtcbiAgICAgICAgZXhwYW5kZWQ6ICFfdGhpczIuc3RhdGUuZXhwYW5kZWRcbiAgICAgIH0sIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIF90aGlzMiRwcm9wcyRoYW5kbGVDbCwgX3RoaXMyJHByb3BzLCBfdGhpczIkcHJvcHMkb25DbGljaywgX3RoaXMyJHByb3BzMjtcblxuICAgICAgICBfdGhpczIuc2V0TWF4SGVpZ2h0KCk7IC8vIFRPRE86IFJlbW92ZSBoYW5kbGVDbGljayBwcm9wIHdoZW4gaGFuZGxlQ2xpY2sgaXMgZGVwcmVjYXRlZFxuXG5cbiAgICAgICAgKChfdGhpczIkcHJvcHMkaGFuZGxlQ2wgPSAoX3RoaXMyJHByb3BzID0gX3RoaXMyLnByb3BzKS5oYW5kbGVDbGljaykgPT09IG51bGwgfHwgX3RoaXMyJHByb3BzJGhhbmRsZUNsID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfdGhpczIkcHJvcHMkaGFuZGxlQ2wuY2FsbChfdGhpczIkcHJvcHMsIGV2dCkpIHx8ICgoX3RoaXMyJHByb3BzJG9uQ2xpY2sgPSAoX3RoaXMyJHByb3BzMiA9IF90aGlzMi5wcm9wcykub25DbGljaykgPT09IG51bGwgfHwgX3RoaXMyJHByb3BzJG9uQ2xpY2sgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF90aGlzMiRwcm9wcyRvbkNsaWNrLmNhbGwoX3RoaXMyJHByb3BzMiwgZXZ0KSk7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzMiksIFwiaGFuZGxlS2V5VXBcIiwgZnVuY3Rpb24gKGV2dCkge1xuICAgICAgaWYgKGV2dC50YXJnZXQgIT09IF90aGlzMi50aWxlKSB7XG4gICAgICAgIGlmIChtYXRjaGVzKGV2dCwgW0VudGVyLCBTcGFjZV0pKSB7XG4gICAgICAgICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcblxuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzMiksIFwiZ2V0Q2hpbGRyZW5cIiwgZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIFJlYWN0X19kZWZhdWx0LkNoaWxkcmVuLnRvQXJyYXkoX3RoaXMyLnByb3BzLmNoaWxkcmVuKTtcbiAgICB9KTtcblxuICAgIHJldHVybiBfdGhpczI7XG4gIH1cblxuICBfY3JlYXRlQ2xhc3MoRXhwYW5kYWJsZVRpbGUsIFt7XG4gICAga2V5OiBcImNvbXBvbmVudFdpbGxVbm1vdW50XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGNvbXBvbmVudFdpbGxVbm1vdW50KCkge1xuICAgICAgaWYgKHRoaXMucmVzaXplT2JzZXJ2ZXIpIHtcbiAgICAgICAgdGhpcy5yZXNpemVPYnNlcnZlci5kaXNjb25uZWN0KCk7XG4gICAgICB9XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInJlbmRlclwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiByZW5kZXIoKSB7XG4gICAgICB2YXIgX2N4NSxcbiAgICAgICAgICBfdGhpczMgPSB0aGlzO1xuXG4gICAgICB2YXIgX3RoaXMkcHJvcHM3ID0gdGhpcy5wcm9wcyxcbiAgICAgICAgICB0YWJJbmRleCA9IF90aGlzJHByb3BzNy50YWJJbmRleCxcbiAgICAgICAgICBjbGFzc05hbWUgPSBfdGhpcyRwcm9wczcuY2xhc3NOYW1lO1xuICAgICAgICAgIF90aGlzJHByb3BzNy5leHBhbmRlZDtcbiAgICAgICAgICBfdGhpcyRwcm9wczcudGlsZU1heEhlaWdodDtcbiAgICAgICAgICBfdGhpcyRwcm9wczcudGlsZVBhZGRpbmc7XG4gICAgICAgICAgX3RoaXMkcHJvcHM3LmhhbmRsZUNsaWNrO1xuICAgICAgICAgIHZhciBvbktleVVwID0gX3RoaXMkcHJvcHM3Lm9uS2V5VXAsXG4gICAgICAgICAgdGlsZUNvbGxhcHNlZEljb25UZXh0ID0gX3RoaXMkcHJvcHM3LnRpbGVDb2xsYXBzZWRJY29uVGV4dCxcbiAgICAgICAgICB0aWxlRXhwYW5kZWRJY29uVGV4dCA9IF90aGlzJHByb3BzNy50aWxlRXhwYW5kZWRJY29uVGV4dCxcbiAgICAgICAgICB0aWxlQ29sbGFwc2VkTGFiZWwgPSBfdGhpcyRwcm9wczcudGlsZUNvbGxhcHNlZExhYmVsLFxuICAgICAgICAgIHRpbGVFeHBhbmRlZExhYmVsID0gX3RoaXMkcHJvcHM3LnRpbGVFeHBhbmRlZExhYmVsO1xuICAgICAgICAgIF90aGlzJHByb3BzNy5vbkJlZm9yZUNsaWNrO1xuICAgICAgICAgIHZhciBsaWdodCA9IF90aGlzJHByb3BzNy5saWdodCxcbiAgICAgICAgICByZXN0ID0gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzKF90aGlzJHByb3BzNywgX2V4Y2x1ZGVkNCk7XG5cbiAgICAgIHZhciBwcmVmaXggPSB0aGlzLmNvbnRleHQ7XG4gICAgICB2YXIgaXNFeHBhbmRlZCA9IHRoaXMuc3RhdGUuZXhwYW5kZWQ7XG4gICAgICB2YXIgY2xhc3NlcyA9IGN4KFwiXCIuY29uY2F0KHByZWZpeCwgXCItLXRpbGVcIiksIFwiXCIuY29uY2F0KHByZWZpeCwgXCItLXRpbGUtLWV4cGFuZGFibGVcIiksIChfY3g1ID0ge30sIF9kZWZpbmVQcm9wZXJ0eShfY3g1LCBcIlwiLmNvbmNhdChwcmVmaXgsIFwiLS10aWxlLS1pcy1leHBhbmRlZFwiKSwgaXNFeHBhbmRlZCksIF9kZWZpbmVQcm9wZXJ0eShfY3g1LCBcIlwiLmNvbmNhdChwcmVmaXgsIFwiLS10aWxlLS1saWdodFwiKSwgbGlnaHQpLCBfY3g1KSwgY2xhc3NOYW1lKTtcbiAgICAgIHZhciB0aWxlU3R5bGUgPSB7XG4gICAgICAgIG1heEhlaWdodDogaXNFeHBhbmRlZCA/IG51bGwgOiB0aGlzLnN0YXRlLnRpbGVNYXhIZWlnaHQgKyB0aGlzLnN0YXRlLnRpbGVQYWRkaW5nXG4gICAgICB9O1xuICAgICAgdmFyIGNoaWxkcmVuQXNBcnJheSA9IHRoaXMuZ2V0Q2hpbGRyZW4oKTtcbiAgICAgIHJldHVybiAoXG4gICAgICAgIC8qI19fUFVSRV9fKi9cbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzeC1hMTF5L2NsaWNrLWV2ZW50cy1oYXZlLWtleS1ldmVudHMsanN4LWExMXkvbm8tc3RhdGljLWVsZW1lbnQtaW50ZXJhY3Rpb25zXG4gICAgICAgIFJlYWN0X19kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoXCJidXR0b25cIiwgX2V4dGVuZHMoe1xuICAgICAgICAgIHR5cGU6IFwiYnV0dG9uXCIsXG4gICAgICAgICAgcmVmOiBmdW5jdGlvbiByZWYodGlsZSkge1xuICAgICAgICAgICAgX3RoaXMzLnRpbGUgPSB0aWxlO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgc3R5bGU6IHRpbGVTdHlsZSxcbiAgICAgICAgICBjbGFzc05hbWU6IGNsYXNzZXMsXG4gICAgICAgICAgXCJhcmlhLWV4cGFuZGVkXCI6IGlzRXhwYW5kZWQsXG4gICAgICAgICAgdGl0bGU6IGlzRXhwYW5kZWQgPyB0aWxlRXhwYW5kZWRJY29uVGV4dCA6IHRpbGVDb2xsYXBzZWRJY29uVGV4dFxuICAgICAgICB9LCByZXN0LCB7XG4gICAgICAgICAgb25LZXlVcDogY29tcG9zZUV2ZW50SGFuZGxlcnMoW29uS2V5VXAsIHRoaXMuaGFuZGxlS2V5VXBdKSxcbiAgICAgICAgICBvbkNsaWNrOiB0aGlzLmhhbmRsZUNsaWNrLFxuICAgICAgICAgIHRhYkluZGV4OiB0YWJJbmRleFxuICAgICAgICB9KSwgLyojX19QVVJFX18qL1JlYWN0X19kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwge1xuICAgICAgICAgIHJlZjogZnVuY3Rpb24gcmVmKHRpbGVDb250ZW50KSB7XG4gICAgICAgICAgICBfdGhpczMudGlsZUNvbnRlbnQgPSB0aWxlQ29udGVudDtcbiAgICAgICAgICB9XG4gICAgICAgIH0sIC8qI19fUFVSRV9fKi9SZWFjdF9fZGVmYXVsdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHtcbiAgICAgICAgICByZWY6IGZ1bmN0aW9uIHJlZihhYm92ZVRoZUZvbGQpIHtcbiAgICAgICAgICAgIF90aGlzMy5hYm92ZVRoZUZvbGQgPSBhYm92ZVRoZUZvbGQ7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBjbGFzc05hbWU6IFwiXCIuY29uY2F0KHByZWZpeCwgXCItLXRpbGUtY29udGVudFwiKVxuICAgICAgICB9LCBjaGlsZHJlbkFzQXJyYXlbMF0pLCAvKiNfX1BVUkVfXyovUmVhY3RfX2RlZmF1bHQuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7XG4gICAgICAgICAgY2xhc3NOYW1lOiBcIlwiLmNvbmNhdChwcmVmaXgsIFwiLS10aWxlX19jaGV2cm9uXCIpXG4gICAgICAgIH0sIC8qI19fUFVSRV9fKi9SZWFjdF9fZGVmYXVsdC5jcmVhdGVFbGVtZW50KFwic3BhblwiLCBudWxsLCBpc0V4cGFuZGVkID8gdGlsZUV4cGFuZGVkTGFiZWwgOiB0aWxlQ29sbGFwc2VkTGFiZWwpLCBfQ2hldnJvbkRvd24gfHwgKF9DaGV2cm9uRG93biA9IC8qI19fUFVSRV9fKi9SZWFjdF9fZGVmYXVsdC5jcmVhdGVFbGVtZW50KENoZXZyb25Eb3duLCBudWxsKSkpLCAvKiNfX1BVUkVfXyovUmVhY3RfX2RlZmF1bHQuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7XG4gICAgICAgICAgY2xhc3NOYW1lOiBcIlwiLmNvbmNhdChwcmVmaXgsIFwiLS10aWxlLWNvbnRlbnRcIilcbiAgICAgICAgfSwgY2hpbGRyZW5Bc0FycmF5WzFdKSkpXG4gICAgICApO1xuICAgIH1cbiAgfV0sIFt7XG4gICAga2V5OiBcImdldERlcml2ZWRTdGF0ZUZyb21Qcm9wc1wiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXREZXJpdmVkU3RhdGVGcm9tUHJvcHMoIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC9wcm9wLXR5cGVzXG4gICAgX3JlZjIsIHN0YXRlKSB7XG4gICAgICB2YXIgZXhwYW5kZWQgPSBfcmVmMi5leHBhbmRlZCxcbiAgICAgICAgICB0aWxlTWF4SGVpZ2h0ID0gX3JlZjIudGlsZU1heEhlaWdodCxcbiAgICAgICAgICB0aWxlUGFkZGluZyA9IF9yZWYyLnRpbGVQYWRkaW5nO1xuICAgICAgdmFyIHByZXZFeHBhbmRlZCA9IHN0YXRlLnByZXZFeHBhbmRlZCxcbiAgICAgICAgICBwcmV2VGlsZU1heEhlaWdodCA9IHN0YXRlLnByZXZUaWxlTWF4SGVpZ2h0LFxuICAgICAgICAgIHByZXZUaWxlUGFkZGluZyA9IHN0YXRlLnByZXZUaWxlUGFkZGluZyxcbiAgICAgICAgICBjdXJyZW50RXhwYW5kZWQgPSBzdGF0ZS5leHBhbmRlZCxcbiAgICAgICAgICBjdXJyZW50VGlsZU1heEhlaWdodCA9IHN0YXRlLnRpbGVNYXhIZWlnaHQsXG4gICAgICAgICAgY3VycmVudFRpbGVQYWRkaW5nID0gc3RhdGUudGlsZVBhZGRpbmc7XG4gICAgICB2YXIgZXhwYW5kZWRDaGFuZ2VkID0gcHJldkV4cGFuZGVkICE9PSBleHBhbmRlZDtcbiAgICAgIHZhciB0aWxlTWF4SGVpZ2h0Q2hhbmdlZCA9IHByZXZUaWxlTWF4SGVpZ2h0ICE9PSB0aWxlTWF4SGVpZ2h0O1xuICAgICAgdmFyIHRpbGVQYWRkaW5nQ2hhbmdlZCA9IHByZXZUaWxlUGFkZGluZyAhPT0gdGlsZVBhZGRpbmc7XG4gICAgICByZXR1cm4gIWV4cGFuZGVkQ2hhbmdlZCAmJiAhdGlsZU1heEhlaWdodENoYW5nZWQgJiYgIXRpbGVQYWRkaW5nQ2hhbmdlZCA/IG51bGwgOiB7XG4gICAgICAgIGV4cGFuZGVkOiAhZXhwYW5kZWRDaGFuZ2VkID8gY3VycmVudEV4cGFuZGVkIDogZXhwYW5kZWQsXG4gICAgICAgIHRpbGVNYXhIZWlnaHQ6ICF0aWxlTWF4SGVpZ2h0Q2hhbmdlZCA/IGN1cnJlbnRUaWxlTWF4SGVpZ2h0IDogdGlsZU1heEhlaWdodCxcbiAgICAgICAgdGlsZVBhZGRpbmc6ICF0aWxlUGFkZGluZ0NoYW5nZWQgPyBjdXJyZW50VGlsZVBhZGRpbmcgOiB0aWxlUGFkZGluZyxcbiAgICAgICAgcHJldkV4cGFuZGVkOiBleHBhbmRlZCxcbiAgICAgICAgcHJldlRpbGVNYXhIZWlnaHQ6IHRpbGVNYXhIZWlnaHQsXG4gICAgICAgIHByZXZUaWxlUGFkZGluZzogdGlsZVBhZGRpbmdcbiAgICAgIH07XG4gICAgfVxuICB9XSk7XG5cbiAgcmV0dXJuIEV4cGFuZGFibGVUaWxlO1xufShDb21wb25lbnQpO1xuXG5fZGVmaW5lUHJvcGVydHkoRXhwYW5kYWJsZVRpbGUsIFwicHJvcFR5cGVzXCIsIHtcbiAgLyoqXG4gICAqIFRoZSBjaGlsZCBub2Rlcy5cbiAgICovXG4gIGNoaWxkcmVuOiBQcm9wVHlwZXMubm9kZSxcblxuICAvKipcbiAgICogVGhlIENTUyBjbGFzcyBuYW1lcy5cbiAgICovXG4gIGNsYXNzTmFtZTogUHJvcFR5cGVzLnN0cmluZyxcblxuICAvKipcbiAgICogYHRydWVgIGlmIHRoZSB0aWxlIGlzIGV4cGFuZGVkLlxuICAgKi9cbiAgZXhwYW5kZWQ6IFByb3BUeXBlcy5ib29sLFxuXG4gIC8qKlxuICAgKiBEZXByZWNhdGVkIGluIHYxMS4gVXNlICdvbkNsaWNrJyBpbnN0ZWFkLlxuICAgKi9cbiAgaGFuZGxlQ2xpY2s6IGRlcHJlY2F0ZShQcm9wVHlwZXMuZnVuYywgJ1RoZSBoYW5kbGVDbGljayBwcm9wIGZvciBFeHBhbmRhYmxlVGlsZSBoYXMgYmVlbiBkZXByZWNhdGVkIGluIGZhdm9yIG9mIG9uQ2xpY2suIEl0IHdpbGwgYmUgcmVtb3ZlZCBpbiB0aGUgbmV4dCBtYWpvciByZWxlYXNlLicpLFxuXG4gIC8qKlxuICAgKiBBbiBJRCB0aGF0IGNhbiBiZSBwcm92aWRlZCB0byBhcmlhLWxhYmVsbGVkYnlcbiAgICovXG4gIGlkOiBQcm9wVHlwZXMuc3RyaW5nLFxuXG4gIC8qKlxuICAgKiBgdHJ1ZWAgdG8gdXNlIHRoZSBsaWdodCB2ZXJzaW9uLiBGb3IgdXNlIG9uICR1aS0wMSBiYWNrZ3JvdW5kcyBvbmx5LlxuICAgKiBEb24ndCB1c2UgdGhpcyB0byBtYWtlIHRpbGUgYmFja2dyb3VuZCBjb2xvciBzYW1lIGFzIGNvbnRhaW5lciBiYWNrZ3JvdW5kIGNvbG9yLlxuICAgKi9cbiAgbGlnaHQ6IFByb3BUeXBlcy5ib29sLFxuXG4gIC8qKlxuICAgKiBvcHRpb25hbCBoYW5kbGVyIHRvIGRlY2lkZSB3aGV0aGVyIHRvIGlnbm9yZSBhIGNsaWNrLiByZXR1cm5zIGZhbHNlIGlmIGNsaWNrIHNob3VsZCBiZSBpZ25vcmVkXG4gICAqL1xuICBvbkJlZm9yZUNsaWNrOiBQcm9wVHlwZXMuZnVuYyxcblxuICAvKipcbiAgICogU3BlY2lmeSB0aGUgZnVuY3Rpb24gdG8gcnVuIHdoZW4gdGhlIEV4cGFuZGFibGVUaWxlIGlzIGNsaWNrZWRcbiAgICAqL1xuICBvbkNsaWNrOiBQcm9wVHlwZXMuZnVuYyxcblxuICAvKipcbiAgICogb3B0aW9uYWwgaGFuZGxlciB0byB0cmlnZ2VyIGEgZnVuY3Rpb24gd2hlbiBhIGtleSBpcyBwcmVzc2VkXG4gICAqL1xuICBvbktleVVwOiBQcm9wVHlwZXMuZnVuYyxcblxuICAvKipcbiAgICogVGhlIGB0YWJpbmRleGAgYXR0cmlidXRlLlxuICAgKi9cbiAgdGFiSW5kZXg6IFByb3BUeXBlcy5udW1iZXIsXG5cbiAgLyoqXG4gICAqIFRoZSBkZXNjcmlwdGlvbiBvZiB0aGUgXCJjb2xsYXBzZWRcIiBpY29uIHRoYXQgY2FuIGJlIHJlYWQgYnkgc2NyZWVuIHJlYWRlcnMuXG4gICAqL1xuICB0aWxlQ29sbGFwc2VkSWNvblRleHQ6IFByb3BUeXBlcy5zdHJpbmcsXG5cbiAgLyoqXG4gICAqIFdoZW4gXCJjb2xsYXBzZWRcIiwgYSBsYWJlbCB0byBhcHBlYXIgbmV4dCB0byB0aGUgY2hldnJvbiAoZS5nLiwgXCJWaWV3IG1vcmVcIikuXG4gICAqL1xuICB0aWxlQ29sbGFwc2VkTGFiZWw6IFByb3BUeXBlcy5zdHJpbmcsXG5cbiAgLyoqXG4gICAqIFRoZSBkZXNjcmlwdGlvbiBvZiB0aGUgXCJleHBhbmRlZFwiIGljb24gdGhhdCBjYW4gYmUgcmVhZCBieSBzY3JlZW4gcmVhZGVycy5cbiAgICovXG4gIHRpbGVFeHBhbmRlZEljb25UZXh0OiBQcm9wVHlwZXMuc3RyaW5nLFxuXG4gIC8qKlxuICAgKiBXaGVuIFwiZXhwYW5kZWRcIiwgYSBsYWJlbCB0byBhcHBlYXIgbmV4dCB0byB0aGUgY2hldnJvbiAoZS5nLiwgXCJWaWV3IGxlc3NcIikuXG4gICAqL1xuICB0aWxlRXhwYW5kZWRMYWJlbDogUHJvcFR5cGVzLnN0cmluZ1xufSk7XG5cbl9kZWZpbmVQcm9wZXJ0eShFeHBhbmRhYmxlVGlsZSwgXCJjb250ZXh0VHlwZVwiLCBQcmVmaXhDb250ZXh0KTtcblxuX2RlZmluZVByb3BlcnR5KEV4cGFuZGFibGVUaWxlLCBcImRlZmF1bHRQcm9wc1wiLCB7XG4gIHRhYkluZGV4OiAwLFxuICBleHBhbmRlZDogZmFsc2UsXG4gIHRpbGVNYXhIZWlnaHQ6IDAsXG4gIHRpbGVQYWRkaW5nOiAwLFxuICBvbkJlZm9yZUNsaWNrOiBmdW5jdGlvbiBvbkJlZm9yZUNsaWNrKCkge1xuICAgIHJldHVybiB0cnVlO1xuICB9LFxuICBvbkNsaWNrOiBmdW5jdGlvbiBvbkNsaWNrKCkge30sXG4gIHRpbGVDb2xsYXBzZWRJY29uVGV4dDogJ0ludGVyYWN0IHRvIGV4cGFuZCBUaWxlJyxcbiAgdGlsZUV4cGFuZGVkSWNvblRleHQ6ICdJbnRlcmFjdCB0byBjb2xsYXBzZSBUaWxlJyxcbiAgbGlnaHQ6IGZhbHNlXG59KTtcblxudmFyIFRpbGVBYm92ZVRoZUZvbGRDb250ZW50ID0gLyojX19QVVJFX18qL2Z1bmN0aW9uIChfQ29tcG9uZW50NCkge1xuICBfaW5oZXJpdHMoVGlsZUFib3ZlVGhlRm9sZENvbnRlbnQsIF9Db21wb25lbnQ0KTtcblxuICB2YXIgX3N1cGVyNCA9IF9jcmVhdGVTdXBlcihUaWxlQWJvdmVUaGVGb2xkQ29udGVudCk7XG5cbiAgZnVuY3Rpb24gVGlsZUFib3ZlVGhlRm9sZENvbnRlbnQoKSB7XG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIFRpbGVBYm92ZVRoZUZvbGRDb250ZW50KTtcblxuICAgIHJldHVybiBfc3VwZXI0LmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gIH1cblxuICBfY3JlYXRlQ2xhc3MoVGlsZUFib3ZlVGhlRm9sZENvbnRlbnQsIFt7XG4gICAga2V5OiBcInJlbmRlclwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiByZW5kZXIoKSB7XG4gICAgICB2YXIgcHJlZml4ID0gdGhpcy5jb250ZXh0O1xuICAgICAgdmFyIGNoaWxkcmVuID0gdGhpcy5wcm9wcy5jaGlsZHJlbjtcbiAgICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3RfX2RlZmF1bHQuY3JlYXRlRWxlbWVudChcInNwYW5cIiwge1xuICAgICAgICBjbGFzc05hbWU6IFwiXCIuY29uY2F0KHByZWZpeCwgXCItLXRpbGUtY29udGVudF9fYWJvdmUtdGhlLWZvbGRcIilcbiAgICAgIH0sIGNoaWxkcmVuKTtcbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gVGlsZUFib3ZlVGhlRm9sZENvbnRlbnQ7XG59KENvbXBvbmVudCk7XG5cbl9kZWZpbmVQcm9wZXJ0eShUaWxlQWJvdmVUaGVGb2xkQ29udGVudCwgXCJwcm9wVHlwZXNcIiwge1xuICAvKipcbiAgICogVGhlIGNoaWxkIG5vZGVzLlxuICAgKi9cbiAgY2hpbGRyZW46IFByb3BUeXBlcy5ub2RlXG59KTtcblxuX2RlZmluZVByb3BlcnR5KFRpbGVBYm92ZVRoZUZvbGRDb250ZW50LCBcImNvbnRleHRUeXBlXCIsIFByZWZpeENvbnRleHQpO1xuXG52YXIgVGlsZUJlbG93VGhlRm9sZENvbnRlbnQgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKF9Db21wb25lbnQ1KSB7XG4gIF9pbmhlcml0cyhUaWxlQmVsb3dUaGVGb2xkQ29udGVudCwgX0NvbXBvbmVudDUpO1xuXG4gIHZhciBfc3VwZXI1ID0gX2NyZWF0ZVN1cGVyKFRpbGVCZWxvd1RoZUZvbGRDb250ZW50KTtcblxuICBmdW5jdGlvbiBUaWxlQmVsb3dUaGVGb2xkQ29udGVudCgpIHtcbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgVGlsZUJlbG93VGhlRm9sZENvbnRlbnQpO1xuXG4gICAgcmV0dXJuIF9zdXBlcjUuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgfVxuXG4gIF9jcmVhdGVDbGFzcyhUaWxlQmVsb3dUaGVGb2xkQ29udGVudCwgW3tcbiAgICBrZXk6IFwicmVuZGVyXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHJlbmRlcigpIHtcbiAgICAgIHZhciBjaGlsZHJlbiA9IHRoaXMucHJvcHMuY2hpbGRyZW47XG4gICAgICB2YXIgcHJlZml4ID0gdGhpcy5jb250ZXh0O1xuICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdF9fZGVmYXVsdC5jcmVhdGVFbGVtZW50KFwic3BhblwiLCB7XG4gICAgICAgIGNsYXNzTmFtZTogXCJcIi5jb25jYXQocHJlZml4LCBcIi0tdGlsZS1jb250ZW50X19iZWxvdy10aGUtZm9sZFwiKVxuICAgICAgfSwgY2hpbGRyZW4pO1xuICAgIH1cbiAgfV0pO1xuXG4gIHJldHVybiBUaWxlQmVsb3dUaGVGb2xkQ29udGVudDtcbn0oQ29tcG9uZW50KTtcblxuX2RlZmluZVByb3BlcnR5KFRpbGVCZWxvd1RoZUZvbGRDb250ZW50LCBcInByb3BUeXBlc1wiLCB7XG4gIC8qKlxuICAgKiBUaGUgY2hpbGQgbm9kZXMuXG4gICAqL1xuICBjaGlsZHJlbjogUHJvcFR5cGVzLm5vZGVcbn0pO1xuXG5fZGVmaW5lUHJvcGVydHkoVGlsZUJlbG93VGhlRm9sZENvbnRlbnQsIFwiY29udGV4dFR5cGVcIiwgUHJlZml4Q29udGV4dCk7XG5cbmV4cG9ydCB7IENsaWNrYWJsZVRpbGUsIEV4cGFuZGFibGVUaWxlLCBTZWxlY3RhYmxlVGlsZSwgVGlsZSwgVGlsZUFib3ZlVGhlRm9sZENvbnRlbnQsIFRpbGVCZWxvd1RoZUZvbGRDb250ZW50IH07XG4iXSwibmFtZXMiOlsiaW5oZXJpdHMiLCJfaW5oZXJpdHMiLCJjcmVhdGVTdXBlciIsIl9jcmVhdGVTdXBlciIsImNsYXNzQ2FsbENoZWNrIiwiX2NsYXNzQ2FsbENoZWNrIiwiY3JlYXRlQ2xhc3MiLCJfY3JlYXRlQ2xhc3MiLCJvYmplY3RXaXRob3V0UHJvcGVydGllcyIsIl9vYmplY3RXaXRob3V0UHJvcGVydGllcyIsImRlZmluZVByb3BlcnR5IiwiX2RlZmluZVByb3BlcnR5IiwiZXh0ZW5kcyIsIl9leHRlbmRzIiwiYXNzZXJ0VGhpc0luaXRpYWxpemVkIiwiX2Fzc2VydFRoaXNJbml0aWFsaXplZCIsInNsaWNlZFRvQXJyYXkiLCJfc2xpY2VkVG9BcnJheSIsIlJlYWN0X19kZWZhdWx0IiwiQ29tcG9uZW50IiwidXNlU3RhdGUiLCJ1c2VSZWYiLCJ1c2VFZmZlY3QiLCJQcm9wVHlwZXMiLCJjeCIsIkxpbmsiLCJDaGVja2JveENoZWNrZWRGaWxsZWQiLCJDaGVja2JveCIsIkNoZXZyb25Eb3duIiwiZGVwcmVjYXRlIiwiY29tcG9zZUV2ZW50SGFuZGxlcnMiLCJQcmVmaXhDb250ZXh0IiwidXNlUHJlZml4IiwibWF0Y2hlcyIsIkVudGVyIiwiU3BhY2UiLCJfQ2hlY2tib3hDaGVja2VkRmlsbGUiLCJfQ2hlY2tib3giLCJfQ2hldnJvbkRvd24iLCJfZXhjbHVkZWQiLCJfZXhjbHVkZWQyIiwiX2V4Y2x1ZGVkMyIsIl9leGNsdWRlZDQiLCJUaWxlIiwiX0NvbXBvbmVudCIsIl9zdXBlciIsImFwcGx5IiwiYXJndW1lbnRzIiwia2V5IiwidmFsdWUiLCJyZW5kZXIiLCJwcmVmaXgiLCJjb250ZXh0IiwiX3RoaXMkcHJvcHMiLCJwcm9wcyIsImNoaWxkcmVuIiwiY2xhc3NOYW1lIiwibGlnaHQiLCJyZXN0IiwidGlsZUNsYXNzZXMiLCJjb25jYXQiLCJjcmVhdGVFbGVtZW50Iiwibm9kZSIsInN0cmluZyIsImJvb2wiLCJDbGlja2FibGVUaWxlIiwiX0NvbXBvbmVudDIiLCJfc3VwZXIyIiwiX3RoaXMiLCJfbGVuIiwibGVuZ3RoIiwiYXJncyIsIkFycmF5IiwiX2tleSIsImNhbGwiLCJldnQiLCJwZXJzaXN0Iiwic2V0U3RhdGUiLCJjbGlja2VkIiwic3RhdGUiLCJfdGhpcyRwcm9wcyRoYW5kbGVDbGkiLCJfdGhpcyRwcm9wczIiLCJfdGhpcyRwcm9wcyRvbkNsaWNrIiwiX3RoaXMkcHJvcHMzIiwiaGFuZGxlQ2xpY2siLCJvbkNsaWNrIiwiX3RoaXMkcHJvcHMkaGFuZGxlS2V5IiwiX3RoaXMkcHJvcHM0IiwiaGFuZGxlS2V5RG93biIsIm9uS2V5RG93biIsIl90aGlzJHByb3BzJGhhbmRsZUtleTIiLCJfdGhpcyRwcm9wczUiLCJfY3gyIiwiX3RoaXMkcHJvcHM2IiwiaHJlZiIsImNsYXNzZXMiLCJnZXREZXJpdmVkU3RhdGVGcm9tUHJvcHMiLCJfcmVmIiwicHJldkNsaWNrZWQiLCJmdW5jIiwicmVsIiwiU2VsZWN0YWJsZVRpbGUiLCJoYW5kbGVPbkNsaWNrIiwicHJldmVudERlZmF1bHQiLCJzZXRJc1NlbGVjdGVkIiwiaXNTZWxlY3RlZCIsImNsaWNrSGFuZGxlciIsIm9uQ2hhbmdlIiwiaGFuZGxlT25LZXlEb3duIiwia2V5RG93bkhhbmRsZXIiLCJoYW5kbGVDaGFuZ2UiLCJldmVudCIsInRhcmdldCIsImNoZWNrZWQiLCJfY3gzIiwiaWQiLCJ0YWJJbmRleCIsIm5hbWUiLCJ0aXRsZSIsImljb25EZXNjcmlwdGlvbiIsImRpc2FibGVkIiwic2VsZWN0ZWQiLCJfdXNlU3RhdGUiLCJfdXNlU3RhdGUyIiwiaW5wdXQiLCJpbnB1dENsYXNzZXMiLCJGcmFnbWVudCIsInJlZiIsInR5cGUiLCJodG1sRm9yIiwiZGVmYXVsdFByb3BzIiwicHJvcFR5cGVzIiwibnVtYmVyIiwib25lT2ZUeXBlIiwiaXNSZXF1aXJlZCIsIkV4cGFuZGFibGVUaWxlIiwiX0NvbXBvbmVudDMiLCJfc3VwZXIzIiwiX3RoaXMyIiwiX2xlbjIiLCJfa2V5MiIsInJlc2l6ZU9ic2VydmVyIiwiUmVzaXplT2JzZXJ2ZXIiLCJlbnRyaWVzIiwiX2VudHJpZXMiLCJhYm92ZVRoZUZvbGQiLCJ0aWxlTWF4SGVpZ2h0IiwiY29udGVudFJlY3QiLCJoZWlnaHQiLCJ0aWxlIiwiZ2V0U3R5bGUiLCJ3aW5kb3ciLCJnZXRDb21wdXRlZFN0eWxlIiwib2JzZXJ2ZSIsImdldEJvdW5kaW5nQ2xpZW50UmVjdCIsInRpbGVQYWRkaW5nIiwicGFyc2VJbnQiLCJnZXRQcm9wZXJ0eVZhbHVlIiwicHJldlByb3BzIiwiZXhwYW5kZWQiLCJzZXRNYXhIZWlnaHQiLCJ0aWxlQ29udGVudCIsIm9uQmVmb3JlQ2xpY2siLCJ0YWdOYW1lIiwiX3RoaXMyJHByb3BzJGhhbmRsZUNsIiwiX3RoaXMyJHByb3BzIiwiX3RoaXMyJHByb3BzJG9uQ2xpY2siLCJfdGhpczIkcHJvcHMyIiwiQ2hpbGRyZW4iLCJ0b0FycmF5IiwiY29tcG9uZW50V2lsbFVubW91bnQiLCJkaXNjb25uZWN0IiwiX2N4NSIsIl90aGlzMyIsIl90aGlzJHByb3BzNyIsIm9uS2V5VXAiLCJ0aWxlQ29sbGFwc2VkSWNvblRleHQiLCJ0aWxlRXhwYW5kZWRJY29uVGV4dCIsInRpbGVDb2xsYXBzZWRMYWJlbCIsInRpbGVFeHBhbmRlZExhYmVsIiwiaXNFeHBhbmRlZCIsInRpbGVTdHlsZSIsIm1heEhlaWdodCIsImNoaWxkcmVuQXNBcnJheSIsImdldENoaWxkcmVuIiwic3R5bGUiLCJoYW5kbGVLZXlVcCIsIl9yZWYyIiwicHJldkV4cGFuZGVkIiwicHJldlRpbGVNYXhIZWlnaHQiLCJwcmV2VGlsZVBhZGRpbmciLCJjdXJyZW50RXhwYW5kZWQiLCJjdXJyZW50VGlsZU1heEhlaWdodCIsImN1cnJlbnRUaWxlUGFkZGluZyIsImV4cGFuZGVkQ2hhbmdlZCIsInRpbGVNYXhIZWlnaHRDaGFuZ2VkIiwidGlsZVBhZGRpbmdDaGFuZ2VkIiwiVGlsZUFib3ZlVGhlRm9sZENvbnRlbnQiLCJfQ29tcG9uZW50NCIsIl9zdXBlcjQiLCJUaWxlQmVsb3dUaGVGb2xkQ29udGVudCIsIl9Db21wb25lbnQ1IiwiX3N1cGVyNSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/@carbon/react/es/components/Tile/Tile.js\n");
2605
2605
 
2606
2606
  /***/ }),
2607
2607
 
@@ -6306,17 +6306,6 @@ eval("module.exports = function() {\n var selection = document.getSelection()
6306
6306
 
6307
6307
  /***/ }),
6308
6308
 
6309
- /***/ "../../../node_modules/unistore/dist/unistore.es.js":
6310
- /*!**********************************************************!*\
6311
- !*** ../../../node_modules/unistore/dist/unistore.es.js ***!
6312
- \**********************************************************/
6313
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
6314
-
6315
- "use strict";
6316
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\nfunction n(n, t) {\n for(var r in t)n[r] = t[r];\n return n;\n}\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(t) {\n var u = function u(n) {\n for(var _$t = [], u = 0; u < r.length; u++)r[u] === n ? n = null : _$t.push(r[u]);\n r = _$t;\n };\n var e = function e(u, e, f) {\n t = e ? u : n(n({}, t), u);\n for(var i = r, o = 0; o < i.length; o++)i[o](t, f);\n };\n var r = [];\n return t = t || {}, {\n action: function action(n) {\n var r = function r(t) {\n e(t, !1, n);\n };\n return function() {\n for(var u = arguments, e = [\n t\n ], f = 0; f < arguments.length; f++)e.push(u[f]);\n var i = n.apply(this, e);\n if (null != i) return i.then ? i.then(r) : r(i);\n };\n },\n setState: e,\n subscribe: function subscribe(n) {\n return r.push(n), function() {\n u(n);\n };\n },\n unsubscribe: u,\n getState: function getState() {\n return t;\n }\n };\n} //# sourceMappingURL=unistore.es.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3VuaXN0b3JlL2Rpc3QvdW5pc3RvcmUuZXMuanMuanMiLCJtYXBwaW5ncyI6Ijs7OztBQUFBLFNBQVNBLEVBQUVBLENBQUMsRUFBQ0MsQ0FBQyxFQUFDO0lBQUMsSUFBSSxJQUFJQyxLQUFLRCxFQUFFRCxDQUFDLENBQUNFLEVBQUUsR0FBQ0QsQ0FBQyxDQUFDQyxFQUFFO0lBQUMsT0FBT0Y7QUFBQztBQUFDLDZCQUFlLG9DQUFTQyxDQUFDLEVBQUM7UUFBbUJFLElBQVQsU0FBU0EsRUFBRUgsQ0FBQyxFQUFDO1FBQUMsSUFBSSxJQUFJQyxNQUFFLEVBQUUsRUFBQ0UsSUFBRSxHQUFFQSxJQUFFRCxFQUFFRSxNQUFNLEVBQUNELElBQUlELENBQUMsQ0FBQ0MsRUFBRSxLQUFHSCxJQUFFQSxJQUFFLElBQUksR0FBQ0MsSUFBRUksSUFBSSxDQUFDSCxDQUFDLENBQUNDLEVBQUUsQ0FBQztRQUFDRCxJQUFFRDtJQUFDO1FBQVVLLElBQVQsU0FBU0EsRUFBRUgsQ0FBQyxFQUFDRyxDQUFDLEVBQUNDLENBQUMsRUFBQztRQUFDTixJQUFFSyxJQUFFSCxJQUFFSCxFQUFFQSxFQUFFLENBQUMsR0FBRUMsSUFBR0UsRUFBRTtRQUFDLElBQUksSUFBSUssSUFBRU4sR0FBRU8sSUFBRSxHQUFFQSxJQUFFRCxFQUFFSixNQUFNLEVBQUNLLElBQUlELENBQUMsQ0FBQ0MsRUFBRSxDQUFDUixHQUFFTTtJQUFFO0lBQXJLLElBQUlMLElBQUUsRUFBRTtJQUE4SixPQUFPRCxJQUFFQSxLQUFHLENBQUMsR0FBRTtRQUFDUyxRQUFPLFNBQVBBLE9BQWdCVixDQUFDLEVBQUM7Z0JBQVVFLElBQVQsU0FBU0EsRUFBRUQsQ0FBQyxFQUFDO2dCQUFDSyxFQUFFTCxHQUFFLENBQUMsR0FBRUQ7WUFBRTtZQUFDLE9BQU8sV0FBVTtnQkFBQyxJQUFJLElBQUlHLElBQUVRLFdBQVVMLElBQUU7b0JBQUNMO2lCQUFFLEVBQUNNLElBQUUsR0FBRUEsSUFBRUksVUFBVVAsTUFBTSxFQUFDRyxJQUFJRCxFQUFFRCxJQUFJLENBQUNGLENBQUMsQ0FBQ0ksRUFBRTtnQkFBRSxJQUFJQyxJQUFFUixFQUFFWSxLQUFLLENBQUMsSUFBSSxFQUFDTjtnQkFBRyxJQUFHLElBQUksSUFBRUUsR0FBRSxPQUFPQSxFQUFFSyxJQUFJLEdBQUNMLEVBQUVLLElBQUksQ0FBQ1gsS0FBR0EsRUFBRU0sRUFBRTtZQUFBO1FBQUM7UUFBRU0sVUFBU1I7UUFBRVMsV0FBVSxTQUFWQSxVQUFtQmYsQ0FBQyxFQUFDO1lBQUMsT0FBT0UsRUFBRUcsSUFBSSxDQUFDTCxJQUFHLFdBQVU7Z0JBQUNHLEVBQUVIO1lBQUUsQ0FBQztRQUFBO1FBQUVnQixhQUFZYjtRQUFFYyxVQUFTLFNBQVRBLFdBQW1CO1lBQUMsT0FBT2hCO1FBQUM7SUFBQyxDQUFDO0FBQUEsQ0FBQyxDQUNuakIsdUNBQXVDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vQG9wZW5tcnMvZXNtLWFwcC1zaGVsbC8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdW5pc3RvcmUvZGlzdC91bmlzdG9yZS5lcy5qcz9kYWFlIl0sInNvdXJjZXNDb250ZW50IjpbImZ1bmN0aW9uIG4obix0KXtmb3IodmFyIHIgaW4gdCluW3JdPXRbcl07cmV0dXJuIG59ZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24odCl7dmFyIHI9W107ZnVuY3Rpb24gdShuKXtmb3IodmFyIHQ9W10sdT0wO3U8ci5sZW5ndGg7dSsrKXJbdV09PT1uP249bnVsbDp0LnB1c2goclt1XSk7cj10fWZ1bmN0aW9uIGUodSxlLGYpe3Q9ZT91Om4obih7fSx0KSx1KTtmb3IodmFyIGk9cixvPTA7bzxpLmxlbmd0aDtvKyspaVtvXSh0LGYpfXJldHVybiB0PXR8fHt9LHthY3Rpb246ZnVuY3Rpb24obil7ZnVuY3Rpb24gcih0KXtlKHQsITEsbil9cmV0dXJuIGZ1bmN0aW9uKCl7Zm9yKHZhciB1PWFyZ3VtZW50cyxlPVt0XSxmPTA7Zjxhcmd1bWVudHMubGVuZ3RoO2YrKyllLnB1c2godVtmXSk7dmFyIGk9bi5hcHBseSh0aGlzLGUpO2lmKG51bGwhPWkpcmV0dXJuIGkudGhlbj9pLnRoZW4ocik6cihpKX19LHNldFN0YXRlOmUsc3Vic2NyaWJlOmZ1bmN0aW9uKG4pe3JldHVybiByLnB1c2gobiksZnVuY3Rpb24oKXt1KG4pfX0sdW5zdWJzY3JpYmU6dSxnZXRTdGF0ZTpmdW5jdGlvbigpe3JldHVybiB0fX19XG4vLyMgc291cmNlTWFwcGluZ1VSTD11bmlzdG9yZS5lcy5qcy5tYXBcbiJdLCJuYW1lcyI6WyJuIiwidCIsInIiLCJ1IiwibGVuZ3RoIiwicHVzaCIsImUiLCJmIiwiaSIsIm8iLCJhY3Rpb24iLCJhcmd1bWVudHMiLCJhcHBseSIsInRoZW4iLCJzZXRTdGF0ZSIsInN1YnNjcmliZSIsInVuc3Vic2NyaWJlIiwiZ2V0U3RhdGUiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/unistore/dist/unistore.es.js\n");
6317
-
6318
- /***/ }),
6319
-
6320
6309
  /***/ "../../../node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.js":
6321
6310
  /*!*****************************************************************************************************!*\
6322
6311
  !*** ../../../node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.js ***!
@@ -6455,7 +6444,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
6455
6444
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
6456
6445
 
6457
6446
  "use strict";
6458
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"OpenmrsFetchError\": () => (/* binding */ OpenmrsFetchError),\n/* harmony export */ \"fhirBaseUrl\": () => (/* binding */ fhirBaseUrl),\n/* harmony export */ \"makeUrl\": () => (/* binding */ makeUrl),\n/* harmony export */ \"openmrsFetch\": () => (/* binding */ openmrsFetch),\n/* harmony export */ \"openmrsObservableFetch\": () => (/* binding */ openmrsObservableFetch),\n/* harmony export */ \"restBaseUrl\": () => (/* binding */ restBaseUrl),\n/* harmony export */ \"sessionEndpoint\": () => (/* binding */ sessionEndpoint)\n/* harmony export */ });\n/* harmony import */ var rxjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! rxjs */ \"webpack/sharing/consume/default/rxjs/rxjs\");\n/* harmony import */ var rxjs__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(rxjs__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var lodash_es_isPlainObject__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! lodash-es/isPlainObject */ \"../../../node_modules/lodash-es/isPlainObject.js\");\n/* harmony import */ var _openmrs_esm_config__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @openmrs/esm-config */ \"../../framework/esm-config/src/index.ts\");\n/** @module @category API */ function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n return self;\n}\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\nfunction _asyncToGenerator(fn) {\n return function() {\n var self = this, args = arguments;\n return new Promise(function(resolve, reject) {\n var gen = fn.apply(self, args);\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n _next(undefined);\n });\n };\n}\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\nfunction isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n try {\n Date.prototype.toString.call(Reflect.construct(Date, [], function() {}));\n return true;\n } catch (e) {\n return false;\n }\n}\nfunction _construct(Parent, args, Class) {\n if (isNativeReflectConstruct()) {\n _construct = Reflect.construct;\n } else {\n _construct = function _construct(Parent, args, Class) {\n var a = [\n null\n ];\n a.push.apply(a, args);\n var Constructor = Function.bind.apply(Parent, a);\n var instance = new Constructor();\n if (Class) _setPrototypeOf(instance, Class.prototype);\n return instance;\n };\n }\n return _construct.apply(null, arguments);\n}\nfunction _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) _setPrototypeOf(subClass, superClass);\n}\nfunction _isNativeFunction(fn) {\n return Function.toString.call(fn).indexOf(\"[native code]\") !== -1;\n}\nfunction _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n }\n return _assertThisInitialized(self);\n}\nfunction _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return _setPrototypeOf(o, p);\n}\nvar _typeof = function(obj) {\n \"@swc/helpers - typeof\";\n return obj && typeof Symbol !== \"undefined\" && obj.constructor === Symbol ? \"symbol\" : typeof obj;\n};\nfunction _wrapNativeSuper(Class) {\n var _cache = typeof Map === \"function\" ? new Map() : undefined;\n _wrapNativeSuper = function _wrapNativeSuper(Class) {\n if (Class === null || !_isNativeFunction(Class)) return Class;\n if (typeof Class !== \"function\") {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n if (typeof _cache !== \"undefined\") {\n if (_cache.has(Class)) return _cache.get(Class);\n _cache.set(Class, Wrapper);\n }\n function Wrapper() {\n return _construct(Class, arguments, _getPrototypeOf(this).constructor);\n }\n Wrapper.prototype = Object.create(Class.prototype, {\n constructor: {\n value: Wrapper,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n return _setPrototypeOf(Wrapper, Class);\n };\n return _wrapNativeSuper(Class);\n}\nfunction _isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n try {\n Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() {}));\n return true;\n } catch (e) {\n return false;\n }\n}\nfunction _createSuper(Derived) {\n var hasNativeReflectConstruct = _isNativeReflectConstruct();\n return function _createSuperInternal() {\n var Super = _getPrototypeOf(Derived), result;\n if (hasNativeReflectConstruct) {\n var NewTarget = _getPrototypeOf(this).constructor;\n result = Reflect.construct(Super, arguments, NewTarget);\n } else {\n result = Super.apply(this, arguments);\n }\n return _possibleConstructorReturn(this, result);\n };\n}\nvar __generator = undefined && undefined.__generator || function(thisArg, body) {\n var f, y, t, g, _ = {\n label: 0,\n sent: function() {\n if (t[0] & 1) throw t[1];\n return t[1];\n },\n trys: [],\n ops: []\n };\n return g = {\n next: verb(0),\n \"throw\": verb(1),\n \"return\": verb(2)\n }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() {\n return this;\n }), g;\n function verb(n) {\n return function(v) {\n return step([\n n,\n v\n ]);\n };\n }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while(_)try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [\n op[0] & 2,\n t.value\n ];\n switch(op[0]){\n case 0:\n case 1:\n t = op;\n break;\n case 4:\n _.label++;\n return {\n value: op[1],\n done: false\n };\n case 5:\n _.label++;\n y = op[1];\n op = [\n 0\n ];\n continue;\n case 7:\n op = _.ops.pop();\n _.trys.pop();\n continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {\n _ = 0;\n continue;\n }\n if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {\n _.label = op[1];\n break;\n }\n if (op[0] === 6 && _.label < t[1]) {\n _.label = t[1];\n t = op;\n break;\n }\n if (t && _.label < t[2]) {\n _.label = t[2];\n _.ops.push(op);\n break;\n }\n if (t[2]) _.ops.pop();\n _.trys.pop();\n continue;\n }\n op = body.call(thisArg, _);\n } catch (e) {\n op = [\n 6,\n e\n ];\n y = 0;\n } finally{\n f = t = 0;\n }\n if (op[0] & 5) throw op[1];\n return {\n value: op[0] ? op[1] : void 0,\n done: true\n };\n }\n};\n\n\n\nvar restBaseUrl = \"/ws/rest/v1/\";\nvar fhirBaseUrl = \"/ws/fhir2/R4\";\nvar sessionEndpoint = \"\".concat(restBaseUrl, \"session\");\n/**\n * Append `path` to the OpenMRS SPA base.\n *\n * #### Example\n *\n * ```ts\n * makeUrl('/foo/bar');\n * // => '/openmrs/foo/bar'\n * ```\n */ function makeUrl(path) {\n return window.openmrsBase + path;\n}\n/**\n * The openmrsFetch function is a wrapper around the\n * [browser's built-in fetch function](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API/Using_Fetch),\n * with extra handling for OpenMRS-specific API behaviors, such as\n * request headers, authentication, authorization, and the API urls.\n *\n * @param path A string url to make the request to. Note that the\n * openmrs base url (by default `/openmrs`) will be automatically\n * prepended to the URL, so there is no need to include it.\n * @param fetchInit A [fetch init object](https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/fetch#Syntax).\n * Note that the `body` property does not need to be `JSON.stringify()`ed\n * because openmrsFetch will do that for you.\n * @returns A [Promise](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise)\n * that resolves with a [Response object](https://developer.mozilla.org/en-US/docs/Web/API/Response).\n * Note that the openmrs version of the Response object has already\n * downloaded the HTTP response body as json, and has an additional\n * `data` property with the HTTP response json as a javascript object.\n *\n * #### Example\n * ```js\n * import { openmrsFetch } from '@openmrs/esm-api'\n * const abortController = new AbortController();\n * openmrsFetch('/ws/rest/v1/session', {signal: abortController.signal})\n * .then(response => {\n * console.log(response.data.authenticated)\n * })\n * .catch(err => {\n * console.error(err.status);\n * })\n * abortController.abort();\n * openmrsFetch('/ws/rest/v1/session', {\n * method: 'POST',\n * body: {\n * username: 'hi',\n * password: 'there',\n * }\n * })\n * ```\n *\n * #### Cancellation\n *\n * To cancel a network request, use an\n * [AbortController](https://developer.mozilla.org/en-US/docs/Web/API/AbortController/abort).\n * It is best practice to cancel your network requests when the user\n * navigates away from a page while the request is pending request, to\n * free up memory and network resources and to prevent race conditions.\n *\n * @category API\n */ function openmrsFetch(path) {\n var fetchInit = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};\n if (typeof path !== \"string\") {\n throw Error(\"The first argument to @openmrs/api's openmrsFetch function must be a url string\");\n }\n if (typeof fetchInit !== \"object\") {\n throw Error(\"The second argument to @openmrs/api's openmrsFetch function must be a plain object.\");\n }\n // @ts-ignore\n if (!window.openmrsBase) {\n throw Error(\"@openmrs/api is running in a browser that doesn't have window.openmrsBase, which is provided by openmrs-module-spa's HTML file.\");\n }\n // ensure path starts with /\n if (path[0] !== \"/\") {\n path = \"/\" + path;\n }\n // Prefix the url with the openmrs spa base\n var url = makeUrl(path);\n // We're going to need some headers\n if (!fetchInit.headers) {\n fetchInit.headers = {};\n }\n /* Automatically stringify javascript objects being sent in the\n * request body.\n */ if ((0,lodash_es_isPlainObject__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(fetchInit.body)) {\n fetchInit.body = JSON.stringify(fetchInit.body);\n }\n /* Add a request header to tell the server to respond with json,\n * since frontend code almost always wants json and the OpenMRS\n * server won't give you json unless you explicitly ask for it.\n * If a different Accept header is preferred, pass it into the fetchInit.\n * If no Accept header is desired, pass it in explicitly as null.\n */ if (typeof fetchInit.headers.Accept === \"undefined\") {\n fetchInit.headers.Accept = \"application/json\";\n }\n if (fetchInit.headers.Accept === null) {\n delete fetchInit.headers.Accept;\n }\n /* This tells the OpenMRS REST API not to return a WWW-Authenticate\n * header. Returning that header is useful when using the API, but\n * not from a UI.\n */ if (path.startsWith(restBaseUrl) && typeof fetchInit.headers[\"Disable-WWW-Authenticate\"] === \"undefined\") {\n fetchInit.headers[\"Disable-WWW-Authenticate\"] = \"true\";\n }\n if (path.startsWith(fhirBaseUrl)) {\n var urlUrl = new URL(url, window.location.toString());\n if (!urlUrl.searchParams.has(\"_summary\")) {\n urlUrl.searchParams.set(\"_summary\", \"data\");\n url = urlUrl.toString();\n }\n }\n /* We capture the stacktrace before making the request, so that if an error occurs we can\n * log a full stacktrace that includes the code that made the request and handled the response\n * Otherwise, we could run into situations where the stacktrace doesn't even show which code\n * called @openmrs/api.\n */ var requestStacktrace = Error();\n return window.fetch(url, fetchInit).then(function() {\n var _ref = _asyncToGenerator(function(r) {\n var response, redirectAuthFailure;\n return __generator(this, function(_state) {\n switch(_state.label){\n case 0:\n response = r;\n if (!response.ok) return [\n 3,\n 1\n ];\n if (response.status === 204) {\n /* HTTP 204 - No Content\n * We should not try to download the empty response as json. Instead,\n * we return null since there is no response body.\n */ response.data = null;\n return [\n 2,\n response\n ];\n } else {\n // HTTP 200s - The request succeeded\n return [\n 2,\n response.text().then(function(responseText) {\n try {\n if (responseText) {\n response.data = JSON.parse(responseText);\n }\n } catch (err) {\n // Server didn't respond with json\n }\n return response;\n })\n ];\n }\n return [\n 3,\n 3\n ];\n case 1:\n return [\n 4,\n (0,_openmrs_esm_config__WEBPACK_IMPORTED_MODULE_1__.getConfig)(\"@openmrs/esm-api\")\n ];\n case 2:\n redirectAuthFailure = _state.sent().redirectAuthFailure;\n if (url === makeUrl(sessionEndpoint) && response.status === 403 || redirectAuthFailure.enabled && redirectAuthFailure.errors.includes(response.status)) {\n (0,_openmrs_esm_config__WEBPACK_IMPORTED_MODULE_1__.navigate)({\n to: redirectAuthFailure.url\n });\n /* We sometimes don't really want this promise to resolve since there's no response data,\n * nor do we want it to reject because that would trigger error handling. We instead\n * want it to remain in pending status while the navigation occurs.\n */ return [\n 2,\n redirectAuthFailure.resolvePromise ? Promise.resolve() : new Promise(function() {})\n ];\n } else {\n // Attempt to download a response body, if it has one\n return [\n 2,\n response.text().then(function(responseText) {\n var responseBody = responseText;\n try {\n responseBody = JSON.parse(responseText);\n } catch (err) {\n // Server didn't respond with json, so just go with the response text string\n }\n /* Make the fetch promise go into \"rejected\" status, with the best\n * possible stacktrace and error message.\n */ throw new OpenmrsFetchError(url, response, responseBody, requestStacktrace);\n }, function(err) {\n /* We weren't able to download a response body for this error.\n * Time to just give the best possible stacktrace and error message.\n */ throw new OpenmrsFetchError(url, response, null, requestStacktrace);\n })\n ];\n }\n _state.label = 3;\n case 3:\n return [\n 2\n ];\n }\n });\n });\n return function(r) {\n return _ref.apply(this, arguments);\n };\n }());\n}\n/**\n * The openmrsObservableFetch function is a wrapper around openmrsFetch\n * that returns an [Observable](https://rxjs-dev.firebaseapp.com/guide/observable)\n * instead of a promise. It exists in case using an Observable is\n * preferred or more convenient than a promise.\n *\n * @param url See [[openmrsFetch]]\n * @param fetchInit See [[openmrsFetch]]\n * @returns An Observable that produces exactly one Response object.\n * The response object is exactly the same as for [[openmrsFetch]].\n *\n * #### Example\n *\n * ```js\n * import { openmrsObservableFetch } from '@openmrs/esm-api'\n * const subscription = openmrsObservableFetch('/ws/rest/v1/session').subscribe(\n * response => console.log(response.data),\n * err => {throw err},\n * () => console.log('finished')\n * )\n * subscription.unsubscribe()\n * ```\n *\n * #### Cancellation\n *\n * To cancel the network request, simply call `subscription.unsubscribe();`\n *\n * @category API\n */ function openmrsObservableFetch(url) {\n var fetchInit = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};\n if (typeof fetchInit !== \"object\") {\n throw Error(\"The second argument to openmrsObservableFetch must be either omitted or an object\");\n }\n var abortController = new AbortController();\n fetchInit.signal = abortController.signal;\n return new rxjs__WEBPACK_IMPORTED_MODULE_0__.Observable(function(observer) {\n var hasResponse = false;\n openmrsFetch(url, fetchInit).then(function(response) {\n hasResponse = true;\n observer.next(response);\n observer.complete();\n }, function(err) {\n hasResponse = true;\n observer.error(err);\n });\n return function() {\n if (!hasResponse) {\n abortController.abort();\n }\n };\n });\n}\nvar OpenmrsFetchError = /*#__PURE__*/ function(Error1) {\n \"use strict\";\n _inherits(OpenmrsFetchError, Error1);\n var _super = _createSuper(OpenmrsFetchError);\n function OpenmrsFetchError(url, response, responseBody, requestStacktrace) {\n _classCallCheck(this, OpenmrsFetchError);\n var _this;\n _this = _super.call(this);\n _this.message = \"Server responded with \".concat(response.status, \" (\").concat(response.statusText, \") for url \").concat(url, \". Check err.responseBody or network tab in dev tools for more info\");\n requestStacktrace.message = _this.message;\n _this.responseBody = responseBody;\n _this.response = response;\n _this.stack = \"Stacktrace for outgoing request:\\n\".concat(requestStacktrace.stack, \"\\nStacktrace for incoming response:\\n\").concat(_this.stack);\n return _this;\n }\n return OpenmrsFetchError;\n}(_wrapNativeSuper(Error));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vZnJhbWV3b3JrL2VzbS1hcGkvc3JjL29wZW5tcnMtZmV0Y2gudHMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7QUFBQSwwQkFBMEIsR0FDMUI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFrQztBQUNrQjtBQUNNO0FBR25ELElBQU1JLGNBQWMsZUFBZTtBQUVuQyxJQUFNQyxjQUFjLGVBQWU7QUFFbkMsSUFBTUMsa0JBQWtCLEdBQWUsT0FBWkYsYUFBWSxXQUFTO0FBRXZEOzs7Ozs7Ozs7Q0FTQyxHQUNNLFNBQVNHLFFBQVFDLElBQVksRUFBRTtJQUNwQyxPQUFPQyxPQUFPQyxXQUFXLEdBQUdGO0FBQzlCLENBQUM7QUFFRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0NBZ0RDLEdBQ00sU0FBU0csYUFDZEgsSUFBWSxFQUVlO1FBRDNCSSxZQUFBQSxpRUFBeUIsQ0FBQyxDQUFDO0lBRTNCLElBQUksT0FBT0osU0FBUyxVQUFVO1FBQzVCLE1BQU1LLE1BQ0osbUZBQ0E7SUFDSixDQUFDO0lBRUQsSUFBSSxPQUFPRCxjQUFjLFVBQVU7UUFDakMsTUFBTUMsTUFDSix1RkFDQTtJQUNKLENBQUM7SUFFRCxhQUFhO0lBQ2IsSUFBSSxDQUFDSixPQUFPQyxXQUFXLEVBQUU7UUFDdkIsTUFBTUcsTUFDSixtSUFDQTtJQUNKLENBQUM7SUFFRCw0QkFBNEI7SUFDNUIsSUFBSUwsSUFBSSxDQUFDLEVBQUUs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LEdBQUcseUJBQTZDNUIsT0FBcEJBLFNBQVNHLE1BQU0sRUFBQyxNQUFvQ3JCLE9BQWhDa0IsU0FBUzZCLFVBQVUsRUFBQyxjQUFnQixPQUFKL0MsS0FBSTtRQUNoR2Msa0JBQWtCZ0MsT0FBTyxHQUFHLE1BQUtBLE9BQU87UUFDeEMsTUFBS1osWUFBWSxHQUFHQTtRQUNwQixNQUFLaEIsUUFBUSxHQUFHQTtRQUNoQixNQUFLOEIsS0FBSyxHQUFHLHFDQUFvRyxPQUEvRGxDLGtCQUFrQmtDLEtBQUssRUFBQyx5Q0FBa0QsT0FBWCxNQUFLQSxLQUFLOzs7V0FabEhiO21CQUEwQnBDLFFBZ0J0QyIsInNvdXJjZXMiOlsid2VicGFjazovL0BvcGVubXJzL2VzbS1hcHAtc2hlbGwvLi4vLi4vZnJhbWV3b3JrL2VzbS1hcGkvc3JjL29wZW5tcnMtZmV0Y2gudHM/ZGVhMCJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiogQG1vZHVsZSBAY2F0ZWdvcnkgQVBJICovXG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSBcInJ4anNcIjtcbmltcG9ydCBpc1BsYWluT2JqZWN0IGZyb20gXCJsb2Rhc2gtZXMvaXNQbGFpbk9iamVjdFwiO1xuaW1wb3J0IHsgZ2V0Q29uZmlnLCBuYXZpZ2F0ZSB9IGZyb20gXCJAb3Blbm1ycy9lc20tY29uZmlnXCI7XG5pbXBvcnQgeyBGZXRjaFJlc3BvbnNlIH0gZnJvbSBcIi4vdHlwZXNcIjtcblxuZXhwb3J0IGNvbnN0IHJlc3RCYXNlVXJsID0gXCIvd3MvcmVzdC92MS9cIjtcblxuZXhwb3J0IGNvbnN0IGZoaXJCYXNlVXJsID0gXCIvd3MvZmhpcjIvUjRcIjtcblxuZXhwb3J0IGNvbnN0IHNlc3Npb25FbmRwb2ludCA9IGAke3Jlc3RCYXNlVXJsfXNlc3Npb25gO1xuXG4vKipcbiAqIEFwcGVuZCBgcGF0aGAgdG8gdGhlIE9wZW5NUlMgU1BBIGJhc2UuXG4gKlxuICogIyMjIyBFeGFtcGxlXG4gKlxuICogYGBgdHNcbiAqIG1ha2VVcmwoJy9mb28vYmFyJyk7XG4gKiAvLyA9PiAnL29wZW5tcnMvZm9vL2JhcidcbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gbWFrZVVybChwYXRoOiBzdHJpbmcpIHtcbiAgcmV0dXJuIHdpbmRvdy5vcGVubXJzQmFzZSArIHBhdGg7XG59XG5cbi8qKlxuICogVGhlIG9wZW5tcnNGZXRjaCBmdW5jdGlvbiBpcyBhIHdyYXBwZXIgYXJvdW5kIHRoZVxuICogW2Jyb3dzZXIncyBidWlsdC1pbiBmZXRjaCBmdW5jdGlvbl0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL0ZldGNoX0FQSS9Vc2luZ19GZXRjaCksXG4gKiB3aXRoIGV4dHJhIGhhbmRsaW5nIGZvciBPcGVuTVJTLXNwZWNpZmljIEFQSSBiZWhhdmlvcnMsIHN1Y2ggYXNcbiAqIHJlcXVlc3QgaGVhZGVycywgYXV0aGVudGljYXRpb24sIGF1dGhvcml6YXRpb24sIGFuZCB0aGUgQVBJIHVybHMuXG4gKlxuICogQHBhcmFtIHBhdGggQSBzdHJpbmcgdXJsIHRvIG1ha2UgdGhlIHJlcXVlc3QgdG8uIE5vdGUgdGhhdCB0aGVcbiAqICAgb3Blbm1ycyBiYXNlIHVybCAoYnkgZGVmYXVsdCBgL29wZW5tcnNgKSB3aWxsIGJlIGF1dG9tYXRpY2FsbHlcbiAqICAgcHJlcGVuZGVkIHRvIHRoZSBVUkwsIHNvIHRoZXJlIGlzIG5vIG5lZWQgdG8gaW5jbHVkZSBpdC5cbiAqIEBwYXJhbSBmZXRjaEluaXQgQSBbZmV0Y2ggaW5pdCBvYmplY3RdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9XaW5kb3dPcldvcmtlckdsb2JhbFNjb3BlL2ZldGNoI1N5bnRheCkuXG4gKiAgIE5vdGUgdGhhdCB0aGUgYGJvZHlgIHByb3BlcnR5IGRvZXMgbm90IG5lZWQgdG8gYmUgYEpTT04uc3RyaW5naWZ5KClgZWRcbiAqICAgYmVjYXVzZSBvcGVubXJzRmV0Y2ggd2lsbCBkbyB0aGF0IGZvciB5b3UuXG4gKiBAcmV0dXJucyBBIFtQcm9taXNlXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9KYXZhU2NyaXB0L1JlZmVyZW5jZS9HbG9iYWxfT2JqZWN0cy9Qcm9taXNlKVxuICogICB0aGF0IHJlc29sdmVzIHdpdGggYSBbUmVzcG9uc2Ugb2JqZWN0XShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvUmVzcG9uc2UpLlxuICogICBOb3RlIHRoYXQgdGhlIG9wZW5tcnMgdmVyc2lvbiBvZiB0aGUgUmVzcG9uc2Ugb2JqZWN0IGhhcyBhbHJlYWR5XG4gKiAgIGRvd25sb2FkZWQgdGhlIEhUVFAgcmVzcG9uc2UgYm9keSBhcyBqc29uLCBhbmQgaGFzIGFuIGFkZGl0aW9uYWxcbiAqICAgYGRhdGFgIHByb3BlcnR5IHdpdGggdGhlIEhUVFAgcmVzcG9uc2UganNvbiBhcyBhIGphdmFzY3JpcHQgb2JqZWN0LlxuICpcbiAqICMjIyMgRXhhbXBsZVxuICogYGBganNcbiAqIGltcG9ydCB7IG9wZW5tcnNGZXRjaCB9IGZyb20gJ0BvcGVubXJzL2VzbS1hcGknXG4gKiBjb25zdCBhYm9ydENvbnRyb2xsZXIgPSBuZXcgQWJvcnRDb250cm9sbGVyKCk7XG4gKiBvcGVubXJzRmV0Y2goJy93cy9yZXN0L3YxL3Nlc3Npb24nLCB7c2lnbmFsOiBhYm9ydENvbnRyb2xsZXIuc2lnbmFsfSlcbiAqICAgLnRoZW4ocmVzcG9uc2UgPT4ge1xuICogICAgIGNvbnNvbGUubG9nKHJlc3BvbnNlLmRhdGEuYXV0aGVudGljYXRlZClcbiAqICAgfSlcbiAqICAgLmNhdGNoKGVyciA9PiB7XG4gKiAgICAgY29uc29sZS5lcnJvcihlcnIuc3RhdHVzKTtcbiAqICAgfSlcbiAqIGFib3J0Q29udHJvbGxlci5hYm9ydCgpO1xuICogb3Blbm1yc0ZldGNoKCcvd3MvcmVzdC92MS9zZXNzaW9uJywge1xuICogICBtZXRob2Q6ICdQT1NUJyxcbiAqICAgYm9keToge1xuICogICAgIHVzZXJuYW1lOiAnaGknLFxuICogICAgIHBhc3N3b3JkOiAndGhlcmUnLFxuICogICB9XG4gKiB9KVxuICogYGBgXG4gKlxuICogIyMjIyBDYW5jZWxsYXRpb25cbiAqXG4gKiBUbyBjYW5jZWwgYSBuZXR3b3JrIHJlcXVlc3QsIHVzZSBhblxuICogW0Fib3J0Q29udHJvbGxlcl0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL0Fib3J0Q29udHJvbGxlci9hYm9ydCkuXG4gKiBJdCBpcyBiZXN0IHByYWN0aWNlIHRvIGNhbmNlbCB5b3VyIG5ldHdvcmsgcmVxdWVzdHMgd2hlbiB0aGUgdXNlclxuICogbmF2aWdhdGVzIGF3YXkgZnJvbSBhIHBhZ2Ugd2hpbGUgdGhlIHJlcXVlc3QgaXMgcGVuZGluZyByZXF1ZXN0LCB0b1xuICogZnJlZSB1cCBtZW1vcnkgYW5kIG5ldHdvcmsgcmVzb3VyY2VzIGFuZCB0byBwcmV2ZW50IHJhY2UgY29uZGl0aW9ucy5cbiAqXG4gKiBAY2F0ZWdvcnkgQVBJXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBvcGVubXJzRmV0Y2g8VCA9IGFueT4oXG4gIHBhdGg6IHN0cmluZyxcbiAgZmV0Y2hJbml0OiBGZXRjaENvbmZpZyA9IHt9XG4pOiBQcm9taXNlPEZldGNoUmVzcG9uc2U8VD4+IHtcbiAgaWYgKHR5cGVvZiBwYXRoICE9PSBcInN0cmluZ1wiKSB7XG4gICAgdGhyb3cgRXJyb3IoXG4gICAgICBcIlRoZSBmaXJzdCBhcmd1bWVudCB0byBAb3Blbm1ycy9hcGkncyBvcGVubXJzRmV0Y2ggZnVuY3Rpb24gbXVzdCBiZSBhIHVybCBzdHJpbmdcIlxuICAgICk7XG4gIH1cblxuICBpZiAodHlwZW9mIGZldGNoSW5pdCAhPT0gXCJvYmplY3RcIikge1xuICAgIHRocm93IEVycm9yKFxuICAgICAgXCJUaGUgc2Vjb25kIGFyZ3VtZW50IHRvIEBvcGVubXJzL2FwaSdzIG9wZW5tcnNGZXRjaCBmdW5jdGlvbiBtdXN0IGJlIGEgcGxhaW4gb2JqZWN0LlwiXG4gICAgKTtcbiAgfVxuXG4gIC8vIEB0cy1pZ25vcmVcbiAgaWYgKCF3aW5kb3cub3Blbm1yc0Jhc2UpIHtcbiAgICB0aHJvdyBFcnJvcihcbiAgICAgIFwiQG9wZW5tcnMvYXBpIGlzIHJ1bm5pbmcgaW4gYSBicm93c2VyIHRoYXQgZG9lc24ndCBoYXZlIHdpbmRvdy5vcGVubXJzQmFzZSwgd2hpY2ggaXMgcHJvdmlkZWQgYnkgb3Blbm1ycy1tb2R1bGUtc3BhJ3MgSFRNTCBmaWxlLlwiXG4gICAgKTtcbiAgfVxuXG4gIC8vIGVuc3VyZSBwYXRoIHN0YXJ0cyB3aXRoIC9cbiAgaWYgKHBhdGhbMF0gIT09IFwiL1wiKSB7XG4gICAgcGF0aCA9IFwiL1wiICsgcGF0aDtcbiAgfVxuXG4gIC8vIFByZWZpeCB0aGUgdXJsIHdpdGggdGhlIG9wZW5tcnMgc3BhIGJhc2VcbiAgbGV0IHVybDogc3RyaW5nID0gbWFrZVVybChwYXRoKTtcblxuICAvLyBXZSdyZSBnb2luZyB0byBuZWVkIHNvbWUgaGVhZGVyc1xuICBpZiAoIWZldGNoSW5pdC5oZWFkZXJzKSB7XG4gICAgZmV0Y2hJbml0LmhlYWRlcnMgPSB7fTtcbiAgfVxuXG4gIC8qIEF1dG9tYXRpY2FsbHkgc3RyaW5naWZ5IGphdmFzY3JpcHQgb2JqZWN0cyBiZWluZyBzZW50IGluIHRoZVxuICAgKiByZXF1ZXN0IGJvZHkuXG4gICAqL1xuICBpZiAoaXNQbGFpbk9iamVjdChmZXRjaEluaXQuYm9keSkpIHtcbiAgICBmZXRjaEluaXQuYm9keSA9IEpTT04uc3RyaW5naWZ5KGZldGNoSW5pdC5ib2R5KTtcbiAgfVxuXG4gIC8qIEFkZCBhIHJlcXVlc3QgaGVhZGVyIHRvIHRlbGwgdGhlIHNlcnZlciB0byByZXNwb25kIHdpdGgganNvbixcbiAgICogc2luY2UgZnJvbnRlbmQgY29kZSBhbG1vc3QgYWx3YXlzIHdhbnRzIGpzb24gYW5kIHRoZSBPcGVuTVJTXG4gICAqIHNlcnZlciB3b24ndCBnaXZlIHlvdSBqc29uIHVubGVzcyB5b3UgZXhwbGljaXRseSBhc2sgZm9yIGl0LlxuICAgKiBJZiBhIGRpZmZlcmVudCBBY2NlcHQgaGVhZGVyIGlzIHByZWZlcnJlZCwgcGFzcyBpdCBpbnRvIHRoZSBmZXRjaEluaXQuXG4gICAqIElmIG5vIEFjY2VwdCBoZWFkZXIgaXMgZGVzaXJlZCwgcGFzcyBpdCBpbiBleHBsaWNpdGx5IGFzIG51bGwuXG4gICAqL1xuICBpZiAodHlwZW9mIGZldGNoSW5pdC5oZWFkZXJzLkFjY2VwdCA9PT0gXCJ1bmRlZmluZWRcIikge1xuICAgIGZldGNoSW5pdC5oZWFkZXJzLkFjY2VwdCA9IFwiYXBwbGljYXRpb24vanNvblwiO1xuICB9XG5cbiAgaWYgKGZldGNoSW5pdC5oZWFkZXJzLkFjY2VwdCA9PT0gbnVsbCkge1xuICAgIGRlbGV0ZSBmZXRjaEluaXQuaGVhZGVycy5BY2NlcHQ7XG4gIH1cblxuICAvKiBUaGlzIHRlbGxzIHRoZSBPcGVuTVJTIFJFU1QgQVBJIG5vdCB0byByZXR1cm4gYSBXV1ctQXV0aGVudGljYXRlXG4gICAqIGhlYWRlci4gUmV0dXJuaW5nIHRoYXQgaGVhZGVyIGlzIHVzZWZ1bCB3aGVuIHVzaW5nIHRoZSBBUEksIGJ1dFxuICAgKiBub3QgZnJvbSBhIFVJLlxuICAgKi9cbiAgaWYgKFxuICAgIHBhdGguc3RhcnRzV2l0aChyZXN0QmFzZVVybCkgJiZcbiAgICB0eXBlb2YgZmV0Y2hJbml0LmhlYWRlcnNbXCJEaXNhYmxlLVdXVy1BdXRoZW50aWNhdGVcIl0gPT09IFwidW5kZWZpbmVkXCJcbiAgKSB7XG4gICAgZmV0Y2hJbml0LmhlYWRlcnNbXCJEaXNhYmxlLVdXVy1BdXRoZW50aWNhdGVcIl0gPSBcInRydWVcIjtcbiAgfVxuXG4gIGlmIChwYXRoLnN0YXJ0c1dpdGgoZmhpckJhc2VVcmwpKSB7XG4gICAgY29uc3QgdXJsVXJsID0gbmV3IFVSTCh1cmwsIHdpbmRvdy5sb2NhdGlvbi50b1N0cmluZygpKTtcbiAgICBpZiAoIXVybFVybC5zZWFyY2hQYXJhbXMuaGFzKFwiX3N1bW1hcnlcIikpIHtcbiAgICAgIHVybFVybC5zZWFyY2hQYXJhbXMuc2V0KFwiX3N1bW1hcnlcIiwgXCJkYXRhXCIpO1xuICAgICAgdXJsID0gdXJsVXJsLnRvU3RyaW5nKCk7XG4gICAgfVxuICB9XG5cbiAgLyogV2UgY2FwdHVyZSB0aGUgc3RhY2t0cmFjZSBiZWZvcmUgbWFraW5nIHRoZSByZXF1ZXN0LCBzbyB0aGF0IGlmIGFuIGVycm9yIG9jY3VycyB3ZSBjYW5cbiAgICogbG9nIGEgZnVsbCBzdGFja3RyYWNlIHRoYXQgaW5jbHVkZXMgdGhlIGNvZGUgdGhhdCBtYWRlIHRoZSByZXF1ZXN0IGFuZCBoYW5kbGVkIHRoZSByZXNwb25zZVxuICAgKiBPdGhlcndpc2UsIHdlIGNvdWxkIHJ1biBpbnRvIHNpdHVhdGlvbnMgd2hlcmUgdGhlIHN0YWNrdHJhY2UgZG9lc24ndCBldmVuIHNob3cgd2hpY2ggY29kZVxuICAgKiBjYWxsZWQgQG9wZW5tcnMvYXBpLlxuICAgKi9cbiAgY29uc3QgcmVxdWVzdFN0YWNrdHJhY2UgPSBFcnJvcigpO1xuXG4gIHJldHVybiB3aW5kb3cuZmV0Y2godXJsLCBmZXRjaEluaXQgYXMgUmVxdWVzdEluaXQpLnRoZW4oYXN5bmMgKHIpID0+IHtcbiAgICBjb25zdCByZXNwb25zZSA9IHIgYXMgRmV0Y2hSZXNwb25zZTxUPjtcbiAgICBpZiAocmVzcG9uc2Uub2spIHtcbiAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT09IDIwNCkge1xuICAgICAgICAvKiBIVFRQIDIwNCAtIE5vIENvbnRlbnRcbiAgICAgICAgICogV2Ugc2hvdWxkIG5vdCB0cnkgdG8gZG93bmxvYWQgdGhlIGVtcHR5IHJlc3BvbnNlIGFzIGpzb24uIEluc3RlYWQsXG4gICAgICAgICAqIHdlIHJldHVybiBudWxsIHNpbmNlIHRoZXJlIGlzIG5vIHJlc3BvbnNlIGJvZHkuXG4gICAgICAgICAqL1xuICAgICAgICByZXNwb25zZS5kYXRhID0gbnVsbCBhcyB1bmtub3duIGFzIFQ7XG4gICAgICAgIHJldHVybiByZXNwb25zZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIEhUVFAgMjAwcyAtIFRoZSByZXF1ZXN0IHN1Y2NlZWRlZFxuICAgICAgICByZXR1cm4gcmVzcG9uc2UudGV4dCgpLnRoZW4oKHJlc3BvbnNlVGV4dCkgPT4ge1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICBpZiAocmVzcG9uc2VUZXh0KSB7XG4gICAgICAgICAgICAgIHJlc3BvbnNlLmRhdGEgPSBKU09OLnBhcnNlKHJlc3BvbnNlVGV4dCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICAvLyBTZXJ2ZXIgZGlkbid0IHJlc3BvbmQgd2l0aCBqc29uXG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiByZXNwb25zZTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIC8qIEhUVFAgcmVzcG9uc2Ugc3RhdHVzIGlzIG5vdCBpbiAyMDBzLiBVc3VhbGx5IHRoaXMgd2lsbCBtZWFuXG4gICAgICAgKiBlaXRoZXIgSFRUUCA0MDBzIChiYWQgcmVxdWVzdCBmcm9tIGJyb3dzZXIpIG9yIEhUVFAgNTAwcyAoc2VydmVyIGVycm9yKVxuICAgICAgICogT3VyIGdvYWwgaXMgdG8gY29tZSB1cCB3aXRoIGJlc3QgcG9zc2libGUgc3RhY2t0cmFjZSBhbmQgZXJyb3IgbWVzc2FnZVxuICAgICAgICogdG8gaGVscCBkZXZlbG9wZXJzIHVuZGVyc3RhbmQgdGhlIHByb2JsZW0gYW5kIGRlYnVnXG4gICAgICAgKi9cblxuICAgICAgLypcbiAgICAgICAqUmVkaXJlY3QgdG8gZ2l2ZW4gdXJsIHdoZW4gcmVkaXJlY3Qgb24gYXV0aCBmYWlsdXJlIGlzIGVuYWJsZWRcbiAgICAgICAqL1xuICAgICAgY29uc3QgeyByZWRpcmVjdEF1dGhGYWlsdXJlIH0gPSBhd2FpdCBnZXRDb25maWcoXCJAb3Blbm1ycy9lc20tYXBpXCIpO1xuXG4gICAgICBpZiAoXG4gICAgICAgICh1cmwgPT09IG1ha2VVcmwoc2Vzc2lvbkVuZHBvaW50KSAmJiByZXNwb25zZS5zdGF0dXMgPT09IDQwMykgfHxcbiAgICAgICAgKHJlZGlyZWN0QXV0aEZhaWx1cmUuZW5hYmxlZCAmJlxuICAgICAgICAgIHJlZGlyZWN0QXV0aEZhaWx1cmUuZXJyb3JzLmluY2x1ZGVzKHJlc3BvbnNlLnN0YXR1cykpXG4gICAgICApIHtcbiAgICAgICAgbmF2aWdhdGUoeyB0bzogcmVkaXJlY3RBdXRoRmFpbHVyZS51cmwgfSk7XG5cbiAgICAgICAgLyogV2Ugc29tZXRpbWVzIGRvbid0IHJlYWxseSB3YW50IHRoaXMgcHJvbWlzZSB0byByZXNvbHZlIHNpbmNlIHRoZXJlJ3Mgbm8gcmVzcG9uc2UgZGF0YSxcbiAgICAgICAgICogbm9yIGRvIHdlIHdhbnQgaXQgdG8gcmVqZWN0IGJlY2F1c2UgdGhhdCB3b3VsZCB0cmlnZ2VyIGVycm9yIGhhbmRsaW5nLiBXZSBpbnN0ZWFkXG4gICAgICAgICAqIHdhbnQgaXQgdG8gcmVtYWluIGluIHBlbmRpbmcgc3RhdHVzIHdoaWxlIHRoZSBuYXZpZ2F0aW9uIG9jY3Vycy5cbiAgICAgICAgICovXG4gICAgICAgIHJldHVybiByZWRpcmVjdEF1dGhGYWlsdXJlLnJlc29sdmVQcm9taXNlXG4gICAgICAgICAgPyAoUHJvbWlzZS5yZXNvbHZlKCkgYXMgdW5rbm93biBhcyBQcm9taXNlPEZldGNoUmVzcG9uc2U+KVxuICAgICAgICAgIDogbmV3IFByb21pc2U8RmV0Y2hSZXNwb25zZT4oKCkgPT4ge30pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gQXR0ZW1wdCB0byBkb3dubG9hZCBhIHJlc3BvbnNlIGJvZHksIGlmIGl0IGhhcyBvbmVcbiAgICAgICAgcmV0dXJuIHJlc3BvbnNlLnRleHQoKS50aGVuKFxuICAgICAgICAgIChyZXNwb25zZVRleHQpID0+IHtcbiAgICAgICAgICAgIGxldCByZXNwb25zZUJvZHkgPSByZXNwb25zZVRleHQ7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICByZXNwb25zZUJvZHkgPSBKU09OLnBhcnNlKHJlc3BvbnNlVGV4dCk7XG4gICAgICAgICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgICAgLy8gU2VydmVyIGRpZG4ndCByZXNwb25kIHdpdGgganNvbiwgc28ganVzdCBnbyB3aXRoIHRoZSByZXNwb25zZSB0ZXh0IHN0cmluZ1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvKiBNYWtlIHRoZSBmZXRjaCBwcm9taXNlIGdvIGludG8gXCJyZWplY3RlZFwiIHN0YXR1cywgd2l0aCB0aGUgYmVzdFxuICAgICAgICAgICAgICogcG9zc2libGUgc3RhY2t0cmFjZSBhbmQgZXJyb3IgbWVzc2FnZS5cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgdGhyb3cgbmV3IE9wZW5tcnNGZXRjaEVycm9yKFxuICAgICAgICAgICAgICB1cmwsXG4gICAgICAgICAgICAgIHJlc3BvbnNlLFxuICAgICAgICAgICAgICByZXNwb25zZUJvZHksXG4gICAgICAgICAgICAgIHJlcXVlc3RTdGFja3RyYWNlXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgKGVycikgPT4ge1xuICAgICAgICAgICAgLyogV2Ugd2VyZW4ndCBhYmxlIHRvIGRvd25sb2FkIGEgcmVzcG9uc2UgYm9keSBmb3IgdGhpcyBlcnJvci5cbiAgICAgICAgICAgICAqIFRpbWUgdG8ganVzdCBnaXZlIHRoZSBiZXN0IHBvc3NpYmxlIHN0YWNrdHJhY2UgYW5kIGVycm9yIG1lc3NhZ2UuXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHRocm93IG5ldyBPcGVubXJzRmV0Y2hFcnJvcih1cmwsIHJlc3BvbnNlLCBudWxsLCByZXF1ZXN0U3RhY2t0cmFjZSk7XG4gICAgICAgICAgfVxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cbiAgfSk7XG59XG5cbi8qKlxuICogVGhlIG9wZW5tcnNPYnNlcnZhYmxlRmV0Y2ggZnVuY3Rpb24gaXMgYSB3cmFwcGVyIGFyb3VuZCBvcGVubXJzRmV0Y2hcbiAqIHRoYXQgcmV0dXJucyBhbiBbT2JzZXJ2YWJsZV0oaHR0cHM6Ly9yeGpzLWRldi5maXJlYmFzZWFwcC5jb20vZ3VpZGUvb2JzZXJ2YWJsZSlcbiAqIGluc3RlYWQgb2YgYSBwcm9taXNlLiBJdCBleGlzdHMgaW4gY2FzZSB1c2luZyBhbiBPYnNlcnZhYmxlIGlzXG4gKiBwcmVmZXJyZWQgb3IgbW9yZSBjb252ZW5pZW50IHRoYW4gYSBwcm9taXNlLlxuICpcbiAqIEBwYXJhbSB1cmwgU2VlIFtbb3Blbm1yc0ZldGNoXV1cbiAqIEBwYXJhbSBmZXRjaEluaXQgU2VlIFtbb3Blbm1yc0ZldGNoXV1cbiAqIEByZXR1cm5zIEFuIE9ic2VydmFibGUgdGhhdCBwcm9kdWNlcyBleGFjdGx5IG9uZSBSZXNwb25zZSBvYmplY3QuXG4gKiBUaGUgcmVzcG9uc2Ugb2JqZWN0IGlzIGV4YWN0bHkgdGhlIHNhbWUgYXMgZm9yIFtbb3Blbm1yc0ZldGNoXV0uXG4gKlxuICogIyMjIyBFeGFtcGxlXG4gKlxuICogYGBganNcbiAqIGltcG9ydCB7IG9wZW5tcnNPYnNlcnZhYmxlRmV0Y2ggfSBmcm9tICdAb3Blbm1ycy9lc20tYXBpJ1xuICogY29uc3Qgc3Vic2NyaXB0aW9uID0gb3Blbm1yc09ic2VydmFibGVGZXRjaCgnL3dzL3Jlc3QvdjEvc2Vzc2lvbicpLnN1YnNjcmliZShcbiAqICAgcmVzcG9uc2UgPT4gY29uc29sZS5sb2cocmVzcG9uc2UuZGF0YSksXG4gKiAgIGVyciA9PiB7dGhyb3cgZXJyfSxcbiAqICAgKCkgPT4gY29uc29sZS5sb2coJ2ZpbmlzaGVkJylcbiAqIClcbiAqIHN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpXG4gKiBgYGBcbiAqXG4gKiAjIyMjIENhbmNlbGxhdGlvblxuICpcbiAqIFRvIGNhbmNlbCB0aGUgbmV0d29yayByZXF1ZXN0LCBzaW1wbHkgY2FsbCBgc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7YFxuICpcbiAqIEBjYXRlZ29yeSBBUElcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG9wZW5tcnNPYnNlcnZhYmxlRmV0Y2g8VD4oXG4gIHVybDogc3RyaW5nLFxuICBmZXRjaEluaXQ6IEZldGNoQ29uZmlnID0ge31cbikge1xuICBpZiAodHlwZW9mIGZldGNoSW5pdCAhPT0gXCJvYmplY3RcIikge1xuICAgIHRocm93IEVycm9yKFxuICAgICAgXCJUaGUgc2Vjb25kIGFyZ3VtZW50IHRvIG9wZW5tcnNPYnNlcnZhYmxlRmV0Y2ggbXVzdCBiZSBlaXRoZXIgb21pdHRlZCBvciBhbiBvYmplY3RcIlxuICAgICk7XG4gIH1cblxuICBjb25zdCBhYm9ydENvbnRyb2xsZXIgPSBuZXcgQWJvcnRDb250cm9sbGVyKCk7XG5cbiAgZmV0Y2hJbml0LnNpZ25hbCA9IGFib3J0Q29udHJvbGxlci5zaWduYWw7XG5cbiAgcmV0dXJuIG5ldyBPYnNlcnZhYmxlPEZldGNoUmVzcG9uc2U8VD4+KChvYnNlcnZlcikgPT4ge1xuICAgIGxldCBoYXNSZXNwb25zZSA9IGZhbHNlO1xuXG4gICAgb3Blbm1yc0ZldGNoKHVybCwgZmV0Y2hJbml0KS50aGVuKFxuICAgICAgKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgIGhhc1Jlc3BvbnNlID0gdHJ1ZTtcbiAgICAgICAgb2JzZXJ2ZXIubmV4dChyZXNwb25zZSk7XG4gICAgICAgIG9ic2VydmVyLmNvbXBsZXRlKCk7XG4gICAgICB9LFxuICAgICAgKGVycikgPT4ge1xuICAgICAgICBoYXNSZXNwb25zZSA9IHRydWU7XG4gICAgICAgIG9ic2VydmVyLmVycm9yKGVycik7XG4gICAgICB9XG4gICAgKTtcblxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBpZiAoIWhhc1Jlc3BvbnNlKSB7XG4gICAgICAgIGFib3J0Q29udHJvbGxlci5hYm9ydCgpO1xuICAgICAgfVxuICAgIH07XG4gIH0pO1xufVxuXG5leHBvcnQgY2xhc3MgT3Blbm1yc0ZldGNoRXJyb3IgZXh0ZW5kcyBFcnJvciB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHVybDogc3RyaW5nLFxuICAgIHJlc3BvbnNlOiBSZXNwb25zZSxcbiAgICByZXNwb25zZUJvZHk6IFJlc3BvbnNlQm9keSB8IG51bGwsXG4gICAgcmVxdWVzdFN0YWNrdHJhY2U6IEVycm9yXG4gICkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5tZXNzYWdlID0gYFNlcnZlciByZXNwb25kZWQgd2l0aCAke3Jlc3BvbnNlLnN0YXR1c30gKCR7cmVzcG9uc2Uuc3RhdHVzVGV4dH0pIGZvciB1cmwgJHt1cmx9LiBDaGVjayBlcnIucmVzcG9uc2VCb2R5IG9yIG5ldHdvcmsgdGFiIGluIGRldiB0b29scyBmb3IgbW9yZSBpbmZvYDtcbiAgICByZXF1ZXN0U3RhY2t0cmFjZS5tZXNzYWdlID0gdGhpcy5tZXNzYWdlO1xuICAgIHRoaXMucmVzcG9uc2VCb2R5ID0gcmVzcG9uc2VCb2R5O1xuICAgIHRoaXMucmVzcG9uc2UgPSByZXNwb25zZTtcbiAgICB0aGlzLnN0YWNrID0gYFN0YWNrdHJhY2UgZm9yIG91dGdvaW5nIHJlcXVlc3Q6XFxuJHtyZXF1ZXN0U3RhY2t0cmFjZS5zdGFja31cXG5TdGFja3RyYWNlIGZvciBpbmNvbWluZyByZXNwb25zZTpcXG4ke3RoaXMuc3RhY2t9YDtcbiAgfVxuICByZXNwb25zZTogUmVzcG9uc2U7XG4gIHJlc3BvbnNlQm9keTogc3RyaW5nIHwgRmV0Y2hSZXNwb25zZUpzb24gfCBudWxsO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEZldGNoQ29uZmlnIGV4dGVuZHMgT21pdDxSZXF1ZXN0SW5pdCwgXCJib2R5XCIgfCBcImhlYWRlcnNcIj4ge1xuICBoZWFkZXJzPzogRmV0Y2hIZWFkZXJzO1xuICBib2R5PzogRmV0Y2hCb2R5IHwgc3RyaW5nO1xufVxuXG50eXBlIFJlc3BvbnNlQm9keSA9IHN0cmluZyB8IEZldGNoUmVzcG9uc2VKc29uO1xuXG5leHBvcnQgaW50ZXJmYWNlIEZldGNoSGVhZGVycyB7XG4gIFtrZXk6IHN0cmluZ106IHN0cmluZyB8IG51bGw7XG59XG5cbmludGVyZmFjZSBGZXRjaEJvZHkge1xuICBba2V5OiBzdHJpbmddOiBhbnk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRmV0Y2hSZXNwb25zZUpzb24ge1xuICBba2V5OiBzdHJpbmddOiBhbnk7XG59XG4iXSwibmFtZXMiOlsiT2JzZXJ2YWJsZSIsImlzUGxhaW5PYmplY3QiLCJnZXRDb25maWciLCJuYXZpZ2F0ZSIsInJlc3RCYXNlVXJsIiwiZmhpckJhc2VVcmwiLCJzZXNzaW9uRW5kcG9pbnQiLCJtYWtlVXJsIiwicGF0aCIsIndpbmRvdyIsIm9wZW5tcnNCYXNlIiwib3Blbm1yc0ZldGNoIiwiZmV0Y2hJbml0IiwiRXJyb3IiLCJ1cmwiLCJoZWFkZXJzIiwiYm9keSIsIkpTT04iLCJzdHJpbmdpZnkiLCJBY2NlcHQiLCJzdGFydHNXaXRoIiwidXJsVXJsIiwiVVJMIiwibG9jYXRpb24iLCJ0b1N0cmluZyIsInNlYXJjaFBhcmFtcyIsImhhcyIsInNldCIsInJlcXVlc3RTdGFja3RyYWNlIiwiZmV0Y2giLCJ0aGVuIiwiciIsInJlc3BvbnNlIiwicmVkaXJlY3RBdXRoRmFpbHVyZSIsIm9rIiwic3RhdHVzIiwiZGF0YSIsInRleHQiLCJyZXNwb25zZVRleHQiLCJwYXJzZSIsImVyciIsImVuYWJsZWQiLCJlcnJvcnMiLCJpbmNsdWRlcyIsInRvIiwicmVzb2x2ZVByb21pc2UiLCJQcm9taXNlIiwicmVzb2x2ZSIsInJlc3BvbnNlQm9keSIsIk9wZW5tcnNGZXRjaEVycm9yIiwib3Blbm1yc09ic2VydmFibGVGZXRjaCIsImFib3J0Q29udHJvbGxlciIsIkFib3J0Q29udHJvbGxlciIsInNpZ25hbCIsIm9ic2VydmVyIiwiaGFzUmVzcG9uc2UiLCJuZXh0IiwiY29tcGxldGUiLCJlcnJvciIsImFib3J0IiwibWVzc2FnZSIsInN0YXR1c1RleHQiLCJzdGFjayJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../framework/esm-api/src/openmrs-fetch.ts\n");
6447
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"OpenmrsFetchError\": () => (/* binding */ OpenmrsFetchError),\n/* harmony export */ \"fhirBaseUrl\": () => (/* binding */ fhirBaseUrl),\n/* harmony export */ \"makeUrl\": () => (/* binding */ makeUrl),\n/* harmony export */ \"openmrsFetch\": () => (/* binding */ openmrsFetch),\n/* harmony export */ \"openmrsObservableFetch\": () => (/* binding */ openmrsObservableFetch),\n/* harmony export */ \"restBaseUrl\": () => (/* binding */ restBaseUrl),\n/* harmony export */ \"sessionEndpoint\": () => (/* binding */ sessionEndpoint)\n/* harmony export */ });\n/* harmony import */ var rxjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! rxjs */ \"webpack/sharing/consume/default/rxjs/rxjs\");\n/* harmony import */ var rxjs__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(rxjs__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var lodash_es_isPlainObject__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! lodash-es/isPlainObject */ \"../../../node_modules/lodash-es/isPlainObject.js\");\n/* harmony import */ var _openmrs_esm_config__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @openmrs/esm-config */ \"../../framework/esm-config/src/index.ts\");\n/** @module @category API */ function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n return self;\n}\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\nfunction _asyncToGenerator(fn) {\n return function() {\n var self = this, args = arguments;\n return new Promise(function(resolve, reject) {\n var gen = fn.apply(self, args);\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n _next(undefined);\n });\n };\n}\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\nfunction isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n try {\n Date.prototype.toString.call(Reflect.construct(Date, [], function() {}));\n return true;\n } catch (e) {\n return false;\n }\n}\nfunction _construct(Parent, args, Class) {\n if (isNativeReflectConstruct()) {\n _construct = Reflect.construct;\n } else {\n _construct = function _construct(Parent, args, Class) {\n var a = [\n null\n ];\n a.push.apply(a, args);\n var Constructor = Function.bind.apply(Parent, a);\n var instance = new Constructor();\n if (Class) _setPrototypeOf(instance, Class.prototype);\n return instance;\n };\n }\n return _construct.apply(null, arguments);\n}\nfunction _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) _setPrototypeOf(subClass, superClass);\n}\nfunction _isNativeFunction(fn) {\n return Function.toString.call(fn).indexOf(\"[native code]\") !== -1;\n}\nfunction _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n }\n return _assertThisInitialized(self);\n}\nfunction _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return _setPrototypeOf(o, p);\n}\nvar _typeof = function(obj) {\n \"@swc/helpers - typeof\";\n return obj && typeof Symbol !== \"undefined\" && obj.constructor === Symbol ? \"symbol\" : typeof obj;\n};\nfunction _wrapNativeSuper(Class) {\n var _cache = typeof Map === \"function\" ? new Map() : undefined;\n _wrapNativeSuper = function _wrapNativeSuper(Class) {\n if (Class === null || !_isNativeFunction(Class)) return Class;\n if (typeof Class !== \"function\") {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n if (typeof _cache !== \"undefined\") {\n if (_cache.has(Class)) return _cache.get(Class);\n _cache.set(Class, Wrapper);\n }\n function Wrapper() {\n return _construct(Class, arguments, _getPrototypeOf(this).constructor);\n }\n Wrapper.prototype = Object.create(Class.prototype, {\n constructor: {\n value: Wrapper,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n return _setPrototypeOf(Wrapper, Class);\n };\n return _wrapNativeSuper(Class);\n}\nfunction _isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n try {\n Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() {}));\n return true;\n } catch (e) {\n return false;\n }\n}\nfunction _createSuper(Derived) {\n var hasNativeReflectConstruct = _isNativeReflectConstruct();\n return function _createSuperInternal() {\n var Super = _getPrototypeOf(Derived), result;\n if (hasNativeReflectConstruct) {\n var NewTarget = _getPrototypeOf(this).constructor;\n result = Reflect.construct(Super, arguments, NewTarget);\n } else {\n result = Super.apply(this, arguments);\n }\n return _possibleConstructorReturn(this, result);\n };\n}\nvar __generator = undefined && undefined.__generator || function(thisArg, body) {\n var f, y, t, g, _ = {\n label: 0,\n sent: function() {\n if (t[0] & 1) throw t[1];\n return t[1];\n },\n trys: [],\n ops: []\n };\n return g = {\n next: verb(0),\n \"throw\": verb(1),\n \"return\": verb(2)\n }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() {\n return this;\n }), g;\n function verb(n) {\n return function(v) {\n return step([\n n,\n v\n ]);\n };\n }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while(_)try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [\n op[0] & 2,\n t.value\n ];\n switch(op[0]){\n case 0:\n case 1:\n t = op;\n break;\n case 4:\n _.label++;\n return {\n value: op[1],\n done: false\n };\n case 5:\n _.label++;\n y = op[1];\n op = [\n 0\n ];\n continue;\n case 7:\n op = _.ops.pop();\n _.trys.pop();\n continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {\n _ = 0;\n continue;\n }\n if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {\n _.label = op[1];\n break;\n }\n if (op[0] === 6 && _.label < t[1]) {\n _.label = t[1];\n t = op;\n break;\n }\n if (t && _.label < t[2]) {\n _.label = t[2];\n _.ops.push(op);\n break;\n }\n if (t[2]) _.ops.pop();\n _.trys.pop();\n continue;\n }\n op = body.call(thisArg, _);\n } catch (e) {\n op = [\n 6,\n e\n ];\n y = 0;\n } finally{\n f = t = 0;\n }\n if (op[0] & 5) throw op[1];\n return {\n value: op[0] ? op[1] : void 0,\n done: true\n };\n }\n};\n\n\n\nvar restBaseUrl = \"/ws/rest/v1/\";\nvar fhirBaseUrl = \"/ws/fhir2/R4\";\nvar sessionEndpoint = \"\".concat(restBaseUrl, \"session\");\n/**\n * Append `path` to the OpenMRS SPA base.\n *\n * #### Example\n *\n * ```ts\n * makeUrl('/foo/bar');\n * // => '/openmrs/foo/bar'\n * ```\n */ function makeUrl(path) {\n return window.openmrsBase + path;\n}\n/**\n * The openmrsFetch function is a wrapper around the\n * [browser's built-in fetch function](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API/Using_Fetch),\n * with extra handling for OpenMRS-specific API behaviors, such as\n * request headers, authentication, authorization, and the API urls.\n *\n * @param path A string url to make the request to. Note that the\n * openmrs base url (by default `/openmrs`) will be automatically\n * prepended to the URL, so there is no need to include it.\n * @param fetchInit A [fetch init object](https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/fetch#Syntax).\n * Note that the `body` property does not need to be `JSON.stringify()`ed\n * because openmrsFetch will do that for you.\n * @returns A [Promise](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise)\n * that resolves with a [Response object](https://developer.mozilla.org/en-US/docs/Web/API/Response).\n * Note that the openmrs version of the Response object has already\n * downloaded the HTTP response body as json, and has an additional\n * `data` property with the HTTP response json as a javascript object.\n *\n * #### Example\n * ```js\n * import { openmrsFetch } from '@openmrs/esm-api'\n * const abortController = new AbortController();\n * openmrsFetch('/ws/rest/v1/session', {signal: abortController.signal})\n * .then(response => {\n * console.log(response.data.authenticated)\n * })\n * .catch(err => {\n * console.error(err.status);\n * })\n * abortController.abort();\n * openmrsFetch('/ws/rest/v1/session', {\n * method: 'POST',\n * body: {\n * username: 'hi',\n * password: 'there',\n * }\n * })\n * ```\n *\n * #### Cancellation\n *\n * To cancel a network request, use an\n * [AbortController](https://developer.mozilla.org/en-US/docs/Web/API/AbortController/abort).\n * It is best practice to cancel your network requests when the user\n * navigates away from a page while the request is pending request, to\n * free up memory and network resources and to prevent race conditions.\n *\n * @category API\n */ function openmrsFetch(path) {\n var fetchInit = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};\n if (typeof path !== \"string\") {\n throw Error(\"The first argument to @openmrs/api's openmrsFetch function must be a url string\");\n }\n if (typeof fetchInit !== \"object\") {\n throw Error(\"The second argument to @openmrs/api's openmrsFetch function must be a plain object.\");\n }\n // @ts-ignore\n if (!window.openmrsBase) {\n throw Error(\"@openmrs/api is running in a browser that doesn't have window.openmrsBase, which is provided by openmrs-module-spa's HTML file.\");\n }\n // ensure path starts with /\n if (path[0] !== \"/\") {\n path = \"/\" + path;\n }\n // Prefix the url with the openmrs spa base\n var url = makeUrl(path);\n // We're going to need some headers\n if (!fetchInit.headers) {\n fetchInit.headers = {};\n }\n /* Automatically stringify javascript objects being sent in the\n * request body.\n */ if ((0,lodash_es_isPlainObject__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(fetchInit.body)) {\n fetchInit.body = JSON.stringify(fetchInit.body);\n }\n /* Add a request header to tell the server to respond with json,\n * since frontend code almost always wants json and the OpenMRS\n * server won't give you json unless you explicitly ask for it.\n * If a different Accept header is preferred, pass it into the fetchInit.\n * If no Accept header is desired, pass it in explicitly as null.\n */ if (typeof fetchInit.headers.Accept === \"undefined\") {\n fetchInit.headers.Accept = \"application/json\";\n }\n if (fetchInit.headers.Accept === null) {\n delete fetchInit.headers.Accept;\n }\n /* This tells the OpenMRS REST API not to return a WWW-Authenticate\n * header. Returning that header is useful when using the API, but\n * not from a UI.\n */ if (path.startsWith(restBaseUrl) && typeof fetchInit.headers[\"Disable-WWW-Authenticate\"] === \"undefined\") {\n fetchInit.headers[\"Disable-WWW-Authenticate\"] = \"true\";\n }\n if (path.startsWith(fhirBaseUrl)) {\n var urlUrl = new URL(url, window.location.toString());\n if (!urlUrl.searchParams.has(\"_summary\")) {\n urlUrl.searchParams.set(\"_summary\", \"data\");\n url = urlUrl.toString();\n }\n }\n /* We capture the stacktrace before making the request, so that if an error occurs we can\n * log a full stacktrace that includes the code that made the request and handled the response\n * Otherwise, we could run into situations where the stacktrace doesn't even show which code\n * called @openmrs/api.\n */ var requestStacktrace = Error();\n return window.fetch(url, fetchInit).then(function() {\n var _ref = _asyncToGenerator(function(r) {\n var response, redirectAuthFailure;\n return __generator(this, function(_state) {\n switch(_state.label){\n case 0:\n response = r;\n if (!response.ok) return [\n 3,\n 1\n ];\n if (response.status === 204) {\n /* HTTP 204 - No Content\n * We should not try to download the empty response as json. Instead,\n * we return null since there is no response body.\n */ response.data = null;\n return [\n 2,\n response\n ];\n } else {\n // HTTP 200s - The request succeeded\n return [\n 2,\n response.clone().text().then(function(responseText) {\n try {\n if (responseText) {\n response.data = JSON.parse(responseText);\n }\n } catch (err) {\n // Server didn't respond with json\n }\n return response;\n })\n ];\n }\n return [\n 3,\n 3\n ];\n case 1:\n return [\n 4,\n (0,_openmrs_esm_config__WEBPACK_IMPORTED_MODULE_1__.getConfig)(\"@openmrs/esm-api\")\n ];\n case 2:\n redirectAuthFailure = _state.sent().redirectAuthFailure;\n if (url === makeUrl(sessionEndpoint) && response.status === 403 || redirectAuthFailure.enabled && redirectAuthFailure.errors.includes(response.status)) {\n (0,_openmrs_esm_config__WEBPACK_IMPORTED_MODULE_1__.navigate)({\n to: redirectAuthFailure.url\n });\n /* We sometimes don't really want this promise to resolve since there's no response data,\n * nor do we want it to reject because that would trigger error handling. We instead\n * want it to remain in pending status while the navigation occurs.\n */ return [\n 2,\n redirectAuthFailure.resolvePromise ? Promise.resolve() : new Promise(function() {})\n ];\n } else {\n // Attempt to download a response body, if it has one\n return [\n 2,\n response.clone().text().then(function(responseText) {\n var responseBody = responseText;\n try {\n responseBody = JSON.parse(responseText);\n } catch (err) {\n // Server didn't respond with json, so just go with the response text string\n }\n /* Make the fetch promise go into \"rejected\" status, with the best\n * possible stacktrace and error message.\n */ throw new OpenmrsFetchError(url, response, responseBody, requestStacktrace);\n }, function(err) {\n /* We weren't able to download a response body for this error.\n * Time to just give the best possible stacktrace and error message.\n */ throw new OpenmrsFetchError(url, response, null, requestStacktrace);\n })\n ];\n }\n _state.label = 3;\n case 3:\n return [\n 2\n ];\n }\n });\n });\n return function(r) {\n return _ref.apply(this, arguments);\n };\n }());\n}\n/**\n * The openmrsObservableFetch function is a wrapper around openmrsFetch\n * that returns an [Observable](https://rxjs-dev.firebaseapp.com/guide/observable)\n * instead of a promise. It exists in case using an Observable is\n * preferred or more convenient than a promise.\n *\n * @param url See [[openmrsFetch]]\n * @param fetchInit See [[openmrsFetch]]\n * @returns An Observable that produces exactly one Response object.\n * The response object is exactly the same as for [[openmrsFetch]].\n *\n * #### Example\n *\n * ```js\n * import { openmrsObservableFetch } from '@openmrs/esm-api'\n * const subscription = openmrsObservableFetch('/ws/rest/v1/session').subscribe(\n * response => console.log(response.data),\n * err => {throw err},\n * () => console.log('finished')\n * )\n * subscription.unsubscribe()\n * ```\n *\n * #### Cancellation\n *\n * To cancel the network request, simply call `subscription.unsubscribe();`\n *\n * @category API\n */ function openmrsObservableFetch(url) {\n var fetchInit = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};\n if (typeof fetchInit !== \"object\") {\n throw Error(\"The second argument to openmrsObservableFetch must be either omitted or an object\");\n }\n var abortController = new AbortController();\n fetchInit.signal = abortController.signal;\n return new rxjs__WEBPACK_IMPORTED_MODULE_0__.Observable(function(observer) {\n var hasResponse = false;\n openmrsFetch(url, fetchInit).then(function(response) {\n hasResponse = true;\n observer.next(response);\n observer.complete();\n }, function(err) {\n hasResponse = true;\n observer.error(err);\n });\n return function() {\n if (!hasResponse) {\n abortController.abort();\n }\n };\n });\n}\nvar OpenmrsFetchError = /*#__PURE__*/ function(Error1) {\n \"use strict\";\n _inherits(OpenmrsFetchError, Error1);\n var _super = _createSuper(OpenmrsFetchError);\n function OpenmrsFetchError(url, response, responseBody, requestStacktrace) {\n _classCallCheck(this, OpenmrsFetchError);\n var _this;\n _this = _super.call(this);\n _this.message = \"Server responded with \".concat(response.status, \" (\").concat(response.statusText, \") for url \").concat(url, \". Check err.responseBody or network tab in dev tools for more info\");\n requestStacktrace.message = _this.message;\n _this.responseBody = responseBody;\n _this.response = response;\n _this.stack = \"Stacktrace for outgoing request:\\n\".concat(requestStacktrace.stack, \"\\nStacktrace for incoming response:\\n\").concat(_this.stack);\n return _this;\n }\n return OpenmrsFetchError;\n}(_wrapNativeSuper(Error));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vZnJhbWV3b3JrL2VzbS1hcGkvc3JjL29wZW5tcnMtZmV0Y2gudHMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7QUFBQSwwQkFBMEIsR0FDMUI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFrQztBQUNrQjtBQUNNO0FBR25ELElBQU1JLGNBQWMsZUFBZTtBQUVuQyxJQUFNQyxjQUFjLGVBQWU7QUFFbkMsSUFBTUMsa0JBQWtCLEdBQWUsT0FBWkYsYUFBWSxXQUFTO0FBRXZEOzs7Ozs7Ozs7Q0FTQyxHQUNNLFNBQVNHLFFBQVFDLElBQVksRUFBRTtJQUNwQyxPQUFPQyxPQUFPQyxXQUFXLEdBQUdGO0FBQzlCLENBQUM7QUFFRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0NBZ0RDLEdBQ00sU0FBU0csYUFDZEgsSUFBWSxFQUVlO1FBRDNCSSxZQUFBQSxpRUFBeUIsQ0FBQyxDQUFDO0lBRTNCLElBQUksT0FBT0osU0FBUyxVQUFVO1FBQzVCLE1BQU1LLE1BQ0osbUZBQ0E7SUFDSixDQUFDO0lBRUQsSUFBSSxPQUFPRCxjQUFjLFVBQVU7UUFDakMsTUFBTUMsTUFDSix1RkFDQTtJQUNKLENBQUM7SUFFRCxhQUFhO0lBQ2IsSUFBSSxDQUFDSixPQUFPQyxXQUFXLEVBQUU7UUFDdkIsTUFBTUcsTUFDSixtSUFDQTtJQUNKLENBQUM7SUFFRCw0QkFBNEI7SUFDNUIsSUFBSUwsSUFBSSxDQUFDLEVBQUUs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Ozs7UUFRVCxNQUFLVyxPQUFPLEdBQUcseUJBQTZDN0IsT0FBcEJBLFNBQVNHLE1BQU0sRUFBQyxNQUFvQ3JCLE9BQWhDa0IsU0FBUzhCLFVBQVUsRUFBQyxjQUFnQixPQUFKaEQsS0FBSTtRQUNoR2Msa0JBQWtCaUMsT0FBTyxHQUFHLE1BQUtBLE9BQU87UUFDeEMsTUFBS1osWUFBWSxHQUFHQTtRQUNwQixNQUFLakIsUUFBUSxHQUFHQTtRQUNoQixNQUFLK0IsS0FBSyxHQUFHLHFDQUFvRyxPQUEvRG5DLGtCQUFrQm1DLEtBQUssRUFBQyx5Q0FBa0QsT0FBWCxNQUFLQSxLQUFLOzs7V0FabEhiO21CQUEwQnJDLFFBZ0J0QyIsInNvdXJjZXMiOlsid2VicGFjazovL0BvcGVubXJzL2VzbS1hcHAtc2hlbGwvLi4vLi4vZnJhbWV3b3JrL2VzbS1hcGkvc3JjL29wZW5tcnMtZmV0Y2gudHM/ZGVhMCJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiogQG1vZHVsZSBAY2F0ZWdvcnkgQVBJICovXG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSBcInJ4anNcIjtcbmltcG9ydCBpc1BsYWluT2JqZWN0IGZyb20gXCJsb2Rhc2gtZXMvaXNQbGFpbk9iamVjdFwiO1xuaW1wb3J0IHsgZ2V0Q29uZmlnLCBuYXZpZ2F0ZSB9IGZyb20gXCJAb3Blbm1ycy9lc20tY29uZmlnXCI7XG5pbXBvcnQgeyBGZXRjaFJlc3BvbnNlIH0gZnJvbSBcIi4vdHlwZXNcIjtcblxuZXhwb3J0IGNvbnN0IHJlc3RCYXNlVXJsID0gXCIvd3MvcmVzdC92MS9cIjtcblxuZXhwb3J0IGNvbnN0IGZoaXJCYXNlVXJsID0gXCIvd3MvZmhpcjIvUjRcIjtcblxuZXhwb3J0IGNvbnN0IHNlc3Npb25FbmRwb2ludCA9IGAke3Jlc3RCYXNlVXJsfXNlc3Npb25gO1xuXG4vKipcbiAqIEFwcGVuZCBgcGF0aGAgdG8gdGhlIE9wZW5NUlMgU1BBIGJhc2UuXG4gKlxuICogIyMjIyBFeGFtcGxlXG4gKlxuICogYGBgdHNcbiAqIG1ha2VVcmwoJy9mb28vYmFyJyk7XG4gKiAvLyA9PiAnL29wZW5tcnMvZm9vL2JhcidcbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gbWFrZVVybChwYXRoOiBzdHJpbmcpIHtcbiAgcmV0dXJuIHdpbmRvdy5vcGVubXJzQmFzZSArIHBhdGg7XG59XG5cbi8qKlxuICogVGhlIG9wZW5tcnNGZXRjaCBmdW5jdGlvbiBpcyBhIHdyYXBwZXIgYXJvdW5kIHRoZVxuICogW2Jyb3dzZXIncyBidWlsdC1pbiBmZXRjaCBmdW5jdGlvbl0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL0ZldGNoX0FQSS9Vc2luZ19GZXRjaCksXG4gKiB3aXRoIGV4dHJhIGhhbmRsaW5nIGZvciBPcGVuTVJTLXNwZWNpZmljIEFQSSBiZWhhdmlvcnMsIHN1Y2ggYXNcbiAqIHJlcXVlc3QgaGVhZGVycywgYXV0aGVudGljYXRpb24sIGF1dGhvcml6YXRpb24sIGFuZCB0aGUgQVBJIHVybHMuXG4gKlxuICogQHBhcmFtIHBhdGggQSBzdHJpbmcgdXJsIHRvIG1ha2UgdGhlIHJlcXVlc3QgdG8uIE5vdGUgdGhhdCB0aGVcbiAqICAgb3Blbm1ycyBiYXNlIHVybCAoYnkgZGVmYXVsdCBgL29wZW5tcnNgKSB3aWxsIGJlIGF1dG9tYXRpY2FsbHlcbiAqICAgcHJlcGVuZGVkIHRvIHRoZSBVUkwsIHNvIHRoZXJlIGlzIG5vIG5lZWQgdG8gaW5jbHVkZSBpdC5cbiAqIEBwYXJhbSBmZXRjaEluaXQgQSBbZmV0Y2ggaW5pdCBvYmplY3RdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9XaW5kb3dPcldvcmtlckdsb2JhbFNjb3BlL2ZldGNoI1N5bnRheCkuXG4gKiAgIE5vdGUgdGhhdCB0aGUgYGJvZHlgIHByb3BlcnR5IGRvZXMgbm90IG5lZWQgdG8gYmUgYEpTT04uc3RyaW5naWZ5KClgZWRcbiAqICAgYmVjYXVzZSBvcGVubXJzRmV0Y2ggd2lsbCBkbyB0aGF0IGZvciB5b3UuXG4gKiBAcmV0dXJucyBBIFtQcm9taXNlXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9KYXZhU2NyaXB0L1JlZmVyZW5jZS9HbG9iYWxfT2JqZWN0cy9Qcm9taXNlKVxuICogICB0aGF0IHJlc29sdmVzIHdpdGggYSBbUmVzcG9uc2Ugb2JqZWN0XShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvUmVzcG9uc2UpLlxuICogICBOb3RlIHRoYXQgdGhlIG9wZW5tcnMgdmVyc2lvbiBvZiB0aGUgUmVzcG9uc2Ugb2JqZWN0IGhhcyBhbHJlYWR5XG4gKiAgIGRvd25sb2FkZWQgdGhlIEhUVFAgcmVzcG9uc2UgYm9keSBhcyBqc29uLCBhbmQgaGFzIGFuIGFkZGl0aW9uYWxcbiAqICAgYGRhdGFgIHByb3BlcnR5IHdpdGggdGhlIEhUVFAgcmVzcG9uc2UganNvbiBhcyBhIGphdmFzY3JpcHQgb2JqZWN0LlxuICpcbiAqICMjIyMgRXhhbXBsZVxuICogYGBganNcbiAqIGltcG9ydCB7IG9wZW5tcnNGZXRjaCB9IGZyb20gJ0BvcGVubXJzL2VzbS1hcGknXG4gKiBjb25zdCBhYm9ydENvbnRyb2xsZXIgPSBuZXcgQWJvcnRDb250cm9sbGVyKCk7XG4gKiBvcGVubXJzRmV0Y2goJy93cy9yZXN0L3YxL3Nlc3Npb24nLCB7c2lnbmFsOiBhYm9ydENvbnRyb2xsZXIuc2lnbmFsfSlcbiAqICAgLnRoZW4ocmVzcG9uc2UgPT4ge1xuICogICAgIGNvbnNvbGUubG9nKHJlc3BvbnNlLmRhdGEuYXV0aGVudGljYXRlZClcbiAqICAgfSlcbiAqICAgLmNhdGNoKGVyciA9PiB7XG4gKiAgICAgY29uc29sZS5lcnJvcihlcnIuc3RhdHVzKTtcbiAqICAgfSlcbiAqIGFib3J0Q29udHJvbGxlci5hYm9ydCgpO1xuICogb3Blbm1yc0ZldGNoKCcvd3MvcmVzdC92MS9zZXNzaW9uJywge1xuICogICBtZXRob2Q6ICdQT1NUJyxcbiAqICAgYm9keToge1xuICogICAgIHVzZXJuYW1lOiAnaGknLFxuICogICAgIHBhc3N3b3JkOiAndGhlcmUnLFxuICogICB9XG4gKiB9KVxuICogYGBgXG4gKlxuICogIyMjIyBDYW5jZWxsYXRpb25cbiAqXG4gKiBUbyBjYW5jZWwgYSBuZXR3b3JrIHJlcXVlc3QsIHVzZSBhblxuICogW0Fib3J0Q29udHJvbGxlcl0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL0Fib3J0Q29udHJvbGxlci9hYm9ydCkuXG4gKiBJdCBpcyBiZXN0IHByYWN0aWNlIHRvIGNhbmNlbCB5b3VyIG5ldHdvcmsgcmVxdWVzdHMgd2hlbiB0aGUgdXNlclxuICogbmF2aWdhdGVzIGF3YXkgZnJvbSBhIHBhZ2Ugd2hpbGUgdGhlIHJlcXVlc3QgaXMgcGVuZGluZyByZXF1ZXN0LCB0b1xuICogZnJlZSB1cCBtZW1vcnkgYW5kIG5ldHdvcmsgcmVzb3VyY2VzIGFuZCB0byBwcmV2ZW50IHJhY2UgY29uZGl0aW9ucy5cbiAqXG4gKiBAY2F0ZWdvcnkgQVBJXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBvcGVubXJzRmV0Y2g8VCA9IGFueT4oXG4gIHBhdGg6IHN0cmluZyxcbiAgZmV0Y2hJbml0OiBGZXRjaENvbmZpZyA9IHt9XG4pOiBQcm9taXNlPEZldGNoUmVzcG9uc2U8VD4+IHtcbiAgaWYgKHR5cGVvZiBwYXRoICE9PSBcInN0cmluZ1wiKSB7XG4gICAgdGhyb3cgRXJyb3IoXG4gICAgICBcIlRoZSBmaXJzdCBhcmd1bWVudCB0byBAb3Blbm1ycy9hcGkncyBvcGVubXJzRmV0Y2ggZnVuY3Rpb24gbXVzdCBiZSBhIHVybCBzdHJpbmdcIlxuICAgICk7XG4gIH1cblxuICBpZiAodHlwZW9mIGZldGNoSW5pdCAhPT0gXCJvYmplY3RcIikge1xuICAgIHRocm93IEVycm9yKFxuICAgICAgXCJUaGUgc2Vjb25kIGFyZ3VtZW50IHRvIEBvcGVubXJzL2FwaSdzIG9wZW5tcnNGZXRjaCBmdW5jdGlvbiBtdXN0IGJlIGEgcGxhaW4gb2JqZWN0LlwiXG4gICAgKTtcbiAgfVxuXG4gIC8vIEB0cy1pZ25vcmVcbiAgaWYgKCF3aW5kb3cub3Blbm1yc0Jhc2UpIHtcbiAgICB0aHJvdyBFcnJvcihcbiAgICAgIFwiQG9wZW5tcnMvYXBpIGlzIHJ1bm5pbmcgaW4gYSBicm93c2VyIHRoYXQgZG9lc24ndCBoYXZlIHdpbmRvdy5vcGVubXJzQmFzZSwgd2hpY2ggaXMgcHJvdmlkZWQgYnkgb3Blbm1ycy1tb2R1bGUtc3BhJ3MgSFRNTCBmaWxlLlwiXG4gICAgKTtcbiAgfVxuXG4gIC8vIGVuc3VyZSBwYXRoIHN0YXJ0cyB3aXRoIC9cbiAgaWYgKHBhdGhbMF0gIT09IFwiL1wiKSB7XG4gICAgcGF0aCA9IFwiL1wiICsgcGF0aDtcbiAgfVxuXG4gIC8vIFByZWZpeCB0aGUgdXJsIHdpdGggdGhlIG9wZW5tcnMgc3BhIGJhc2VcbiAgbGV0IHVybDogc3RyaW5nID0gbWFrZVVybChwYXRoKTtcblxuICAvLyBXZSdyZSBnb2luZyB0byBuZWVkIHNvbWUgaGVhZGVyc1xuICBpZiAoIWZldGNoSW5pdC5oZWFkZXJzKSB7XG4gICAgZmV0Y2hJbml0LmhlYWRlcnMgPSB7fTtcbiAgfVxuXG4gIC8qIEF1dG9tYXRpY2FsbHkgc3RyaW5naWZ5IGphdmFzY3JpcHQgb2JqZWN0cyBiZWluZyBzZW50IGluIHRoZVxuICAgKiByZXF1ZXN0IGJvZHkuXG4gICAqL1xuICBpZiAoaXNQbGFpbk9iamVjdChmZXRjaEluaXQuYm9keSkpIHtcbiAgICBmZXRjaEluaXQuYm9keSA9IEpTT04uc3RyaW5naWZ5KGZldGNoSW5pdC5ib2R5KTtcbiAgfVxuXG4gIC8qIEFkZCBhIHJlcXVlc3QgaGVhZGVyIHRvIHRlbGwgdGhlIHNlcnZlciB0byByZXNwb25kIHdpdGgganNvbixcbiAgICogc2luY2UgZnJvbnRlbmQgY29kZSBhbG1vc3QgYWx3YXlzIHdhbnRzIGpzb24gYW5kIHRoZSBPcGVuTVJTXG4gICAqIHNlcnZlciB3b24ndCBnaXZlIHlvdSBqc29uIHVubGVzcyB5b3UgZXhwbGljaXRseSBhc2sgZm9yIGl0LlxuICAgKiBJZiBhIGRpZmZlcmVudCBBY2NlcHQgaGVhZGVyIGlzIHByZWZlcnJlZCwgcGFzcyBpdCBpbnRvIHRoZSBmZXRjaEluaXQuXG4gICAqIElmIG5vIEFjY2VwdCBoZWFkZXIgaXMgZGVzaXJlZCwgcGFzcyBpdCBpbiBleHBsaWNpdGx5IGFzIG51bGwuXG4gICAqL1xuICBpZiAodHlwZW9mIGZldGNoSW5pdC5oZWFkZXJzLkFjY2VwdCA9PT0gXCJ1bmRlZmluZWRcIikge1xuICAgIGZldGNoSW5pdC5oZWFkZXJzLkFjY2VwdCA9IFwiYXBwbGljYXRpb24vanNvblwiO1xuICB9XG5cbiAgaWYgKGZldGNoSW5pdC5oZWFkZXJzLkFjY2VwdCA9PT0gbnVsbCkge1xuICAgIGRlbGV0ZSBmZXRjaEluaXQuaGVhZGVycy5BY2NlcHQ7XG4gIH1cblxuICAvKiBUaGlzIHRlbGxzIHRoZSBPcGVuTVJTIFJFU1QgQVBJIG5vdCB0byByZXR1cm4gYSBXV1ctQXV0aGVudGljYXRlXG4gICAqIGhlYWRlci4gUmV0dXJuaW5nIHRoYXQgaGVhZGVyIGlzIHVzZWZ1bCB3aGVuIHVzaW5nIHRoZSBBUEksIGJ1dFxuICAgKiBub3QgZnJvbSBhIFVJLlxuICAgKi9cbiAgaWYgKFxuICAgIHBhdGguc3RhcnRzV2l0aChyZXN0QmFzZVVybCkgJiZcbiAgICB0eXBlb2YgZmV0Y2hJbml0LmhlYWRlcnNbXCJEaXNhYmxlLVdXVy1BdXRoZW50aWNhdGVcIl0gPT09IFwidW5kZWZpbmVkXCJcbiAgKSB7XG4gICAgZmV0Y2hJbml0LmhlYWRlcnNbXCJEaXNhYmxlLVdXVy1BdXRoZW50aWNhdGVcIl0gPSBcInRydWVcIjtcbiAgfVxuXG4gIGlmIChwYXRoLnN0YXJ0c1dpdGgoZmhpckJhc2VVcmwpKSB7XG4gICAgY29uc3QgdXJsVXJsID0gbmV3IFVSTCh1cmwsIHdpbmRvdy5sb2NhdGlvbi50b1N0cmluZygpKTtcbiAgICBpZiAoIXVybFVybC5zZWFyY2hQYXJhbXMuaGFzKFwiX3N1bW1hcnlcIikpIHtcbiAgICAgIHVybFVybC5zZWFyY2hQYXJhbXMuc2V0KFwiX3N1bW1hcnlcIiwgXCJkYXRhXCIpO1xuICAgICAgdXJsID0gdXJsVXJsLnRvU3RyaW5nKCk7XG4gICAgfVxuICB9XG5cbiAgLyogV2UgY2FwdHVyZSB0aGUgc3RhY2t0cmFjZSBiZWZvcmUgbWFraW5nIHRoZSByZXF1ZXN0LCBzbyB0aGF0IGlmIGFuIGVycm9yIG9jY3VycyB3ZSBjYW5cbiAgICogbG9nIGEgZnVsbCBzdGFja3RyYWNlIHRoYXQgaW5jbHVkZXMgdGhlIGNvZGUgdGhhdCBtYWRlIHRoZSByZXF1ZXN0IGFuZCBoYW5kbGVkIHRoZSByZXNwb25zZVxuICAgKiBPdGhlcndpc2UsIHdlIGNvdWxkIHJ1biBpbnRvIHNpdHVhdGlvbnMgd2hlcmUgdGhlIHN0YWNrdHJhY2UgZG9lc24ndCBldmVuIHNob3cgd2hpY2ggY29kZVxuICAgKiBjYWxsZWQgQG9wZW5tcnMvYXBpLlxuICAgKi9cbiAgY29uc3QgcmVxdWVzdFN0YWNrdHJhY2UgPSBFcnJvcigpO1xuXG4gIHJldHVybiB3aW5kb3cuZmV0Y2godXJsLCBmZXRjaEluaXQgYXMgUmVxdWVzdEluaXQpLnRoZW4oYXN5bmMgKHIpID0+IHtcbiAgICBjb25zdCByZXNwb25zZSA9IHIgYXMgRmV0Y2hSZXNwb25zZTxUPjtcbiAgICBpZiAocmVzcG9uc2Uub2spIHtcbiAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT09IDIwNCkge1xuICAgICAgICAvKiBIVFRQIDIwNCAtIE5vIENvbnRlbnRcbiAgICAgICAgICogV2Ugc2hvdWxkIG5vdCB0cnkgdG8gZG93bmxvYWQgdGhlIGVtcHR5IHJlc3BvbnNlIGFzIGpzb24uIEluc3RlYWQsXG4gICAgICAgICAqIHdlIHJldHVybiBudWxsIHNpbmNlIHRoZXJlIGlzIG5vIHJlc3BvbnNlIGJvZHkuXG4gICAgICAgICAqL1xuICAgICAgICByZXNwb25zZS5kYXRhID0gbnVsbCBhcyB1bmtub3duIGFzIFQ7XG4gICAgICAgIHJldHVybiByZXNwb25zZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIEhUVFAgMjAwcyAtIFRoZSByZXF1ZXN0IHN1Y2NlZWRlZFxuICAgICAgICByZXR1cm4gcmVzcG9uc2VcbiAgICAgICAgICAuY2xvbmUoKVxuICAgICAgICAgIC50ZXh0KClcbiAgICAgICAgICAudGhlbigocmVzcG9uc2VUZXh0KSA9PiB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICBpZiAocmVzcG9uc2VUZXh0KSB7XG4gICAgICAgICAgICAgICAgcmVzcG9uc2UuZGF0YSA9IEpTT04ucGFyc2UocmVzcG9uc2VUZXh0KTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICAgIC8vIFNlcnZlciBkaWRuJ3QgcmVzcG9uZCB3aXRoIGpzb25cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiByZXNwb25zZTtcbiAgICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgLyogSFRUUCByZXNwb25zZSBzdGF0dXMgaXMgbm90IGluIDIwMHMuIFVzdWFsbHkgdGhpcyB3aWxsIG1lYW5cbiAgICAgICAqIGVpdGhlciBIVFRQIDQwMHMgKGJhZCByZXF1ZXN0IGZyb20gYnJvd3Nlcikgb3IgSFRUUCA1MDBzIChzZXJ2ZXIgZXJyb3IpXG4gICAgICAgKiBPdXIgZ29hbCBpcyB0byBjb21lIHVwIHdpdGggYmVzdCBwb3NzaWJsZSBzdGFja3RyYWNlIGFuZCBlcnJvciBtZXNzYWdlXG4gICAgICAgKiB0byBoZWxwIGRldmVsb3BlcnMgdW5kZXJzdGFuZCB0aGUgcHJvYmxlbSBhbmQgZGVidWdcbiAgICAgICAqL1xuXG4gICAgICAvKlxuICAgICAgICpSZWRpcmVjdCB0byBnaXZlbiB1cmwgd2hlbiByZWRpcmVjdCBvbiBhdXRoIGZhaWx1cmUgaXMgZW5hYmxlZFxuICAgICAgICovXG4gICAgICBjb25zdCB7IHJlZGlyZWN0QXV0aEZhaWx1cmUgfSA9IGF3YWl0IGdldENvbmZpZyhcIkBvcGVubXJzL2VzbS1hcGlcIik7XG5cbiAgICAgIGlmIChcbiAgICAgICAgKHVybCA9PT0gbWFrZVVybChzZXNzaW9uRW5kcG9pbnQpICYmIHJlc3BvbnNlLnN0YXR1cyA9PT0gNDAzKSB8fFxuICAgICAgICAocmVkaXJlY3RBdXRoRmFpbHVyZS5lbmFibGVkICYmXG4gICAgICAgICAgcmVkaXJlY3RBdXRoRmFpbHVyZS5lcnJvcnMuaW5jbHVkZXMocmVzcG9uc2Uuc3RhdHVzKSlcbiAgICAgICkge1xuICAgICAgICBuYXZpZ2F0ZSh7IHRvOiByZWRpcmVjdEF1dGhGYWlsdXJlLnVybCB9KTtcblxuICAgICAgICAvKiBXZSBzb21ldGltZXMgZG9uJ3QgcmVhbGx5IHdhbnQgdGhpcyBwcm9taXNlIHRvIHJlc29sdmUgc2luY2UgdGhlcmUncyBubyByZXNwb25zZSBkYXRhLFxuICAgICAgICAgKiBub3IgZG8gd2Ugd2FudCBpdCB0byByZWplY3QgYmVjYXVzZSB0aGF0IHdvdWxkIHRyaWdnZXIgZXJyb3IgaGFuZGxpbmcuIFdlIGluc3RlYWRcbiAgICAgICAgICogd2FudCBpdCB0byByZW1haW4gaW4gcGVuZGluZyBzdGF0dXMgd2hpbGUgdGhlIG5hdmlnYXRpb24gb2NjdXJzLlxuICAgICAgICAgKi9cbiAgICAgICAgcmV0dXJuIHJlZGlyZWN0QXV0aEZhaWx1cmUucmVzb2x2ZVByb21pc2VcbiAgICAgICAgICA/IChQcm9taXNlLnJlc29sdmUoKSBhcyB1bmtub3duIGFzIFByb21pc2U8RmV0Y2hSZXNwb25zZT4pXG4gICAgICAgICAgOiBuZXcgUHJvbWlzZTxGZXRjaFJlc3BvbnNlPigoKSA9PiB7fSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBBdHRlbXB0IHRvIGRvd25sb2FkIGEgcmVzcG9uc2UgYm9keSwgaWYgaXQgaGFzIG9uZVxuICAgICAgICByZXR1cm4gcmVzcG9uc2VcbiAgICAgICAgICAuY2xvbmUoKVxuICAgICAgICAgIC50ZXh0KClcbiAgICAgICAgICAudGhlbihcbiAgICAgICAgICAgIChyZXNwb25zZVRleHQpID0+IHtcbiAgICAgICAgICAgICAgbGV0IHJlc3BvbnNlQm9keSA9IHJlc3BvbnNlVGV4dDtcbiAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICByZXNwb25zZUJvZHkgPSBKU09OLnBhcnNlKHJlc3BvbnNlVGV4dCk7XG4gICAgICAgICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgICAgIC8vIFNlcnZlciBkaWRuJ3QgcmVzcG9uZCB3aXRoIGpzb24sIHNvIGp1c3QgZ28gd2l0aCB0aGUgcmVzcG9uc2UgdGV4dCBzdHJpbmdcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIC8qIE1ha2UgdGhlIGZldGNoIHByb21pc2UgZ28gaW50byBcInJlamVjdGVkXCIgc3RhdHVzLCB3aXRoIHRoZSBiZXN0XG4gICAgICAgICAgICAgICAqIHBvc3NpYmxlIHN0YWNrdHJhY2UgYW5kIGVycm9yIG1lc3NhZ2UuXG4gICAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgICB0aHJvdyBuZXcgT3Blbm1yc0ZldGNoRXJyb3IoXG4gICAgICAgICAgICAgICAgdXJsLFxuICAgICAgICAgICAgICAgIHJlc3BvbnNlLFxuICAgICAgICAgICAgICAgIHJlc3BvbnNlQm9keSxcbiAgICAgICAgICAgICAgICByZXF1ZXN0U3RhY2t0cmFjZVxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIChlcnIpID0+IHtcbiAgICAgICAgICAgICAgLyogV2Ugd2VyZW4ndCBhYmxlIHRvIGRvd25sb2FkIGEgcmVzcG9uc2UgYm9keSBmb3IgdGhpcyBlcnJvci5cbiAgICAgICAgICAgICAgICogVGltZSB0byBqdXN0IGdpdmUgdGhlIGJlc3QgcG9zc2libGUgc3RhY2t0cmFjZSBhbmQgZXJyb3IgbWVzc2FnZS5cbiAgICAgICAgICAgICAgICovXG4gICAgICAgICAgICAgIHRocm93IG5ldyBPcGVubXJzRmV0Y2hFcnJvcihcbiAgICAgICAgICAgICAgICB1cmwsXG4gICAgICAgICAgICAgICAgcmVzcG9uc2UsXG4gICAgICAgICAgICAgICAgbnVsbCxcbiAgICAgICAgICAgICAgICByZXF1ZXN0U3RhY2t0cmFjZVxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuICB9KTtcbn1cblxuLyoqXG4gKiBUaGUgb3Blbm1yc09ic2VydmFibGVGZXRjaCBmdW5jdGlvbiBpcyBhIHdyYXBwZXIgYXJvdW5kIG9wZW5tcnNGZXRjaFxuICogdGhhdCByZXR1cm5zIGFuIFtPYnNlcnZhYmxlXShodHRwczovL3J4anMtZGV2LmZpcmViYXNlYXBwLmNvbS9ndWlkZS9vYnNlcnZhYmxlKVxuICogaW5zdGVhZCBvZiBhIHByb21pc2UuIEl0IGV4aXN0cyBpbiBjYXNlIHVzaW5nIGFuIE9ic2VydmFibGUgaXNcbiAqIHByZWZlcnJlZCBvciBtb3JlIGNvbnZlbmllbnQgdGhhbiBhIHByb21pc2UuXG4gKlxuICogQHBhcmFtIHVybCBTZWUgW1tvcGVubXJzRmV0Y2hdXVxuICogQHBhcmFtIGZldGNoSW5pdCBTZWUgW1tvcGVubXJzRmV0Y2hdXVxuICogQHJldHVybnMgQW4gT2JzZXJ2YWJsZSB0aGF0IHByb2R1Y2VzIGV4YWN0bHkgb25lIFJlc3BvbnNlIG9iamVjdC5cbiAqIFRoZSByZXNwb25zZSBvYmplY3QgaXMgZXhhY3RseSB0aGUgc2FtZSBhcyBmb3IgW1tvcGVubXJzRmV0Y2hdXS5cbiAqXG4gKiAjIyMjIEV4YW1wbGVcbiAqXG4gKiBgYGBqc1xuICogaW1wb3J0IHsgb3Blbm1yc09ic2VydmFibGVGZXRjaCB9IGZyb20gJ0BvcGVubXJzL2VzbS1hcGknXG4gKiBjb25zdCBzdWJzY3JpcHRpb24gPSBvcGVubXJzT2JzZXJ2YWJsZUZldGNoKCcvd3MvcmVzdC92MS9zZXNzaW9uJykuc3Vic2NyaWJlKFxuICogICByZXNwb25zZSA9PiBjb25zb2xlLmxvZyhyZXNwb25zZS5kYXRhKSxcbiAqICAgZXJyID0+IHt0aHJvdyBlcnJ9LFxuICogICAoKSA9PiBjb25zb2xlLmxvZygnZmluaXNoZWQnKVxuICogKVxuICogc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKClcbiAqIGBgYFxuICpcbiAqICMjIyMgQ2FuY2VsbGF0aW9uXG4gKlxuICogVG8gY2FuY2VsIHRoZSBuZXR3b3JrIHJlcXVlc3QsIHNpbXBseSBjYWxsIGBzdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtgXG4gKlxuICogQGNhdGVnb3J5IEFQSVxuICovXG5leHBvcnQgZnVuY3Rpb24gb3Blbm1yc09ic2VydmFibGVGZXRjaDxUPihcbiAgdXJsOiBzdHJpbmcsXG4gIGZldGNoSW5pdDogRmV0Y2hDb25maWcgPSB7fVxuKSB7XG4gIGlmICh0eXBlb2YgZmV0Y2hJbml0ICE9PSBcIm9iamVjdFwiKSB7XG4gICAgdGhyb3cgRXJyb3IoXG4gICAgICBcIlRoZSBzZWNvbmQgYXJndW1lbnQgdG8gb3Blbm1yc09ic2VydmFibGVGZXRjaCBtdXN0IGJlIGVpdGhlciBvbWl0dGVkIG9yIGFuIG9iamVjdFwiXG4gICAgKTtcbiAgfVxuXG4gIGNvbnN0IGFib3J0Q29udHJvbGxlciA9IG5ldyBBYm9ydENvbnRyb2xsZXIoKTtcblxuICBmZXRjaEluaXQuc2lnbmFsID0gYWJvcnRDb250cm9sbGVyLnNpZ25hbDtcblxuICByZXR1cm4gbmV3IE9ic2VydmFibGU8RmV0Y2hSZXNwb25zZTxUPj4oKG9ic2VydmVyKSA9PiB7XG4gICAgbGV0IGhhc1Jlc3BvbnNlID0gZmFsc2U7XG5cbiAgICBvcGVubXJzRmV0Y2godXJsLCBmZXRjaEluaXQpLnRoZW4oXG4gICAgICAocmVzcG9uc2UpID0+IHtcbiAgICAgICAgaGFzUmVzcG9uc2UgPSB0cnVlO1xuICAgICAgICBvYnNlcnZlci5uZXh0KHJlc3BvbnNlKTtcbiAgICAgICAgb2JzZXJ2ZXIuY29tcGxldGUoKTtcbiAgICAgIH0sXG4gICAgICAoZXJyKSA9PiB7XG4gICAgICAgIGhhc1Jlc3BvbnNlID0gdHJ1ZTtcbiAgICAgICAgb2JzZXJ2ZXIuZXJyb3IoZXJyKTtcbiAgICAgIH1cbiAgICApO1xuXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGlmICghaGFzUmVzcG9uc2UpIHtcbiAgICAgICAgYWJvcnRDb250cm9sbGVyLmFib3J0KCk7XG4gICAgICB9XG4gICAgfTtcbiAgfSk7XG59XG5cbmV4cG9ydCBjbGFzcyBPcGVubXJzRmV0Y2hFcnJvciBleHRlbmRzIEVycm9yIHtcbiAgY29uc3RydWN0b3IoXG4gICAgdXJsOiBzdHJpbmcsXG4gICAgcmVzcG9uc2U6IFJlc3BvbnNlLFxuICAgIHJlc3BvbnNlQm9keTogUmVzcG9uc2VCb2R5IHwgbnVsbCxcbiAgICByZXF1ZXN0U3RhY2t0cmFjZTogRXJyb3JcbiAgKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLm1lc3NhZ2UgPSBgU2VydmVyIHJlc3BvbmRlZCB3aXRoICR7cmVzcG9uc2Uuc3RhdHVzfSAoJHtyZXNwb25zZS5zdGF0dXNUZXh0fSkgZm9yIHVybCAke3VybH0uIENoZWNrIGVyci5yZXNwb25zZUJvZHkgb3IgbmV0d29yayB0YWIgaW4gZGV2IHRvb2xzIGZvciBtb3JlIGluZm9gO1xuICAgIHJlcXVlc3RTdGFja3RyYWNlLm1lc3NhZ2UgPSB0aGlzLm1lc3NhZ2U7XG4gICAgdGhpcy5yZXNwb25zZUJvZHkgPSByZXNwb25zZUJvZHk7XG4gICAgdGhpcy5yZXNwb25zZSA9IHJlc3BvbnNlO1xuICAgIHRoaXMuc3RhY2sgPSBgU3RhY2t0cmFjZSBmb3Igb3V0Z29pbmcgcmVxdWVzdDpcXG4ke3JlcXVlc3RTdGFja3RyYWNlLnN0YWNrfVxcblN0YWNrdHJhY2UgZm9yIGluY29taW5nIHJlc3BvbnNlOlxcbiR7dGhpcy5zdGFja31gO1xuICB9XG4gIHJlc3BvbnNlOiBSZXNwb25zZTtcbiAgcmVzcG9uc2VCb2R5OiBzdHJpbmcgfCBGZXRjaFJlc3BvbnNlSnNvbiB8IG51bGw7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRmV0Y2hDb25maWcgZXh0ZW5kcyBPbWl0PFJlcXVlc3RJbml0LCBcImJvZHlcIiB8IFwiaGVhZGVyc1wiPiB7XG4gIGhlYWRlcnM/OiBGZXRjaEhlYWRlcnM7XG4gIGJvZHk/OiBGZXRjaEJvZHkgfCBzdHJpbmc7XG59XG5cbnR5cGUgUmVzcG9uc2VCb2R5ID0gc3RyaW5nIHwgRmV0Y2hSZXNwb25zZUpzb247XG5cbmV4cG9ydCBpbnRlcmZhY2UgRmV0Y2hIZWFkZXJzIHtcbiAgW2tleTogc3RyaW5nXTogc3RyaW5nIHwgbnVsbDtcbn1cblxuaW50ZXJmYWNlIEZldGNoQm9keSB7XG4gIFtrZXk6IHN0cmluZ106IGFueTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBGZXRjaFJlc3BvbnNlSnNvbiB7XG4gIFtrZXk6IHN0cmluZ106IGFueTtcbn1cbiJdLCJuYW1lcyI6WyJPYnNlcnZhYmxlIiwiaXNQbGFpbk9iamVjdCIsImdldENvbmZpZyIsIm5hdmlnYXRlIiwicmVzdEJhc2VVcmwiLCJmaGlyQmFzZVVybCIsInNlc3Npb25FbmRwb2ludCIsIm1ha2VVcmwiLCJwYXRoIiwid2luZG93Iiwib3Blbm1yc0Jhc2UiLCJvcGVubXJzRmV0Y2giLCJmZXRjaEluaXQiLCJFcnJvciIsInVybCIsImhlYWRlcnMiLCJib2R5IiwiSlNPTiIsInN0cmluZ2lmeSIsIkFjY2VwdCIsInN0YXJ0c1dpdGgiLCJ1cmxVcmwiLCJVUkwiLCJsb2NhdGlvbiIsInRvU3RyaW5nIiwic2VhcmNoUGFyYW1zIiwiaGFzIiwic2V0IiwicmVxdWVzdFN0YWNrdHJhY2UiLCJmZXRjaCIsInRoZW4iLCJyIiwicmVzcG9uc2UiLCJyZWRpcmVjdEF1dGhGYWlsdXJlIiwib2siLCJzdGF0dXMiLCJkYXRhIiwiY2xvbmUiLCJ0ZXh0IiwicmVzcG9uc2VUZXh0IiwicGFyc2UiLCJlcnIiLCJlbmFibGVkIiwiZXJyb3JzIiwiaW5jbHVkZXMiLCJ0byIsInJlc29sdmVQcm9taXNlIiwiUHJvbWlzZSIsInJlc29sdmUiLCJyZXNwb25zZUJvZHkiLCJPcGVubXJzRmV0Y2hFcnJvciIsIm9wZW5tcnNPYnNlcnZhYmxlRmV0Y2giLCJhYm9ydENvbnRyb2xsZXIiLCJBYm9ydENvbnRyb2xsZXIiLCJzaWduYWwiLCJvYnNlcnZlciIsImhhc1Jlc3BvbnNlIiwibmV4dCIsImNvbXBsZXRlIiwiZXJyb3IiLCJhYm9ydCIsIm1lc3NhZ2UiLCJzdGF0dXNUZXh0Iiwic3RhY2siXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../framework/esm-api/src/openmrs-fetch.ts\n");
6459
6448
 
6460
6449
  /***/ }),
6461
6450
 
@@ -6499,7 +6488,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
6499
6488
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
6500
6489
 
6501
6490
  "use strict";
6502
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"clearCurrentUser\": () => (/* binding */ clearCurrentUser),\n/* harmony export */ \"getCurrentUser\": () => (/* binding */ getCurrentUser),\n/* harmony export */ \"getLoggedInUser\": () => (/* binding */ getLoggedInUser),\n/* harmony export */ \"getSessionLocation\": () => (/* binding */ getSessionLocation),\n/* harmony export */ \"getSessionStore\": () => (/* binding */ getSessionStore),\n/* harmony export */ \"refetchCurrentUser\": () => (/* binding */ refetchCurrentUser),\n/* harmony export */ \"setSessionLocation\": () => (/* binding */ setSessionLocation),\n/* harmony export */ \"userHasAccess\": () => (/* binding */ userHasAccess)\n/* harmony export */ });\n/* harmony import */ var _openmrs_esm_error_handling__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @openmrs/esm-error-handling */ \"../../framework/esm-error-handling/src/index.ts\");\n/* harmony import */ var _openmrs_esm_state__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @openmrs/esm-state */ \"../../framework/esm-state/src/index.ts\");\n/* harmony import */ var lodash_es_isUndefined__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! lodash-es/isUndefined */ \"../../../node_modules/lodash-es/isUndefined.js\");\n/* harmony import */ var rxjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! rxjs */ \"webpack/sharing/consume/default/rxjs/rxjs\");\n/* harmony import */ var rxjs__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(rxjs__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _openmrs_fetch__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../openmrs-fetch */ \"../../framework/esm-api/src/openmrs-fetch.ts\");\n/** @module @category API */ function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\nfunction _asyncToGenerator(fn) {\n return function() {\n var self = this, args = arguments;\n return new Promise(function(resolve, reject) {\n var gen = fn.apply(self, args);\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n _next(undefined);\n });\n };\n}\nvar __generator = undefined && undefined.__generator || function(thisArg, body) {\n var f, y, t, g, _ = {\n label: 0,\n sent: function() {\n if (t[0] & 1) throw t[1];\n return t[1];\n },\n trys: [],\n ops: []\n };\n return g = {\n next: verb(0),\n \"throw\": verb(1),\n \"return\": verb(2)\n }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() {\n return this;\n }), g;\n function verb(n) {\n return function(v) {\n return step([\n n,\n v\n ]);\n };\n }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while(_)try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [\n op[0] & 2,\n t.value\n ];\n switch(op[0]){\n case 0:\n case 1:\n t = op;\n break;\n case 4:\n _.label++;\n return {\n value: op[1],\n done: false\n };\n case 5:\n _.label++;\n y = op[1];\n op = [\n 0\n ];\n continue;\n case 7:\n op = _.ops.pop();\n _.trys.pop();\n continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {\n _ = 0;\n continue;\n }\n if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {\n _.label = op[1];\n break;\n }\n if (op[0] === 6 && _.label < t[1]) {\n _.label = t[1];\n t = op;\n break;\n }\n if (t && _.label < t[2]) {\n _.label = t[2];\n _.ops.push(op);\n break;\n }\n if (t[2]) _.ops.pop();\n _.trys.pop();\n continue;\n }\n op = body.call(thisArg, _);\n } catch (e) {\n op = [\n 6,\n e\n ];\n y = 0;\n } finally{\n f = t = 0;\n }\n if (op[0] & 5) throw op[1];\n return {\n value: op[0] ? op[1] : void 0,\n done: true\n };\n }\n};\n\n\n\n\n\nvar sessionStore = (0,_openmrs_esm_state__WEBPACK_IMPORTED_MODULE_1__.createGlobalStore)(\"session\", {\n loaded: false,\n session: null\n});\nvar lastFetchTimeMillis = 0;\nfunction getCurrentUser() {\n var opts = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {\n includeAuthStatus: true\n };\n if (lastFetchTimeMillis < Date.now() - 1000 * 60 || !sessionStore.getState().loaded) {\n refetchCurrentUser();\n }\n return new rxjs__WEBPACK_IMPORTED_MODULE_2__.Observable(function(subscriber) {\n var handler = function(state) {\n if (state.loaded) {\n if (opts.includeAuthStatus) {\n subscriber.next(state.session);\n } else {\n var ref;\n subscriber.next((ref = state.session) === null || ref === void 0 ? void 0 : ref.user);\n }\n }\n };\n handler(sessionStore.getState());\n // The observable subscribe function should return an unsubscribe function,\n // which happens to be exactly what Unistore `subscribe` returns.\n return sessionStore.subscribe(handler);\n });\n}\n\nfunction getSessionStore() {\n if (lastFetchTimeMillis < Date.now() - 1000 * 60 || !sessionStore.getState().loaded) {\n refetchCurrentUser();\n }\n return sessionStore;\n}\nfunction setUserLanguage(data) {\n var ref, ref1;\n var ref2;\n var locale = (ref2 = data === null || data === void 0 ? void 0 : (ref = data.user) === null || ref === void 0 ? void 0 : (ref1 = ref.userProperties) === null || ref1 === void 0 ? void 0 : ref1.defaultLocale) !== null && ref2 !== void 0 ? ref2 : data.locale;\n var htmlLang = document.documentElement.getAttribute(\"lang\");\n if (locale !== htmlLang) {\n document.documentElement.setAttribute(\"lang\", locale);\n }\n}\nfunction userHasPrivilege(requiredPrivilege, user) {\n if (typeof requiredPrivilege === \"string\") {\n return !(0,lodash_es_isUndefined__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(user.privileges.find(function(p) {\n return requiredPrivilege === p.display;\n }));\n } else if (Array.isArray(requiredPrivilege)) {\n return requiredPrivilege.every(function(rp) {\n return !(0,lodash_es_isUndefined__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(user.privileges.find(function(p) {\n return rp === p.display;\n }));\n });\n } else if (!(0,lodash_es_isUndefined__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(requiredPrivilege)) {\n console.error('Could not understand privileges \"'.concat(requiredPrivilege, '\"'));\n }\n return true;\n}\nfunction isSuperUser(user) {\n return !(0,lodash_es_isUndefined__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(user.roles.find(function(role) {\n return role.display === \"System Developer\";\n }));\n}\n/**\n * The `refetchCurrentUser` function causes a network request to redownload\n * the user. All subscribers to the current user will be notified of the\n * new users once the new version of the user object is downloaded.\n *\n * @returns The same observable as returned by [[getCurrentUser]].\n *\n * #### Example\n * ```js\n * import { refetchCurrentUser } from '@openmrs/esm-api'\n * refetchCurrentUser()\n * ```\n */ function refetchCurrentUser() {\n return new Promise(function(resolve, reject) {\n lastFetchTimeMillis = Date.now();\n (0,_openmrs_fetch__WEBPACK_IMPORTED_MODULE_3__.openmrsFetch)(_openmrs_fetch__WEBPACK_IMPORTED_MODULE_3__.sessionEndpoint).then(function(res) {\n if (typeof (res === null || res === void 0 ? void 0 : res.data) === \"object\") {\n setUserLanguage(res.data);\n resolve(res.data);\n sessionStore.setState({\n loaded: true,\n session: res.data\n });\n } else {\n reject();\n return Promise.reject();\n }\n }).catch(function(err) {\n (0,_openmrs_esm_error_handling__WEBPACK_IMPORTED_MODULE_0__.reportError)(\"Failed to fetch new session information: \".concat(err));\n reject(err);\n return {\n sessionId: \"\",\n authenticated: false\n };\n });\n });\n}\nfunction clearCurrentUser() {\n sessionStore.setState({\n loaded: true,\n session: {\n authenticated: false,\n sessionId: \"\"\n }\n });\n}\nfunction userHasAccess(requiredPrivilege, user) {\n if (user === undefined) {\n // if the user hasn't been loaded, then return false iff there is a required privilege\n return Boolean(requiredPrivilege);\n }\n if (!Boolean(requiredPrivilege)) {\n // if user exists but no requiredPrivilege is defined\n return true;\n }\n return userHasPrivilege(requiredPrivilege, user) || isSuperUser(user);\n}\nfunction getLoggedInUser() {\n var user;\n var unsubscribe;\n return new Promise(function(res, rej) {\n var handler = function(state) {\n if (state.loaded && state.session.user) {\n user = state.session.user;\n res(state.session.user);\n unsubscribe && unsubscribe();\n }\n };\n handler(sessionStore.getState());\n if (!user) {\n unsubscribe = sessionStore.subscribe(handler);\n }\n });\n}\nfunction getSessionLocation() {\n return new Promise(function(res, rej) {\n var sub = getCurrentUser().subscribe(function(session) {\n res(session.sessionLocation);\n }, rej);\n sub.unsubscribe();\n });\n}\nfunction setSessionLocation(locationUuid, abortController) {\n return _setSessionLocation.apply(this, arguments);\n}\nfunction _setSessionLocation() {\n _setSessionLocation = _asyncToGenerator(function(locationUuid, abortController) {\n return __generator(this, function(_state) {\n switch(_state.label){\n case 0:\n return [\n 4,\n (0,_openmrs_fetch__WEBPACK_IMPORTED_MODULE_3__.openmrsFetch)(_openmrs_fetch__WEBPACK_IMPORTED_MODULE_3__.sessionEndpoint, {\n method: \"POST\",\n body: {\n sessionLocation: locationUuid\n },\n headers: {\n \"Content-Type\": \"application/json\"\n },\n signal: abortController.signal\n })\n ];\n case 1:\n _state.sent();\n return [\n 4,\n refetchCurrentUser()\n ];\n case 2:\n _state.sent();\n return [\n 2\n ];\n }\n });\n });\n return _setSessionLocation.apply(this, arguments);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vZnJhbWV3b3JrL2VzbS1hcGkvc3JjL3NoYXJlZC1hcGktb2JqZWN0cy9jdXJyZW50LXVzZXIudHMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSwwQkFBMEIsR0FDMUI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBMEQ7QUFDSDtBQUNQO0FBQ2Q7QUFDK0I7QUFxQmpFLElBQU1NLGVBQWVMLHFFQUFpQkEsQ0FBZSxXQUFXO0lBQzlETSxRQUFRLEtBQUs7SUFDYkMsU0FBUyxJQUFJO0FBQ2Y7QUFDQSxJQUFJQyxzQkFBc0I7QUE2QzFCLFNBQVNDLGlCQUU2QjtRQURwQ0MsT0FBQUEsaUVBQU87UUFBRUMsbUJBQW1CLElBQUk7SUFBQyxDQUFDO0lBRWxDLElBQ0VILHNCQUFzQkksS0FBS0MsR0FBRyxLQUFLLE9BQU8sTUFDMUMsQ0FBQ1IsYUFBYVMsUUFBUSxHQUFHUixNQUFNLEVBQy9CO1FBQ0FTO0lBQ0YsQ0FBQztJQUVELE9BQU8sSUFBSWIsNENBQVVBLENBQUMsU0FBQ2MsWUFBZTtRQUNwQyxJQUFNQyxVQUFVLFNBQUNDLE9BQVU7WUFDekIsSUFBSUEsTUFBTVosTUFBTSxFQUFFO2dCQUNoQixJQUFJSSxLQUFLQyxpQkFBaUIsRUFBRTtvQkFDMUJLLFdBQVdHLElBQUksQ0FBQ0QsTUFBTVgsT0FBTztnQkFDL0IsT0FBTzt3QkFDV1c7b0JBQWhCRixXQUFXRyxJQUFJLENBQUNELENBQUFBLE1BQUFBLE1BQU1YLE9BQU8sY0FBYlcsaUJBQUFBLEtBQUFBLElBQUFBLElBQWVFLElBQUk7Z0JBQ3JDLENBQUM7WUFDSCxDQUFDO1FBQ0g7UUFDQUgsUUFBUVosYUFBYVMsUUFBUTtRQUM3QiwyRUFBMkU7UUFDM0UsaUVBQWlFO1FBQ2pFLE9BQU9ULGFBQWFn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Q21FLFFBQVE7NEJBQ1JDLE1BQU07Z0NBQUVMLGlCQUFpQkU7NEJBQWE7NEJBQ3RDSSxTQUFTO2dDQUNQLGdCQUFnQjs0QkFDbEI7NEJBQ0FDLFFBQVFKLGdCQUFnQkksTUFBTTt3QkFDaEM7OztvQkFQQTtvQkFTQTs7d0JBQU0zRDs7O29CQUFOOzs7Ozs7SUFDRjtXQWRzQnFEIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vQG9wZW5tcnMvZXNtLWFwcC1zaGVsbC8uLi8uLi9mcmFtZXdvcmsvZXNtLWFwaS9zcmMvc2hhcmVkLWFwaS1vYmplY3RzL2N1cnJlbnQtdXNlci50cz9iZDkxIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKiBAbW9kdWxlIEBjYXRlZ29yeSBBUEkgKi9cbmltcG9ydCB7IHJlcG9ydEVycm9yIH0gZnJvbSBcIkBvcGVubXJzL2VzbS1lcnJvci1oYW5kbGluZ1wiO1xuaW1wb3J0IHsgY3JlYXRlR2xvYmFsU3RvcmUgfSBmcm9tIFwiQG9wZW5tcnMvZXNtLXN0YXRlXCI7XG5pbXBvcnQgaXNVbmRlZmluZWQgZnJvbSBcImxvZGFzaC1lcy9pc1VuZGVmaW5lZFwiO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gXCJyeGpzXCI7XG5pbXBvcnQgeyBvcGVubXJzRmV0Y2gsIHNlc3Npb25FbmRwb2ludCB9IGZyb20gXCIuLi9vcGVubXJzLWZldGNoXCI7XG5pbXBvcnQgdHlwZSB7XG4gIExvZ2dlZEluVXNlcixcbiAgU2Vzc2lvbkxvY2F0aW9uLFxuICBQcml2aWxlZ2UsXG4gIFJvbGUsXG4gIFNlc3Npb24sXG59IGZyb20gXCIuLi90eXBlc1wiO1xuXG5leHBvcnQgdHlwZSBTZXNzaW9uU3RvcmUgPSBMb2FkZWRTZXNzaW9uU3RvcmUgfCBVbmxvYWRlZFNlc3Npb25TdG9yZTtcblxuZXhwb3J0IHR5cGUgTG9hZGVkU2Vzc2lvblN0b3JlID0ge1xuICBsb2FkZWQ6IHRydWU7XG4gIHNlc3Npb246IFNlc3Npb247XG59O1xuXG5leHBvcnQgdHlwZSBVbmxvYWRlZFNlc3Npb25TdG9yZSA9IHtcbiAgbG9hZGVkOiBmYWxzZTtcbiAgc2Vzc2lvbjogbnVsbDtcbn07XG5cbmNvbnN0IHNlc3Npb25TdG9yZSA9IGNyZWF0ZUdsb2JhbFN0b3JlPFNlc3Npb25TdG9yZT4oXCJzZXNzaW9uXCIsIHtcbiAgbG9hZGVkOiBmYWxzZSxcbiAgc2Vzc2lvbjogbnVsbCxcbn0pO1xubGV0IGxhc3RGZXRjaFRpbWVNaWxsaXMgPSAwO1xuXG4vKipcbiAqIFRoZSBnZXRDdXJyZW50VXNlciBmdW5jdGlvbiByZXR1cm5zIGFuIG9ic2VydmFibGUgdGhhdCBwcm9kdWNlc1xuICogKip6ZXJvIG9yIG1vcmUgdmFsdWVzLCBvdmVyIHRpbWUqKi4gSXQgd2lsbCBwcm9kdWNlIHplcm8gdmFsdWVzXG4gKiBieSBkZWZhdWx0IGlmIHRoZSB1c2VyIGlzIG5vdCBsb2dnZWQgaW4uIEFuZCBpdCB3aWxsIHByb3ZpZGUgYVxuICogZmlyc3QgdmFsdWUgd2hlbiB0aGUgbG9nZ2VkIGluIHVzZXIgaXMgZmV0Y2hlZCBmcm9tIHRoZSBzZXJ2ZXIuXG4gKiBTdWJzZXF1ZW50IHZhbHVlcyB3aWxsIGJlIHByb2R1Y2VkIHdoZW5ldmVyIHRoZSB1c2VyIG9iamVjdCBpc1xuICogdXBkYXRlZC5cbiAqXG4gKiBAcGFyYW0gb3B0aW9ucyBBbiBvYmplY3Qgd2l0aCBgaW5jbHVkZUF1dGhTdGF0dXNgIGJvb2xlYW5cbiAqICAgcHJvcGVydHkgdGhhdCBkZWZhdWx0cyB0byBgZmFsc2VgLiBXaGVuIGBpbmNsdWRlQXV0aFN0YXR1c2AgaXMgc2V0XG4gKiAgIHRvIGB0cnVlYCwgdGhlIGVudGlyZSByZXNwb25zZSBvYmplY3QgZnJvbSB0aGUgQVBJIHdpbGwgYmUgcHJvdmlkZWQuXG4gKiAgIFdoZW4gYGluY2x1ZGVBdXRoU3RhdHVzYCBpcyBzZXQgdG8gYGZhbHNlYCwgb25seSB0aGUgYHVzZXJgIHByb3BlcnR5XG4gKiAgIG9mIHRoZSByZXNwb25zZSBvYmplY3Qgd2lsbCBiZSBwcm92aWRlZC5cbiAqXG4gKiBAcmV0dXJucyBBbiBPYnNlcnZhYmxlIHRoYXQgcHJvZHVjZXMgemVybyBvciBtb3JlIHZhbHVlcyAoYXNcbiAqICAgZGVzY3JpYmVkIGFib3ZlKS4gVGhlIHZhbHVlcyBwcm9kdWNlZCB3aWxsIGJlIGEgdXNlciBvYmplY3QgKGlmXG4gKiAgIGBpbmNsdWRlQXV0aFN0YXR1c2AgaXMgc2V0IHRvIGBmYWxzZWApIG9yIGFuIG9iamVjdCB3aXRoIGEgc2Vzc2lvblxuICogICBhbmQgYXV0aGVudGljYXRlZCBwcm9wZXJ0eSAoaWYgYGluY2x1ZGVBdXRoU3RhdHVzYCBpcyBzZXQgdG8gYHRydWVgKS5cbiAqXG4gKiAjIyMjIEV4YW1wbGVcbiAqXG4gKiBgYGBqc1xuICogaW1wb3J0IHsgZ2V0Q3VycmVudFVzZXIgfSBmcm9tICdAb3Blbm1ycy9lc20tYXBpJ1xuICogY29uc3Qgc3Vic2NyaXB0aW9uID0gZ2V0Q3VycmVudFVzZXIoKS5zdWJzY3JpYmUoXG4gKiAgIHVzZXIgPT4gY29uc29sZS5sb2codXNlcilcbiAqIClcbiAqIHN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpXG4gKiBnZXRDdXJyZW50VXNlcih7aW5jbHVkZUF1dGhTdGF0dXM6IHRydWV9KS5zdWJzY3JpYmUoXG4gKiAgIGRhdGEgPT4gY29uc29sZS5sb2coZGF0YS5hdXRoZW50aWNhdGVkKVxuICogKVxuICogYGBgXG4gKlxuICogIyMjIyBCZSBzdXJlIHRvIHVuc3Vic2NyaWJlIHdoZW4geW91ciBjb21wb25lbnQgdW5tb3VudHNcbiAqXG4gKiBPdGhlcndpc2UgeW91ciBjb2RlIHdpbGwgY29udGludWUgZ2V0dGluZyB1cGRhdGVzIHRvIHRoZSB1c2VyIG9iamVjdFxuICogZXZlbiBhZnRlciB0aGUgVUkgY29tcG9uZW50IGlzIGdvbmUgZnJvbSB0aGUgc2NyZWVuLiBUaGlzIGlzIGEgbWVtb3J5XG4gKiBsZWFrIGFuZCBzb3VyY2Ugb2YgYnVncy5cbiAqL1xuZnVuY3Rpb24gZ2V0Q3VycmVudFVzZXIoKTogT2JzZXJ2YWJsZTxTZXNzaW9uPjtcbmZ1bmN0aW9uIGdldEN1cnJlbnRVc2VyKG9wdHM6IHsgaW5jbHVkZUF1dGhTdGF0dXM6IHRydWUgfSk6IE9ic2VydmFibGU8U2Vzc2lvbj47XG5mdW5jdGlvbiBnZXRDdXJyZW50VXNlcihvcHRzOiB7XG4gIGluY2x1ZGVBdXRoU3RhdHVzOiBmYWxzZTtcbn0pOiBPYnNlcnZhYmxlPExvZ2dlZEluVXNlcj47XG5mdW5jdGlvbiBnZXRDdXJyZW50VXNlcihcbiAgb3B0cyA9IHsgaW5jbHVkZUF1dGhTdGF0dXM6IHRydWUgfVxuKTogT2JzZXJ2YWJsZTxTZXNzaW9uIHwgTG9nZ2VkSW5Vc2VyPiB7XG4gIGlmIChcbiAgICBsYXN0RmV0Y2hUaW1lTWlsbGlzIDwgRGF0ZS5ub3coKSAtIDEwMDAgKiA2MCB8fFxuICAgICFzZXNzaW9uU3RvcmUuZ2V0U3RhdGUoKS5sb2FkZWRcbiAgKSB7XG4gICAgcmVmZXRjaEN1cnJlbnRVc2VyKCk7XG4gIH1cblxuICByZXR1cm4gbmV3IE9ic2VydmFibGUoKHN1YnNjcmliZXIpID0+IHtcbiAgICBjb25zdCBoYW5kbGVyID0gKHN0YXRlKSA9PiB7XG4gICAgICBpZiAoc3RhdGUubG9hZGVkKSB7XG4gICAgICAgIGlmIChvcHRzLmluY2x1ZGVBdXRoU3RhdHVzKSB7XG4gICAgICAgICAgc3Vic2NyaWJlci5uZXh0KHN0YXRlLnNlc3Npb24pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHN1YnNjcmliZXIubmV4dChzdGF0ZS5zZXNzaW9uPy51c2VyKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH07XG4gICAgaGFuZGxlcihzZXNzaW9uU3RvcmUuZ2V0U3RhdGUoKSk7XG4gICAgLy8gVGhlIG9ic2VydmFibGUgc3Vic2NyaWJlIGZ1bmN0aW9uIHNob3VsZCByZXR1cm4gYW4gdW5zdWJzY3JpYmUgZnVuY3Rpb24sXG4gICAgLy8gd2hpY2ggaGFwcGVucyB0byBiZSBleGFjdGx5IHdoYXQgVW5pc3RvcmUgYHN1YnNjcmliZWAgcmV0dXJucy5cbiAgICByZXR1cm4gc2Vzc2lvblN0b3JlLnN1YnNjcmliZShoYW5kbGVyKTtcbiAgfSk7XG59XG5cbmV4cG9ydCB7IGdldEN1cnJlbnRVc2VyIH07XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRTZXNzaW9uU3RvcmUoKSB7XG4gIGlmIChcbiAgICBsYXN0RmV0Y2hUaW1lTWlsbGlzIDwgRGF0ZS5ub3coKSAtIDEwMDAgKiA2MCB8fFxuICAgICFzZXNzaW9uU3RvcmUuZ2V0U3RhdGUoKS5sb2FkZWRcbiAgKSB7XG4gICAgcmVmZXRjaEN1cnJlbnRVc2VyKCk7XG4gIH1cblxuICByZXR1cm4gc2Vzc2lvblN0b3JlO1xufVxuXG5mdW5jdGlvbiBzZXRVc2VyTGFuZ3VhZ2UoZGF0YTogU2Vzc2lvbikge1xuICBjb25zdCBsb2NhbGUgPSBkYXRhPy51c2VyPy51c2VyUHJvcGVydGllcz8uZGVmYXVsdExvY2FsZSA/PyBkYXRhLmxvY2FsZTtcbiAgY29uc3QgaHRtbExhbmcgPSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuZ2V0QXR0cmlidXRlKFwibGFuZ1wiKTtcblxuICBpZiAobG9jYWxlICE9PSBodG1sTGFuZykge1xuICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zZXRBdHRyaWJ1dGUoXCJsYW5nXCIsIGxvY2FsZSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gdXNlckhhc1ByaXZpbGVnZShcbiAgcmVxdWlyZWRQcml2aWxlZ2U6IHN0cmluZyB8IHN0cmluZ1tdIHwgdW5kZWZpbmVkLFxuICB1c2VyOiB7IHByaXZpbGVnZXM6IEFycmF5PFByaXZpbGVnZT4gfVxuKSB7XG4gIGlmICh0eXBlb2YgcmVxdWlyZWRQcml2aWxlZ2UgPT09IFwic3RyaW5nXCIpIHtcbiAgICByZXR1cm4gIWlzVW5kZWZpbmVkKFxuICAgICAgdXNlci5wcml2aWxlZ2VzLmZpbmQoKHApID0+IHJlcXVpcmVkUHJpdmlsZWdlID09PSBwLmRpc3BsYXkpXG4gICAgKTtcbiAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KHJlcXVpcmVkUHJpdmlsZWdlKSkge1xuICAgIHJldHVybiByZXF1aXJlZFByaXZpbGVnZS5ldmVyeShcbiAgICAgIChycCkgPT4gIWlzVW5kZWZpbmVkKHVzZXIucHJpdmlsZWdlcy5maW5kKChwKSA9PiBycCA9PT0gcC5kaXNwbGF5KSlcbiAgICApO1xuICB9IGVsc2UgaWYgKCFpc1VuZGVmaW5lZChyZXF1aXJlZFByaXZpbGVnZSkpIHtcbiAgICBjb25zb2xlLmVycm9yKGBDb3VsZCBub3QgdW5kZXJzdGFuZCBwcml2aWxlZ2VzIFwiJHtyZXF1aXJlZFByaXZpbGVnZX1cImApO1xuICB9XG5cbiAgcmV0dXJuIHRydWU7XG59XG5cbmZ1bmN0aW9uIGlzU3VwZXJVc2VyKHVzZXI6IHsgcm9sZXM6IEFycmF5PFJvbGU+IH0pIHtcbiAgcmV0dXJuICFpc1VuZGVmaW5lZChcbiAgICB1c2VyLnJvbGVzLmZpbmQoKHJvbGUpID0+IHJvbGUuZGlzcGxheSA9PT0gXCJTeXN0ZW0gRGV2ZWxvcGVyXCIpXG4gICk7XG59XG5cbi8qKlxuICogVGhlIGByZWZldGNoQ3VycmVudFVzZXJgIGZ1bmN0aW9uIGNhdXNlcyBhIG5ldHdvcmsgcmVxdWVzdCB0byByZWRvd25sb2FkXG4gKiB0aGUgdXNlci4gQWxsIHN1YnNjcmliZXJzIHRvIHRoZSBjdXJyZW50IHVzZXIgd2lsbCBiZSBub3RpZmllZCBvZiB0aGVcbiAqIG5ldyB1c2VycyBvbmNlIHRoZSBuZXcgdmVyc2lvbiBvZiB0aGUgdXNlciBvYmplY3QgaXMgZG93bmxvYWRlZC5cbiAqXG4gKiBAcmV0dXJucyBUaGUgc2FtZSBvYnNlcnZhYmxlIGFzIHJldHVybmVkIGJ5IFtbZ2V0Q3VycmVudFVzZXJdXS5cbiAqXG4gKiAjIyMjIEV4YW1wbGVcbiAqIGBgYGpzXG4gKiBpbXBvcnQgeyByZWZldGNoQ3VycmVudFVzZXIgfSBmcm9tICdAb3Blbm1ycy9lc20tYXBpJ1xuICogcmVmZXRjaEN1cnJlbnRVc2VyKClcbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVmZXRjaEN1cnJlbnRVc2VyKCkge1xuICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgIGxhc3RGZXRjaFRpbWVNaWxsaXMgPSBEYXRlLm5vdygpO1xuICAgIG9wZW5tcnNGZXRjaChzZXNzaW9uRW5kcG9pbnQpXG4gICAgICAudGhlbigocmVzKSA9PiB7XG4gICAgICAgIGlmICh0eXBlb2YgcmVzPy5kYXRhID09PSBcIm9iamVjdFwiKSB7XG4gICAgICAgICAgc2V0VXNlckxhbmd1YWdlKHJlcy5kYXRhKTtcbiAgICAgICAgICByZXNvbHZlKHJlcy5kYXRhKTtcbiAgICAgICAgICBzZXNzaW9uU3RvcmUuc2V0U3RhdGUoeyBsb2FkZWQ6IHRydWUsIHNlc3Npb246IHJlcy5kYXRhIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJlamVjdCgpO1xuICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdCgpO1xuICAgICAgICB9XG4gICAgICB9KVxuICAgICAgLmNhdGNoKChlcnIpID0+IHtcbiAgICAgICAgcmVwb3J0RXJyb3IoYEZhaWxlZCB0byBmZXRjaCBuZXcgc2Vzc2lvbiBpbmZvcm1hdGlvbjogJHtlcnJ9YCk7XG4gICAgICAgIHJlamVjdChlcnIpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHNlc3Npb25JZDogXCJcIixcbiAgICAgICAgICBhdXRoZW50aWNhdGVkOiBmYWxzZSxcbiAgICAgICAgfTtcbiAgICAgIH0pO1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNsZWFyQ3VycmVudFVzZXIoKSB7XG4gIHNlc3Npb25TdG9yZS5zZXRTdGF0ZSh7XG4gICAgbG9hZGVkOiB0cnVlLFxuICAgIHNlc3Npb246IHsgYXV0aGVudGljYXRlZDogZmFsc2UsIHNlc3Npb25JZDogXCJcIiB9LFxuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVzZXJIYXNBY2Nlc3MoXG4gIHJlcXVpcmVkUHJpdmlsZWdlOiBzdHJpbmcgfCBzdHJpbmdbXSxcbiAgdXNlcjogeyBwcml2aWxlZ2VzOiBBcnJheTxQcml2aWxlZ2U+OyByb2xlczogQXJyYXk8Um9sZT4gfVxuKSB7XG4gIGlmICh1c2VyID09PSB1bmRlZmluZWQpIHtcbiAgICAvLyBpZiB0aGUgdXNlciBoYXNuJ3QgYmVlbiBsb2FkZWQsIHRoZW4gcmV0dXJuIGZhbHNlIGlmZiB0aGVyZSBpcyBhIHJlcXVpcmVkIHByaXZpbGVnZVxuICAgIHJldHVybiBCb29sZWFuKHJlcXVpcmVkUHJpdmlsZWdlKTtcbiAgfVxuXG4gIGlmICghQm9vbGVhbihyZXF1aXJlZFByaXZpbGVnZSkpIHtcbiAgICAvLyBpZiB1c2VyIGV4aXN0cyBidXQgbm8gcmVxdWlyZWRQcml2aWxlZ2UgaXMgZGVmaW5lZFxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgcmV0dXJuIHVzZXJIYXNQcml2aWxlZ2UocmVxdWlyZWRQcml2aWxlZ2UsIHVzZXIpIHx8IGlzU3VwZXJVc2VyKHVzZXIpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0TG9nZ2VkSW5Vc2VyKCkge1xuICBsZXQgdXNlcjtcbiAgbGV0IHVuc3Vic2NyaWJlO1xuICByZXR1cm4gbmV3IFByb21pc2U8TG9nZ2VkSW5Vc2VyPigocmVzLCByZWopID0+IHtcbiAgICBjb25zdCBoYW5kbGVyID0gKHN0YXRlOiBTZXNzaW9uU3RvcmUpID0+IHtcbiAgICAgIGlmIChzdGF0ZS5sb2FkZWQgJiYgc3RhdGUuc2Vzc2lvbi51c2VyKSB7XG4gICAgICAgIHVzZXIgPSBzdGF0ZS5zZXNzaW9uLnVzZXI7XG4gICAgICAgIHJlcyhzdGF0ZS5zZXNzaW9uLnVzZXIpO1xuICAgICAgICB1bnN1YnNjcmliZSAmJiB1bnN1YnNjcmliZSgpO1xuICAgICAgfVxuICAgIH07XG4gICAgaGFuZGxlcihzZXNzaW9uU3RvcmUuZ2V0U3RhdGUoKSk7XG4gICAgaWYgKCF1c2VyKSB7XG4gICAgICB1bnN1YnNjcmliZSA9IHNlc3Npb25TdG9yZS5zdWJzY3JpYmUoaGFuZGxlcik7XG4gICAgfVxuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFNlc3Npb25Mb2NhdGlvbigpIHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlPFNlc3Npb25Mb2NhdGlvbiB8IHVuZGVmaW5lZD4oKHJlcywgcmVqKSA9PiB7XG4gICAgY29uc3Qgc3ViID0gZ2V0Q3VycmVudFVzZXIoKS5zdWJzY3JpYmUoKHNlc3Npb24pID0+IHtcbiAgICAgIHJlcyhzZXNzaW9uLnNlc3Npb25Mb2NhdGlvbik7XG4gICAgfSwgcmVqKTtcbiAgICBzdWIudW5zdWJzY3JpYmUoKTtcbiAgfSk7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBzZXRTZXNzaW9uTG9jYXRpb24oXG4gIGxvY2F0aW9uVXVpZDogc3RyaW5nLFxuICBhYm9ydENvbnRyb2xsZXI6IEFib3J0Q29udHJvbGxlclxuKTogUHJvbWlzZTxhbnk+IHtcbiAgYXdhaXQgb3Blbm1yc0ZldGNoKHNlc3Npb25FbmRwb2ludCwge1xuICAgIG1ldGhvZDogXCJQT1NUXCIsXG4gICAgYm9keTogeyBzZXNzaW9uTG9jYXRpb246IGxvY2F0aW9uVXVpZCB9LFxuICAgIGhlYWRlcnM6IHtcbiAgICAgIFwiQ29udGVudC1UeXBlXCI6IFwiYXBwbGljYXRpb24vanNvblwiLFxuICAgIH0sXG4gICAgc2lnbmFsOiBhYm9ydENvbnRyb2xsZXIuc2lnbmFsLFxuICB9KTtcblxuICBhd2FpdCByZWZldGNoQ3VycmVudFVzZXIoKTtcbn1cbiJdLCJuYW1lcyI6WyJyZXBvcnRFcnJvciIsImNyZWF0ZUdsb2JhbFN0b3JlIiwiaXNVbmRlZmluZWQiLCJPYnNlcnZhYmxlIiwib3Blbm1yc0ZldGNoIiwic2Vzc2lvbkVuZHBvaW50Iiwic2Vzc2lvblN0b3JlIiwibG9hZGVkIiwic2Vzc2lvbiIsImxhc3RGZXRjaFRpbWVNaWxsaXMiLCJnZXRDdXJyZW50VXNlciIsIm9wdHMiLCJpbmNsdWRlQXV0aFN0YXR1cyIsIkRhdGUiLCJub3ciLCJnZXRTdGF0ZSIsInJlZmV0Y2hDdXJyZW50VXNlciIsInN1YnNjcmliZXIiLCJoYW5kbGVyIiwic3RhdGUiLCJuZXh0IiwidXNlciIsInN1YnNjcmliZSIsImdldFNlc3Npb25TdG9yZSIsInNldFVzZXJMYW5ndWFnZSIsImRhdGEiLCJsb2NhbGUiLCJ1c2VyUHJvcGVydGllcyIsImRlZmF1bHRMb2NhbGUiLCJodG1sTGFuZyIsImRvY3VtZW50IiwiZG9jdW1lbnRFbGVtZW50IiwiZ2V0QXR0cmlidXRlIiwic2V0QXR0cmlidXRlIiwidXNlckhhc1ByaXZpbGVnZSIsInJlcXVpcmVkUHJpdmlsZWdlIiwicHJpdmlsZWdlcyIsImZpbmQiLCJwIiwiZGlzcGxheSIsIkFycmF5IiwiaXNBcnJheSIsImV2ZXJ5IiwicnAiLCJjb25zb2xlIiwiZXJyb3IiLCJpc1N1cGVyVXNlciIsInJvbGVzIiwicm9sZSIsIlByb21pc2UiLCJyZXNvbHZlIiwicmVqZWN0IiwidGhlbiIsInJlcyIsInNldFN0YXRlIiwiY2F0Y2giLCJlcnIiLCJzZXNzaW9uSWQiLCJhdXRoZW50aWNhdGVkIiwiY2xlYXJDdXJyZW50VXNlciIsInVzZXJIYXNBY2Nlc3MiLCJ1bmRlZmluZWQiLCJCb29sZWFuIiwiZ2V0TG9nZ2VkSW5Vc2VyIiwidW5zdWJzY3JpYmUiLCJyZWoiLCJnZXRTZXNzaW9uTG9jYXRpb24iLCJzdWIiLCJzZXNzaW9uTG9jYXRpb24iLCJzZXRTZXNzaW9uTG9jYXRpb24iLCJsb2NhdGlvblV1aWQiLCJhYm9ydENvbnRyb2xsZXIiLCJtZXRob2QiLCJib2R5IiwiaGVhZGVycyIsInNpZ25hbCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../framework/esm-api/src/shared-api-objects/current-user.ts\n");
6491
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"clearCurrentUser\": () => (/* binding */ clearCurrentUser),\n/* harmony export */ \"getCurrentUser\": () => (/* binding */ getCurrentUser),\n/* harmony export */ \"getLoggedInUser\": () => (/* binding */ getLoggedInUser),\n/* harmony export */ \"getSessionLocation\": () => (/* binding */ getSessionLocation),\n/* harmony export */ \"getSessionStore\": () => (/* binding */ getSessionStore),\n/* harmony export */ \"refetchCurrentUser\": () => (/* binding */ refetchCurrentUser),\n/* harmony export */ \"setSessionLocation\": () => (/* binding */ setSessionLocation),\n/* harmony export */ \"userHasAccess\": () => (/* binding */ userHasAccess)\n/* harmony export */ });\n/* harmony import */ var _openmrs_esm_error_handling__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @openmrs/esm-error-handling */ \"../../framework/esm-error-handling/src/index.ts\");\n/* harmony import */ var _openmrs_esm_state__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @openmrs/esm-state */ \"../../framework/esm-state/src/index.ts\");\n/* harmony import */ var lodash_es_isUndefined__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! lodash-es/isUndefined */ \"../../../node_modules/lodash-es/isUndefined.js\");\n/* harmony import */ var rxjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! rxjs */ \"webpack/sharing/consume/default/rxjs/rxjs\");\n/* harmony import */ var rxjs__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(rxjs__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _openmrs_fetch__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../openmrs-fetch */ \"../../framework/esm-api/src/openmrs-fetch.ts\");\n/** @module @category API */ function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\nfunction _asyncToGenerator(fn) {\n return function() {\n var self = this, args = arguments;\n return new Promise(function(resolve, reject) {\n var gen = fn.apply(self, args);\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n _next(undefined);\n });\n };\n}\nvar __generator = undefined && undefined.__generator || function(thisArg, body) {\n var f, y, t, g, _ = {\n label: 0,\n sent: function() {\n if (t[0] & 1) throw t[1];\n return t[1];\n },\n trys: [],\n ops: []\n };\n return g = {\n next: verb(0),\n \"throw\": verb(1),\n \"return\": verb(2)\n }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() {\n return this;\n }), g;\n function verb(n) {\n return function(v) {\n return step([\n n,\n v\n ]);\n };\n }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while(_)try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [\n op[0] & 2,\n t.value\n ];\n switch(op[0]){\n case 0:\n case 1:\n t = op;\n break;\n case 4:\n _.label++;\n return {\n value: op[1],\n done: false\n };\n case 5:\n _.label++;\n y = op[1];\n op = [\n 0\n ];\n continue;\n case 7:\n op = _.ops.pop();\n _.trys.pop();\n continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {\n _ = 0;\n continue;\n }\n if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {\n _.label = op[1];\n break;\n }\n if (op[0] === 6 && _.label < t[1]) {\n _.label = t[1];\n t = op;\n break;\n }\n if (t && _.label < t[2]) {\n _.label = t[2];\n _.ops.push(op);\n break;\n }\n if (t[2]) _.ops.pop();\n _.trys.pop();\n continue;\n }\n op = body.call(thisArg, _);\n } catch (e) {\n op = [\n 6,\n e\n ];\n y = 0;\n } finally{\n f = t = 0;\n }\n if (op[0] & 5) throw op[1];\n return {\n value: op[0] ? op[1] : void 0,\n done: true\n };\n }\n};\n\n\n\n\n\nvar sessionStore = (0,_openmrs_esm_state__WEBPACK_IMPORTED_MODULE_1__.createGlobalStore)(\"session\", {\n loaded: false,\n session: null\n});\nvar lastFetchTimeMillis = 0;\nfunction getCurrentUser() {\n var opts = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {\n includeAuthStatus: true\n };\n if (lastFetchTimeMillis < Date.now() - 1000 * 60 || !sessionStore.getState().loaded) {\n refetchCurrentUser();\n }\n return new rxjs__WEBPACK_IMPORTED_MODULE_2__.Observable(function(subscriber) {\n var handler = function(state) {\n if (state.loaded) {\n if (opts.includeAuthStatus) {\n subscriber.next(state.session);\n } else {\n var ref;\n subscriber.next((ref = state.session) === null || ref === void 0 ? void 0 : ref.user);\n }\n }\n };\n handler(sessionStore.getState());\n // The observable subscribe function should return an unsubscribe function,\n // which happens to be exactly what `subscribe` returns.\n return sessionStore.subscribe(handler);\n });\n}\n\nfunction getSessionStore() {\n if (lastFetchTimeMillis < Date.now() - 1000 * 60 || !sessionStore.getState().loaded) {\n refetchCurrentUser();\n }\n return sessionStore;\n}\nfunction setUserLanguage(data) {\n var ref, ref1;\n var ref2;\n var locale = (ref2 = data === null || data === void 0 ? void 0 : (ref = data.user) === null || ref === void 0 ? void 0 : (ref1 = ref.userProperties) === null || ref1 === void 0 ? void 0 : ref1.defaultLocale) !== null && ref2 !== void 0 ? ref2 : data.locale;\n var htmlLang = document.documentElement.getAttribute(\"lang\");\n if (locale !== htmlLang) {\n document.documentElement.setAttribute(\"lang\", locale);\n }\n}\nfunction userHasPrivilege(requiredPrivilege, user) {\n if (typeof requiredPrivilege === \"string\") {\n return !(0,lodash_es_isUndefined__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(user.privileges.find(function(p) {\n return requiredPrivilege === p.display;\n }));\n } else if (Array.isArray(requiredPrivilege)) {\n return requiredPrivilege.every(function(rp) {\n return !(0,lodash_es_isUndefined__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(user.privileges.find(function(p) {\n return rp === p.display;\n }));\n });\n } else if (!(0,lodash_es_isUndefined__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(requiredPrivilege)) {\n console.error('Could not understand privileges \"'.concat(requiredPrivilege, '\"'));\n }\n return true;\n}\nfunction isSuperUser(user) {\n return !(0,lodash_es_isUndefined__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(user.roles.find(function(role) {\n return role.display === \"System Developer\";\n }));\n}\n/**\n * The `refetchCurrentUser` function causes a network request to redownload\n * the user. All subscribers to the current user will be notified of the\n * new users once the new version of the user object is downloaded.\n *\n * @returns The same observable as returned by [[getCurrentUser]].\n *\n * #### Example\n * ```js\n * import { refetchCurrentUser } from '@openmrs/esm-api'\n * refetchCurrentUser()\n * ```\n */ function refetchCurrentUser() {\n return new Promise(function(resolve, reject) {\n lastFetchTimeMillis = Date.now();\n (0,_openmrs_fetch__WEBPACK_IMPORTED_MODULE_3__.openmrsFetch)(_openmrs_fetch__WEBPACK_IMPORTED_MODULE_3__.sessionEndpoint).then(function(res) {\n if (typeof (res === null || res === void 0 ? void 0 : res.data) === \"object\") {\n setUserLanguage(res.data);\n resolve(res.data);\n sessionStore.setState({\n loaded: true,\n session: res.data\n });\n } else {\n reject();\n return Promise.reject();\n }\n }).catch(function(err) {\n (0,_openmrs_esm_error_handling__WEBPACK_IMPORTED_MODULE_0__.reportError)(\"Failed to fetch new session information: \".concat(err));\n reject(err);\n return {\n sessionId: \"\",\n authenticated: false\n };\n });\n });\n}\nfunction clearCurrentUser() {\n sessionStore.setState({\n loaded: true,\n session: {\n authenticated: false,\n sessionId: \"\"\n }\n });\n}\nfunction userHasAccess(requiredPrivilege, user) {\n if (user === undefined) {\n // if the user hasn't been loaded, then return false iff there is a required privilege\n return Boolean(requiredPrivilege);\n }\n if (!Boolean(requiredPrivilege)) {\n // if user exists but no requiredPrivilege is defined\n return true;\n }\n return userHasPrivilege(requiredPrivilege, user) || isSuperUser(user);\n}\nfunction getLoggedInUser() {\n var user;\n var unsubscribe;\n return new Promise(function(res, rej) {\n var handler = function(state) {\n if (state.loaded && state.session.user) {\n user = state.session.user;\n res(state.session.user);\n unsubscribe && unsubscribe();\n }\n };\n handler(sessionStore.getState());\n if (!user) {\n unsubscribe = sessionStore.subscribe(handler);\n }\n });\n}\nfunction getSessionLocation() {\n return new Promise(function(res, rej) {\n var sub = getCurrentUser().subscribe(function(session) {\n res(session.sessionLocation);\n }, rej);\n sub.unsubscribe();\n });\n}\nfunction setSessionLocation(locationUuid, abortController) {\n return _setSessionLocation.apply(this, arguments);\n}\nfunction _setSessionLocation() {\n _setSessionLocation = _asyncToGenerator(function(locationUuid, abortController) {\n return __generator(this, function(_state) {\n switch(_state.label){\n case 0:\n return [\n 4,\n (0,_openmrs_fetch__WEBPACK_IMPORTED_MODULE_3__.openmrsFetch)(_openmrs_fetch__WEBPACK_IMPORTED_MODULE_3__.sessionEndpoint, {\n method: \"POST\",\n body: {\n sessionLocation: locationUuid\n },\n headers: {\n \"Content-Type\": \"application/json\"\n },\n signal: abortController.signal\n })\n ];\n case 1:\n _state.sent();\n return [\n 4,\n refetchCurrentUser()\n ];\n case 2:\n _state.sent();\n return [\n 2\n ];\n }\n });\n });\n return _setSessionLocation.apply(this, arguments);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vZnJhbWV3b3JrL2VzbS1hcGkvc3JjL3NoYXJlZC1hcGktb2JqZWN0cy9jdXJyZW50LXVzZXIudHMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSwwQkFBMEIsR0FDMUI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBMEQ7QUFDSDtBQUNQO0FBQ2Q7QUFDK0I7QUFxQmpFLElBQU1NLGVBQWVMLHFFQUFpQkEsQ0FBZSxXQUFXO0lBQzlETSxRQUFRLEtBQUs7SUFDYkMsU0FBUyxJQUFJO0FBQ2Y7QUFDQSxJQUFJQyxzQkFBc0I7QUE2QzFCLFNBQVNDLGlCQUU2QjtRQURwQ0MsT0FBQUEsaUVBQU87UUFBRUMsbUJBQW1CLElBQUk7SUFBQyxDQUFDO0lBRWxDLElBQ0VILHNCQUFzQkksS0FBS0MsR0FBRyxLQUFLLE9BQU8sTUFDMUMsQ0FBQ1IsYUFBYVMsUUFBUSxHQUFHUixNQUFNLEVBQy9CO1FBQ0FTO0lBQ0YsQ0FBQztJQUVELE9BQU8sSUFBSWIsNENBQVVBLENBQUMsU0FBQ2MsWUFBZTtRQUNwQyxJQUFNQyxVQUFVLFNBQUNDLE9BQVU7WUFDekIsSUFBSUEsTUFBTVosTUFBTSxFQUFFO2dCQUNoQixJQUFJSSxLQUFLQyxpQkFBaUIsRUFBRTtvQkFDMUJLLFdBQVdHLElBQUksQ0FBQ0QsTUFBTVgsT0FBTztnQkFDL0IsT0FBTzt3QkFDV1c7b0JBQWhCRixXQUFXRyxJQUFJLENBQUNELENBQUFBLE1BQUFBLE1BQU1YLE9BQU8sY0FBYlcsaUJBQUFBLEtBQUFBLElBQUFBLElBQWVFLElBQUk7Z0JBQ3JDLENBQUM7WUFDSCxDQUFDO1FBQ0g7UUFDQUgsUUFBUVosYUFBYVMsUUFBUTtRQUM3QiwyRUFBMkU7UUFDM0Usd0RBQXdEO1FBQ3hELE9BQU9ULGFBQWFn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Q21FLFFBQVE7NEJBQ1JDLE1BQU07Z0NBQUVMLGlCQUFpQkU7NEJBQWE7NEJBQ3RDSSxTQUFTO2dDQUNQLGdCQUFnQjs0QkFDbEI7NEJBQ0FDLFFBQVFKLGdCQUFnQkksTUFBTTt3QkFDaEM7OztvQkFQQTtvQkFTQTs7d0JBQU0zRDs7O29CQUFOOzs7Ozs7SUFDRjtXQWRzQnFEIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vQG9wZW5tcnMvZXNtLWFwcC1zaGVsbC8uLi8uLi9mcmFtZXdvcmsvZXNtLWFwaS9zcmMvc2hhcmVkLWFwaS1vYmplY3RzL2N1cnJlbnQtdXNlci50cz9iZDkxIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKiBAbW9kdWxlIEBjYXRlZ29yeSBBUEkgKi9cbmltcG9ydCB7IHJlcG9ydEVycm9yIH0gZnJvbSBcIkBvcGVubXJzL2VzbS1lcnJvci1oYW5kbGluZ1wiO1xuaW1wb3J0IHsgY3JlYXRlR2xvYmFsU3RvcmUgfSBmcm9tIFwiQG9wZW5tcnMvZXNtLXN0YXRlXCI7XG5pbXBvcnQgaXNVbmRlZmluZWQgZnJvbSBcImxvZGFzaC1lcy9pc1VuZGVmaW5lZFwiO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gXCJyeGpzXCI7XG5pbXBvcnQgeyBvcGVubXJzRmV0Y2gsIHNlc3Npb25FbmRwb2ludCB9IGZyb20gXCIuLi9vcGVubXJzLWZldGNoXCI7XG5pbXBvcnQgdHlwZSB7XG4gIExvZ2dlZEluVXNlcixcbiAgU2Vzc2lvbkxvY2F0aW9uLFxuICBQcml2aWxlZ2UsXG4gIFJvbGUsXG4gIFNlc3Npb24sXG59IGZyb20gXCIuLi90eXBlc1wiO1xuXG5leHBvcnQgdHlwZSBTZXNzaW9uU3RvcmUgPSBMb2FkZWRTZXNzaW9uU3RvcmUgfCBVbmxvYWRlZFNlc3Npb25TdG9yZTtcblxuZXhwb3J0IHR5cGUgTG9hZGVkU2Vzc2lvblN0b3JlID0ge1xuICBsb2FkZWQ6IHRydWU7XG4gIHNlc3Npb246IFNlc3Npb247XG59O1xuXG5leHBvcnQgdHlwZSBVbmxvYWRlZFNlc3Npb25TdG9yZSA9IHtcbiAgbG9hZGVkOiBmYWxzZTtcbiAgc2Vzc2lvbjogbnVsbDtcbn07XG5cbmNvbnN0IHNlc3Npb25TdG9yZSA9IGNyZWF0ZUdsb2JhbFN0b3JlPFNlc3Npb25TdG9yZT4oXCJzZXNzaW9uXCIsIHtcbiAgbG9hZGVkOiBmYWxzZSxcbiAgc2Vzc2lvbjogbnVsbCxcbn0pO1xubGV0IGxhc3RGZXRjaFRpbWVNaWxsaXMgPSAwO1xuXG4vKipcbiAqIFRoZSBnZXRDdXJyZW50VXNlciBmdW5jdGlvbiByZXR1cm5zIGFuIG9ic2VydmFibGUgdGhhdCBwcm9kdWNlc1xuICogKip6ZXJvIG9yIG1vcmUgdmFsdWVzLCBvdmVyIHRpbWUqKi4gSXQgd2lsbCBwcm9kdWNlIHplcm8gdmFsdWVzXG4gKiBieSBkZWZhdWx0IGlmIHRoZSB1c2VyIGlzIG5vdCBsb2dnZWQgaW4uIEFuZCBpdCB3aWxsIHByb3ZpZGUgYVxuICogZmlyc3QgdmFsdWUgd2hlbiB0aGUgbG9nZ2VkIGluIHVzZXIgaXMgZmV0Y2hlZCBmcm9tIHRoZSBzZXJ2ZXIuXG4gKiBTdWJzZXF1ZW50IHZhbHVlcyB3aWxsIGJlIHByb2R1Y2VkIHdoZW5ldmVyIHRoZSB1c2VyIG9iamVjdCBpc1xuICogdXBkYXRlZC5cbiAqXG4gKiBAcGFyYW0gb3B0aW9ucyBBbiBvYmplY3Qgd2l0aCBgaW5jbHVkZUF1dGhTdGF0dXNgIGJvb2xlYW5cbiAqICAgcHJvcGVydHkgdGhhdCBkZWZhdWx0cyB0byBgZmFsc2VgLiBXaGVuIGBpbmNsdWRlQXV0aFN0YXR1c2AgaXMgc2V0XG4gKiAgIHRvIGB0cnVlYCwgdGhlIGVudGlyZSByZXNwb25zZSBvYmplY3QgZnJvbSB0aGUgQVBJIHdpbGwgYmUgcHJvdmlkZWQuXG4gKiAgIFdoZW4gYGluY2x1ZGVBdXRoU3RhdHVzYCBpcyBzZXQgdG8gYGZhbHNlYCwgb25seSB0aGUgYHVzZXJgIHByb3BlcnR5XG4gKiAgIG9mIHRoZSByZXNwb25zZSBvYmplY3Qgd2lsbCBiZSBwcm92aWRlZC5cbiAqXG4gKiBAcmV0dXJucyBBbiBPYnNlcnZhYmxlIHRoYXQgcHJvZHVjZXMgemVybyBvciBtb3JlIHZhbHVlcyAoYXNcbiAqICAgZGVzY3JpYmVkIGFib3ZlKS4gVGhlIHZhbHVlcyBwcm9kdWNlZCB3aWxsIGJlIGEgdXNlciBvYmplY3QgKGlmXG4gKiAgIGBpbmNsdWRlQXV0aFN0YXR1c2AgaXMgc2V0IHRvIGBmYWxzZWApIG9yIGFuIG9iamVjdCB3aXRoIGEgc2Vzc2lvblxuICogICBhbmQgYXV0aGVudGljYXRlZCBwcm9wZXJ0eSAoaWYgYGluY2x1ZGVBdXRoU3RhdHVzYCBpcyBzZXQgdG8gYHRydWVgKS5cbiAqXG4gKiAjIyMjIEV4YW1wbGVcbiAqXG4gKiBgYGBqc1xuICogaW1wb3J0IHsgZ2V0Q3VycmVudFVzZXIgfSBmcm9tICdAb3Blbm1ycy9lc20tYXBpJ1xuICogY29uc3Qgc3Vic2NyaXB0aW9uID0gZ2V0Q3VycmVudFVzZXIoKS5zdWJzY3JpYmUoXG4gKiAgIHVzZXIgPT4gY29uc29sZS5sb2codXNlcilcbiAqIClcbiAqIHN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpXG4gKiBnZXRDdXJyZW50VXNlcih7aW5jbHVkZUF1dGhTdGF0dXM6IHRydWV9KS5zdWJzY3JpYmUoXG4gKiAgIGRhdGEgPT4gY29uc29sZS5sb2coZGF0YS5hdXRoZW50aWNhdGVkKVxuICogKVxuICogYGBgXG4gKlxuICogIyMjIyBCZSBzdXJlIHRvIHVuc3Vic2NyaWJlIHdoZW4geW91ciBjb21wb25lbnQgdW5tb3VudHNcbiAqXG4gKiBPdGhlcndpc2UgeW91ciBjb2RlIHdpbGwgY29udGludWUgZ2V0dGluZyB1cGRhdGVzIHRvIHRoZSB1c2VyIG9iamVjdFxuICogZXZlbiBhZnRlciB0aGUgVUkgY29tcG9uZW50IGlzIGdvbmUgZnJvbSB0aGUgc2NyZWVuLiBUaGlzIGlzIGEgbWVtb3J5XG4gKiBsZWFrIGFuZCBzb3VyY2Ugb2YgYnVncy5cbiAqL1xuZnVuY3Rpb24gZ2V0Q3VycmVudFVzZXIoKTogT2JzZXJ2YWJsZTxTZXNzaW9uPjtcbmZ1bmN0aW9uIGdldEN1cnJlbnRVc2VyKG9wdHM6IHsgaW5jbHVkZUF1dGhTdGF0dXM6IHRydWUgfSk6IE9ic2VydmFibGU8U2Vzc2lvbj47XG5mdW5jdGlvbiBnZXRDdXJyZW50VXNlcihvcHRzOiB7XG4gIGluY2x1ZGVBdXRoU3RhdHVzOiBmYWxzZTtcbn0pOiBPYnNlcnZhYmxlPExvZ2dlZEluVXNlcj47XG5mdW5jdGlvbiBnZXRDdXJyZW50VXNlcihcbiAgb3B0cyA9IHsgaW5jbHVkZUF1dGhTdGF0dXM6IHRydWUgfVxuKTogT2JzZXJ2YWJsZTxTZXNzaW9uIHwgTG9nZ2VkSW5Vc2VyPiB7XG4gIGlmIChcbiAgICBsYXN0RmV0Y2hUaW1lTWlsbGlzIDwgRGF0ZS5ub3coKSAtIDEwMDAgKiA2MCB8fFxuICAgICFzZXNzaW9uU3RvcmUuZ2V0U3RhdGUoKS5sb2FkZWRcbiAgKSB7XG4gICAgcmVmZXRjaEN1cnJlbnRVc2VyKCk7XG4gIH1cblxuICByZXR1cm4gbmV3IE9ic2VydmFibGUoKHN1YnNjcmliZXIpID0+IHtcbiAgICBjb25zdCBoYW5kbGVyID0gKHN0YXRlKSA9PiB7XG4gICAgICBpZiAoc3RhdGUubG9hZGVkKSB7XG4gICAgICAgIGlmIChvcHRzLmluY2x1ZGVBdXRoU3RhdHVzKSB7XG4gICAgICAgICAgc3Vic2NyaWJlci5uZXh0KHN0YXRlLnNlc3Npb24pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHN1YnNjcmliZXIubmV4dChzdGF0ZS5zZXNzaW9uPy51c2VyKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH07XG4gICAgaGFuZGxlcihzZXNzaW9uU3RvcmUuZ2V0U3RhdGUoKSk7XG4gICAgLy8gVGhlIG9ic2VydmFibGUgc3Vic2NyaWJlIGZ1bmN0aW9uIHNob3VsZCByZXR1cm4gYW4gdW5zdWJzY3JpYmUgZnVuY3Rpb24sXG4gICAgLy8gd2hpY2ggaGFwcGVucyB0byBiZSBleGFjdGx5IHdoYXQgYHN1YnNjcmliZWAgcmV0dXJucy5cbiAgICByZXR1cm4gc2Vzc2lvblN0b3JlLnN1YnNjcmliZShoYW5kbGVyKTtcbiAgfSk7XG59XG5cbmV4cG9ydCB7IGdldEN1cnJlbnRVc2VyIH07XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRTZXNzaW9uU3RvcmUoKSB7XG4gIGlmIChcbiAgICBsYXN0RmV0Y2hUaW1lTWlsbGlzIDwgRGF0ZS5ub3coKSAtIDEwMDAgKiA2MCB8fFxuICAgICFzZXNzaW9uU3RvcmUuZ2V0U3RhdGUoKS5sb2FkZWRcbiAgKSB7XG4gICAgcmVmZXRjaEN1cnJlbnRVc2VyKCk7XG4gIH1cblxuICByZXR1cm4gc2Vzc2lvblN0b3JlO1xufVxuXG5mdW5jdGlvbiBzZXRVc2VyTGFuZ3VhZ2UoZGF0YTogU2Vzc2lvbikge1xuICBjb25zdCBsb2NhbGUgPSBkYXRhPy51c2VyPy51c2VyUHJvcGVydGllcz8uZGVmYXVsdExvY2FsZSA/PyBkYXRhLmxvY2FsZTtcbiAgY29uc3QgaHRtbExhbmcgPSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuZ2V0QXR0cmlidXRlKFwibGFuZ1wiKTtcblxuICBpZiAobG9jYWxlICE9PSBodG1sTGFuZykge1xuICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zZXRBdHRyaWJ1dGUoXCJsYW5nXCIsIGxvY2FsZSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gdXNlckhhc1ByaXZpbGVnZShcbiAgcmVxdWlyZWRQcml2aWxlZ2U6IHN0cmluZyB8IHN0cmluZ1tdIHwgdW5kZWZpbmVkLFxuICB1c2VyOiB7IHByaXZpbGVnZXM6IEFycmF5PFByaXZpbGVnZT4gfVxuKSB7XG4gIGlmICh0eXBlb2YgcmVxdWlyZWRQcml2aWxlZ2UgPT09IFwic3RyaW5nXCIpIHtcbiAgICByZXR1cm4gIWlzVW5kZWZpbmVkKFxuICAgICAgdXNlci5wcml2aWxlZ2VzLmZpbmQoKHApID0+IHJlcXVpcmVkUHJpdmlsZWdlID09PSBwLmRpc3BsYXkpXG4gICAgKTtcbiAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KHJlcXVpcmVkUHJpdmlsZWdlKSkge1xuICAgIHJldHVybiByZXF1aXJlZFByaXZpbGVnZS5ldmVyeShcbiAgICAgIChycCkgPT4gIWlzVW5kZWZpbmVkKHVzZXIucHJpdmlsZWdlcy5maW5kKChwKSA9PiBycCA9PT0gcC5kaXNwbGF5KSlcbiAgICApO1xuICB9IGVsc2UgaWYgKCFpc1VuZGVmaW5lZChyZXF1aXJlZFByaXZpbGVnZSkpIHtcbiAgICBjb25zb2xlLmVycm9yKGBDb3VsZCBub3QgdW5kZXJzdGFuZCBwcml2aWxlZ2VzIFwiJHtyZXF1aXJlZFByaXZpbGVnZX1cImApO1xuICB9XG5cbiAgcmV0dXJuIHRydWU7XG59XG5cbmZ1bmN0aW9uIGlzU3VwZXJVc2VyKHVzZXI6IHsgcm9sZXM6IEFycmF5PFJvbGU+IH0pIHtcbiAgcmV0dXJuICFpc1VuZGVmaW5lZChcbiAgICB1c2VyLnJvbGVzLmZpbmQoKHJvbGUpID0+IHJvbGUuZGlzcGxheSA9PT0gXCJTeXN0ZW0gRGV2ZWxvcGVyXCIpXG4gICk7XG59XG5cbi8qKlxuICogVGhlIGByZWZldGNoQ3VycmVudFVzZXJgIGZ1bmN0aW9uIGNhdXNlcyBhIG5ldHdvcmsgcmVxdWVzdCB0byByZWRvd25sb2FkXG4gKiB0aGUgdXNlci4gQWxsIHN1YnNjcmliZXJzIHRvIHRoZSBjdXJyZW50IHVzZXIgd2lsbCBiZSBub3RpZmllZCBvZiB0aGVcbiAqIG5ldyB1c2VycyBvbmNlIHRoZSBuZXcgdmVyc2lvbiBvZiB0aGUgdXNlciBvYmplY3QgaXMgZG93bmxvYWRlZC5cbiAqXG4gKiBAcmV0dXJucyBUaGUgc2FtZSBvYnNlcnZhYmxlIGFzIHJldHVybmVkIGJ5IFtbZ2V0Q3VycmVudFVzZXJdXS5cbiAqXG4gKiAjIyMjIEV4YW1wbGVcbiAqIGBgYGpzXG4gKiBpbXBvcnQgeyByZWZldGNoQ3VycmVudFVzZXIgfSBmcm9tICdAb3Blbm1ycy9lc20tYXBpJ1xuICogcmVmZXRjaEN1cnJlbnRVc2VyKClcbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVmZXRjaEN1cnJlbnRVc2VyKCkge1xuICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgIGxhc3RGZXRjaFRpbWVNaWxsaXMgPSBEYXRlLm5vdygpO1xuICAgIG9wZW5tcnNGZXRjaChzZXNzaW9uRW5kcG9pbnQpXG4gICAgICAudGhlbigocmVzKSA9PiB7XG4gICAgICAgIGlmICh0eXBlb2YgcmVzPy5kYXRhID09PSBcIm9iamVjdFwiKSB7XG4gICAgICAgICAgc2V0VXNlckxhbmd1YWdlKHJlcy5kYXRhKTtcbiAgICAgICAgICByZXNvbHZlKHJlcy5kYXRhKTtcbiAgICAgICAgICBzZXNzaW9uU3RvcmUuc2V0U3RhdGUoeyBsb2FkZWQ6IHRydWUsIHNlc3Npb246IHJlcy5kYXRhIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJlamVjdCgpO1xuICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdCgpO1xuICAgICAgICB9XG4gICAgICB9KVxuICAgICAgLmNhdGNoKChlcnIpID0+IHtcbiAgICAgICAgcmVwb3J0RXJyb3IoYEZhaWxlZCB0byBmZXRjaCBuZXcgc2Vzc2lvbiBpbmZvcm1hdGlvbjogJHtlcnJ9YCk7XG4gICAgICAgIHJlamVjdChlcnIpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHNlc3Npb25JZDogXCJcIixcbiAgICAgICAgICBhdXRoZW50aWNhdGVkOiBmYWxzZSxcbiAgICAgICAgfTtcbiAgICAgIH0pO1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNsZWFyQ3VycmVudFVzZXIoKSB7XG4gIHNlc3Npb25TdG9yZS5zZXRTdGF0ZSh7XG4gICAgbG9hZGVkOiB0cnVlLFxuICAgIHNlc3Npb246IHsgYXV0aGVudGljYXRlZDogZmFsc2UsIHNlc3Npb25JZDogXCJcIiB9LFxuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVzZXJIYXNBY2Nlc3MoXG4gIHJlcXVpcmVkUHJpdmlsZWdlOiBzdHJpbmcgfCBzdHJpbmdbXSxcbiAgdXNlcjogeyBwcml2aWxlZ2VzOiBBcnJheTxQcml2aWxlZ2U+OyByb2xlczogQXJyYXk8Um9sZT4gfVxuKSB7XG4gIGlmICh1c2VyID09PSB1bmRlZmluZWQpIHtcbiAgICAvLyBpZiB0aGUgdXNlciBoYXNuJ3QgYmVlbiBsb2FkZWQsIHRoZW4gcmV0dXJuIGZhbHNlIGlmZiB0aGVyZSBpcyBhIHJlcXVpcmVkIHByaXZpbGVnZVxuICAgIHJldHVybiBCb29sZWFuKHJlcXVpcmVkUHJpdmlsZWdlKTtcbiAgfVxuXG4gIGlmICghQm9vbGVhbihyZXF1aXJlZFByaXZpbGVnZSkpIHtcbiAgICAvLyBpZiB1c2VyIGV4aXN0cyBidXQgbm8gcmVxdWlyZWRQcml2aWxlZ2UgaXMgZGVmaW5lZFxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgcmV0dXJuIHVzZXJIYXNQcml2aWxlZ2UocmVxdWlyZWRQcml2aWxlZ2UsIHVzZXIpIHx8IGlzU3VwZXJVc2VyKHVzZXIpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0TG9nZ2VkSW5Vc2VyKCkge1xuICBsZXQgdXNlcjtcbiAgbGV0IHVuc3Vic2NyaWJlO1xuICByZXR1cm4gbmV3IFByb21pc2U8TG9nZ2VkSW5Vc2VyPigocmVzLCByZWopID0+IHtcbiAgICBjb25zdCBoYW5kbGVyID0gKHN0YXRlOiBTZXNzaW9uU3RvcmUpID0+IHtcbiAgICAgIGlmIChzdGF0ZS5sb2FkZWQgJiYgc3RhdGUuc2Vzc2lvbi51c2VyKSB7XG4gICAgICAgIHVzZXIgPSBzdGF0ZS5zZXNzaW9uLnVzZXI7XG4gICAgICAgIHJlcyhzdGF0ZS5zZXNzaW9uLnVzZXIpO1xuICAgICAgICB1bnN1YnNjcmliZSAmJiB1bnN1YnNjcmliZSgpO1xuICAgICAgfVxuICAgIH07XG4gICAgaGFuZGxlcihzZXNzaW9uU3RvcmUuZ2V0U3RhdGUoKSk7XG4gICAgaWYgKCF1c2VyKSB7XG4gICAgICB1bnN1YnNjcmliZSA9IHNlc3Npb25TdG9yZS5zdWJzY3JpYmUoaGFuZGxlcik7XG4gICAgfVxuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFNlc3Npb25Mb2NhdGlvbigpIHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlPFNlc3Npb25Mb2NhdGlvbiB8IHVuZGVmaW5lZD4oKHJlcywgcmVqKSA9PiB7XG4gICAgY29uc3Qgc3ViID0gZ2V0Q3VycmVudFVzZXIoKS5zdWJzY3JpYmUoKHNlc3Npb24pID0+IHtcbiAgICAgIHJlcyhzZXNzaW9uLnNlc3Npb25Mb2NhdGlvbik7XG4gICAgfSwgcmVqKTtcbiAgICBzdWIudW5zdWJzY3JpYmUoKTtcbiAgfSk7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBzZXRTZXNzaW9uTG9jYXRpb24oXG4gIGxvY2F0aW9uVXVpZDogc3RyaW5nLFxuICBhYm9ydENvbnRyb2xsZXI6IEFib3J0Q29udHJvbGxlclxuKTogUHJvbWlzZTxhbnk+IHtcbiAgYXdhaXQgb3Blbm1yc0ZldGNoKHNlc3Npb25FbmRwb2ludCwge1xuICAgIG1ldGhvZDogXCJQT1NUXCIsXG4gICAgYm9keTogeyBzZXNzaW9uTG9jYXRpb246IGxvY2F0aW9uVXVpZCB9LFxuICAgIGhlYWRlcnM6IHtcbiAgICAgIFwiQ29udGVudC1UeXBlXCI6IFwiYXBwbGljYXRpb24vanNvblwiLFxuICAgIH0sXG4gICAgc2lnbmFsOiBhYm9ydENvbnRyb2xsZXIuc2lnbmFsLFxuICB9KTtcblxuICBhd2FpdCByZWZldGNoQ3VycmVudFVzZXIoKTtcbn1cbiJdLCJuYW1lcyI6WyJyZXBvcnRFcnJvciIsImNyZWF0ZUdsb2JhbFN0b3JlIiwiaXNVbmRlZmluZWQiLCJPYnNlcnZhYmxlIiwib3Blbm1yc0ZldGNoIiwic2Vzc2lvbkVuZHBvaW50Iiwic2Vzc2lvblN0b3JlIiwibG9hZGVkIiwic2Vzc2lvbiIsImxhc3RGZXRjaFRpbWVNaWxsaXMiLCJnZXRDdXJyZW50VXNlciIsIm9wdHMiLCJpbmNsdWRlQXV0aFN0YXR1cyIsIkRhdGUiLCJub3ciLCJnZXRTdGF0ZSIsInJlZmV0Y2hDdXJyZW50VXNlciIsInN1YnNjcmliZXIiLCJoYW5kbGVyIiwic3RhdGUiLCJuZXh0IiwidXNlciIsInN1YnNjcmliZSIsImdldFNlc3Npb25TdG9yZSIsInNldFVzZXJMYW5ndWFnZSIsImRhdGEiLCJsb2NhbGUiLCJ1c2VyUHJvcGVydGllcyIsImRlZmF1bHRMb2NhbGUiLCJodG1sTGFuZyIsImRvY3VtZW50IiwiZG9jdW1lbnRFbGVtZW50IiwiZ2V0QXR0cmlidXRlIiwic2V0QXR0cmlidXRlIiwidXNlckhhc1ByaXZpbGVnZSIsInJlcXVpcmVkUHJpdmlsZWdlIiwicHJpdmlsZWdlcyIsImZpbmQiLCJwIiwiZGlzcGxheSIsIkFycmF5IiwiaXNBcnJheSIsImV2ZXJ5IiwicnAiLCJjb25zb2xlIiwiZXJyb3IiLCJpc1N1cGVyVXNlciIsInJvbGVzIiwicm9sZSIsIlByb21pc2UiLCJyZXNvbHZlIiwicmVqZWN0IiwidGhlbiIsInJlcyIsInNldFN0YXRlIiwiY2F0Y2giLCJlcnIiLCJzZXNzaW9uSWQiLCJhdXRoZW50aWNhdGVkIiwiY2xlYXJDdXJyZW50VXNlciIsInVzZXJIYXNBY2Nlc3MiLCJ1bmRlZmluZWQiLCJCb29sZWFuIiwiZ2V0TG9nZ2VkSW5Vc2VyIiwidW5zdWJzY3JpYmUiLCJyZWoiLCJnZXRTZXNzaW9uTG9jYXRpb24iLCJzdWIiLCJzZXNzaW9uTG9jYXRpb24iLCJzZXRTZXNzaW9uTG9jYXRpb24iLCJsb2NhdGlvblV1aWQiLCJhYm9ydENvbnRyb2xsZXIiLCJtZXRob2QiLCJib2R5IiwiaGVhZGVycyIsInNpZ25hbCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../framework/esm-api/src/shared-api-objects/current-user.ts\n");
6503
6492
 
6504
6493
  /***/ }),
6505
6494
 
@@ -6774,7 +6763,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
6774
6763
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
6775
6764
 
6776
6765
  "use strict";
6777
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"attach\": () => (/* binding */ attach),\n/* harmony export */ \"detach\": () => (/* binding */ detach),\n/* harmony export */ \"detachAll\": () => (/* binding */ detachAll),\n/* harmony export */ \"getAssignedExtensions\": () => (/* binding */ getAssignedExtensions),\n/* harmony export */ \"getConnectedExtensions\": () => (/* binding */ getConnectedExtensions),\n/* harmony export */ \"getExtensionNameFromId\": () => (/* binding */ getExtensionNameFromId),\n/* harmony export */ \"getExtensionRegistration\": () => (/* binding */ getExtensionRegistration),\n/* harmony export */ \"getExtensionRegistrationFrom\": () => (/* binding */ getExtensionRegistrationFrom),\n/* harmony export */ \"registerExtension\": () => (/* binding */ registerExtension),\n/* harmony export */ \"registerExtensionSlot\": () => (/* binding */ registerExtensionSlot),\n/* harmony export */ \"reset\": () => (/* binding */ reset)\n/* harmony export */ });\n/* harmony import */ var _openmrs_esm_api__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @openmrs/esm-api */ \"../../framework/esm-api/src/index.ts\");\n/* harmony import */ var _openmrs_esm_config__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @openmrs/esm-config */ \"../../framework/esm-config/src/index.ts\");\n/* harmony import */ var lodash_es_isEqual__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! lodash-es/isEqual */ \"../../../node_modules/lodash-es/isEqual.js\");\n/* harmony import */ var lodash_es_isUndefined__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! lodash-es/isUndefined */ \"../../../node_modules/lodash-es/isUndefined.js\");\n/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! . */ \"../../framework/esm-extensions/src/index.ts\");\n/* harmony import */ var _store__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./store */ \"../../framework/esm-extensions/src/store.ts\");\n/** @module @category Extension */ /*\n * We have the following extension modes:\n *\n * - attached (set via code in form of: attach, detach, ...)\n * - configured (set via configuration in form of: added, removed, ...)\n * - assigned (computed from attached and configured)\n * - connected (computed from assigned using connectivity and online / offline)\n */ function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];\n return arr2;\n}\nfunction _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return _arrayLikeToArray(arr);\n}\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nfunction _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}\nfunction _iterableToArrayLimit(arr, i) {\n var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"];\n if (_i == null) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n var _s, _e;\n try {\n for(_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true){\n _arr.push(_s.value);\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally{\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally{\n if (_d) throw _e;\n }\n }\n return _arr;\n}\nfunction _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nfunction _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nfunction _objectSpread(target) {\n for(var i = 1; i < arguments.length; i++){\n var source = arguments[i] != null ? arguments[i] : {};\n var ownKeys = Object.keys(source);\n if (typeof Object.getOwnPropertySymbols === \"function\") {\n ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {\n return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n }));\n }\n ownKeys.forEach(function(key) {\n _defineProperty(target, key, source[key]);\n });\n }\n return target;\n}\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) {\n symbols = symbols.filter(function(sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n }\n keys.push.apply(keys, symbols);\n }\n return keys;\n}\nfunction _objectSpreadProps(target, source) {\n source = source != null ? source : {};\n if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(Object(source)).forEach(function(key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n return target;\n}\nfunction _slicedToArray(arr, i) {\n return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();\n}\nfunction _toConsumableArray(arr) {\n return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();\n}\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(n);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\n\n\n\n\n\n\nvar extensionInternalStore = (0,___WEBPACK_IMPORTED_MODULE_2__.getExtensionInternalStore)();\nvar extensionStore = (0,_store__WEBPACK_IMPORTED_MODULE_3__.getExtensionStore)();\nvar slotsConfigStore = (0,_openmrs_esm_config__WEBPACK_IMPORTED_MODULE_1__.getExtensionSlotsConfigStore)();\nvar extensionsConfigStore = (0,_openmrs_esm_config__WEBPACK_IMPORTED_MODULE_1__.getExtensionsConfigStore)();\n// Keep the output store updated\nfunction updateExtensionOutputStore(internalState, extensionSlotConfigs, extensionsConfigStore) {\n var slots = {};\n var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;\n try {\n for(var _iterator = Object.entries(internalState.slots)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){\n var _value = _slicedToArray(_step.value, 2), slotName = _value[0], slot = _value[1];\n var config = (0,_openmrs_esm_config__WEBPACK_IMPORTED_MODULE_1__.getExtensionSlotConfigFromStore)(extensionSlotConfigs, slot.name).config;\n var assignedExtensions = getAssignedExtensionsFromSlotData(slotName, internalState, config, extensionsConfigStore);\n slots[slotName] = {\n moduleName: slot.moduleName,\n assignedExtensions: assignedExtensions\n };\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally{\n try {\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n } finally{\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n if (!(0,lodash_es_isEqual__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(extensionStore.getState().slots, slots)) {\n extensionStore.setState({\n slots: slots\n });\n }\n}\nextensionInternalStore.subscribe(function(internalStore) {\n updateExtensionOutputStore(internalStore, slotsConfigStore.getState(), extensionsConfigStore.getState());\n});\nslotsConfigStore.subscribe(function(slotConfigs) {\n updateExtensionOutputStore(extensionInternalStore.getState(), slotConfigs, extensionsConfigStore.getState());\n});\nextensionsConfigStore.subscribe(function(extensionConfigs) {\n updateExtensionOutputStore(extensionInternalStore.getState(), slotsConfigStore.getState(), extensionConfigs);\n});\nfunction createNewExtensionSlotInfo(slotName, moduleName) {\n return {\n moduleName: moduleName,\n name: slotName,\n attachedIds: [],\n config: null\n };\n}\n/**\n * Given an extension ID, which is a string uniquely identifying\n * an instance of an extension within an extension slot, this\n * returns the extension name.\n *\n * @example\n * ```js\n * getExtensionNameFromId(\"foo#bar\")\n * --> \"foo\"\n * getExtensionNameFromId(\"baz\")\n * --> \"baz\"\n * ```\n */ function getExtensionNameFromId(extensionId) {\n var ref = _slicedToArray(extensionId.split(\"#\"), 1), extensionName = ref[0];\n return extensionName;\n}\nfunction getExtensionRegistrationFrom(state, extensionId) {\n var name = getExtensionNameFromId(extensionId);\n return state.extensions[name];\n}\nfunction getExtensionRegistration(extensionId) {\n var state = extensionInternalStore.getState();\n return getExtensionRegistrationFrom(state, extensionId);\n}\n/**\n * Extensions must be registered in order to be rendered.\n * This is handled by the app shell, when extensions are provided\n * via the `setupOpenMRS` return object.\n * @internal\n */ var registerExtension = extensionInternalStore.action(function(state, extensionRegistration) {\n state.extensions[extensionRegistration.name] = _objectSpreadProps(_objectSpread({}, extensionRegistration), {\n instances: []\n });\n});\n/**\n * Attach an extension to an extension slot.\n *\n * This will cause the extension to be rendered into the specified\n * extension slot, unless it is removed by configuration. Using\n * `attach` is an alternative to specifying the `slot` or `slots`\n * in the extension declaration.\n *\n * It is particularly useful when creating a slot into which\n * you want to render an existing extension. This enables you\n * to do so without modifying the extension's declaration, which\n * may be impractical or inappropriate, for example if you are\n * writing a module for a specific implementation.\n *\n * @param slotName a name uniquely identifying the slot\n * @param extensionId an extension name, with an optional #-suffix\n * to distinguish it from other instances of the same extension\n * attached to the same slot.\n */ function attach(slotName, extensionId) {\n (0,_store__WEBPACK_IMPORTED_MODULE_3__.updateInternalExtensionStore)(function(state) {\n var existingSlot = state.slots[slotName];\n if (!existingSlot) {\n return _objectSpreadProps(_objectSpread({}, state), {\n slots: _objectSpreadProps(_objectSpread({}, state.slots), _defineProperty({}, slotName, _objectSpreadProps(_objectSpread({}, createNewExtensionSlotInfo(slotName)), {\n attachedIds: [\n extensionId\n ]\n })))\n });\n } else {\n return _objectSpreadProps(_objectSpread({}, state), {\n slots: _objectSpreadProps(_objectSpread({}, state.slots), _defineProperty({}, slotName, _objectSpreadProps(_objectSpread({}, existingSlot), {\n attachedIds: _toConsumableArray(existingSlot.attachedIds).concat([\n extensionId\n ])\n })))\n });\n }\n });\n}\n/** Avoid using this. Extension attachments should be considered declarative. */ function detach(extensionSlotName, extensionId) {\n (0,_store__WEBPACK_IMPORTED_MODULE_3__.updateInternalExtensionStore)(function(state) {\n var existingSlot = state.slots[extensionSlotName];\n if (existingSlot && existingSlot.attachedIds.includes(extensionId)) {\n return _objectSpreadProps(_objectSpread({}, state), {\n slots: _objectSpreadProps(_objectSpread({}, state.slots), _defineProperty({}, extensionSlotName, _objectSpreadProps(_objectSpread({}, existingSlot), {\n attachedIds: existingSlot.attachedIds.filter(function(id) {\n return id !== extensionId;\n })\n })))\n });\n } else {\n return state;\n }\n });\n}\n/** Avoid using this. Extension attachments should be considered declarative. */ function detachAll(extensionSlotName) {\n (0,_store__WEBPACK_IMPORTED_MODULE_3__.updateInternalExtensionStore)(function(state) {\n var existingSlot = state.slots[extensionSlotName];\n if (existingSlot) {\n return _objectSpreadProps(_objectSpread({}, state), {\n slots: _objectSpreadProps(_objectSpread({}, state.slots), _defineProperty({}, extensionSlotName, _objectSpreadProps(_objectSpread({}, existingSlot), {\n attachedIds: []\n })))\n });\n } else {\n return state;\n }\n });\n}\n/**\n * Get an order index for the extension. This will\n * come from either its configured order, its registered order\n * parameter, or the order in which it happened to be attached.\n */ function getOrder(extensionId, configuredOrder, registeredOrderIndex, attachedOrder) {\n var configuredIndex = configuredOrder.indexOf(extensionId);\n if (configuredIndex !== -1) {\n return configuredIndex;\n } else if (registeredOrderIndex !== undefined) {\n // extensions that don't have a configured order should appear after those that do\n return 1000 + registeredOrderIndex;\n } else {\n var assignedIndex = attachedOrder.indexOf(extensionId);\n if (assignedIndex !== -1) {\n // extensions that have neither a configured nor registered order should appear\n // after all others\n return 2000 + assignedIndex;\n } else {\n return -1;\n }\n }\n}\n/**\n * Filters a list of extensions according to whether they support the\n * current connectivity status.\n *\n * @param assignedExtensions The list of extensions to filter.\n * @param online Whether the app is currently online. If `null`, uses `navigator.onLine`.\n * @returns A list of extensions that should be rendered\n */ function getConnectedExtensions(assignedExtensions) {\n var online = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : null;\n var isOnline = online !== null && online !== void 0 ? online : navigator.onLine;\n return assignedExtensions.filter(function(e) {\n return (0,___WEBPACK_IMPORTED_MODULE_2__.checkStatusFor)(isOnline, e.online, e.offline);\n });\n}\nfunction getAssignedExtensionsFromSlotData(slotName, internalState, config, extensionConfigStoreState) {\n var attachedIds = internalState.slots[slotName].attachedIds;\n var assignedIds = calculateAssignedIds(config, attachedIds);\n var extensions = [];\n var user = undefined;\n var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;\n try {\n for(var _iterator = assignedIds[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){\n var id = _step.value;\n var ref = (0,_openmrs_esm_config__WEBPACK_IMPORTED_MODULE_1__.getExtensionConfigFromStore)(extensionConfigStoreState, slotName, id), extensionConfig = ref.config;\n var name = getExtensionNameFromId(id);\n var extension = internalState.extensions[name];\n // if the extension has not been registered yet, do not include it\n if (extension) {\n var ref1;\n var ref2;\n var requiredPrivileges = (ref2 = extensionConfig === null || extensionConfig === void 0 ? void 0 : (ref1 = extensionConfig[\"Display conditions\"]) === null || ref1 === void 0 ? void 0 : ref1.privileges) !== null && ref2 !== void 0 ? ref2 : extension.privileges;\n if (requiredPrivileges && (typeof requiredPrivileges === \"string\" || Array.isArray(requiredPrivileges) && requiredPrivileges.length > 0)) {\n if ((0,lodash_es_isUndefined__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(user)) {\n var ref3;\n user = (ref3 = (0,_openmrs_esm_api__WEBPACK_IMPORTED_MODULE_0__.getSessionStore)().getState().session) === null || ref3 === void 0 ? void 0 : ref3.user;\n }\n if (!user) {\n continue;\n }\n if (!(0,_openmrs_esm_api__WEBPACK_IMPORTED_MODULE_0__.userHasAccess)(requiredPrivileges, user)) {\n continue;\n }\n }\n extensions.push({\n id: id,\n name: name,\n moduleName: extension.moduleName,\n config: extensionConfig,\n meta: extension.meta,\n online: extension.online,\n offline: extension.offline\n });\n }\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally{\n try {\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n } finally{\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n return extensions;\n}\n/**\n * Gets the list of extensions assigned to a given slot\n *\n * @param slotName The slot to load the assigned extensions for\n * @returns An array of extensions assigned to the named slot\n */ function getAssignedExtensions(slotName) {\n var internalState = extensionInternalStore.getState();\n var ref = (0,_openmrs_esm_config__WEBPACK_IMPORTED_MODULE_1__.getExtensionSlotConfig)(slotName), slotConfig = ref.config;\n var extensionStoreState = extensionsConfigStore.getState();\n return getAssignedExtensionsFromSlotData(slotName, internalState, slotConfig, extensionStoreState);\n}\nfunction calculateAssignedIds(config, attachedIds) {\n var addedIds = config.add || [];\n var removedIds = config.remove || [];\n var idOrder = config.order || [];\n var extensions = extensionInternalStore.getState().extensions;\n return _toConsumableArray(attachedIds).concat(_toConsumableArray(addedIds)).filter(function(id) {\n return !removedIds.includes(id);\n }).sort(function(idA, idB) {\n var ref, ref1;\n var ai = getOrder(idA, idOrder, (ref = extensions[getExtensionNameFromId(idA)]) === null || ref === void 0 ? void 0 : ref.order, attachedIds);\n var bi = getOrder(idB, idOrder, (ref1 = extensions[getExtensionNameFromId(idB)]) === null || ref1 === void 0 ? void 0 : ref1.order, attachedIds);\n if (bi === -1) {\n return -1;\n } else if (ai === -1) {\n return 1;\n } else {\n return ai - bi;\n }\n });\n}\n/**\n * Used by by extension slots at mount time.\n *\n * @param moduleName The name of the module that contains the extension slot\n * @param slotName The extension slot name that is actually used\n * @internal\n */ var registerExtensionSlot = extensionInternalStore.action(function(state, moduleName, slotName) {\n var ref;\n var existingModuleName = (ref = state.slots[slotName]) === null || ref === void 0 ? void 0 : ref.moduleName;\n if (existingModuleName && existingModuleName != moduleName) {\n console.warn(\"An extension slot with the name '\".concat(slotName, '\\' already exists. Refusing to register the same slot name twice (in \"registerExtensionSlot\"). The existing one is from module ').concat(existingModuleName, \".\"));\n return state;\n }\n if (existingModuleName && existingModuleName == moduleName) {\n // Re-rendering an existing slot\n return state;\n }\n if (state.slots[slotName]) {\n return _objectSpreadProps(_objectSpread({}, state), {\n slots: _objectSpreadProps(_objectSpread({}, state.slots), _defineProperty({}, slotName, _objectSpreadProps(_objectSpread({}, state.slots[slotName]), {\n moduleName: moduleName\n })))\n });\n }\n var slot = createNewExtensionSlotInfo(slotName, moduleName);\n return _objectSpreadProps(_objectSpread({}, state), {\n slots: _objectSpreadProps(_objectSpread({}, state.slots), _defineProperty({}, slotName, slot))\n });\n});\n/**\n * @internal\n * Just for testing.\n */ var reset = extensionStore.action(function() {\n return {\n slots: {},\n extensions: {}\n };\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vZnJhbWV3b3JrL2VzbS1leHRlbnNpb25zL3NyYy9leHRlbnNpb25zLnRzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsZ0NBQWdDLEdBQ2hDOzs7Ozs7O0NBT0MsR0FFRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBZ0Y7QUFVbkQ7QUFDVztBQUNRO0FBT3JDO0FBT007QUFFakIsSUFBTWEseUJBQXlCSiw0REFBeUJBO0FBQ3hELElBQU1LLGlCQUFpQkgseURBQWlCQTtBQUN4QyxJQUFNSSxtQkFBbUJULGlGQUE0QkE7QUFDckQsSUFBTVUsd0JBQXdCYiw2RUFBd0JBO0FBRXRELGdDQUFnQztBQUNoQyxTQUFTYywyQkFDUEMsYUFBcUMsRUFDckNDLG9CQUErQyxFQUMvQ0gscUJBQTRDLEVBQzVDO0lBQ0EsSUFBTUksUUFBNEMsQ0FBQztRQUM5Qzs7UUFBTCxRQUFLLFlBQXdCQyxPQUFPQyxPQUFPLENBQUNKLGNBQWNFLEtBQUssc0JBQTFELHdHQUE2RDtZQUE3RCw2Q0FBS0csc0JBQVVDO1lBQ2xCLElBQU0sU0FBYW5CLG9GQUErQkEsQ0FDaERjLHNCQUNBSyxLQUFLRSxJQUFJLEVBRkhEO1lBSVIsSUFBTUUscUJBQXFCQyxrQ0FDekJMLFVBQ0FMLGVBQ0FPLFFBQ0FUO1lBRUZJLEtBQUssQ0FBQ0csU0FBUyxHQUFHO2dCQUFFTSxZQUFZTCxLQUFLSyxVQUFVO2dCQUFFRixvQkFBQUE7WUFBbUI7UUFDdEU7O1FBWks7UUFBQTs7O2lCQUFBO2dCQUFBOzs7Z0JBQUE7c0JBQUE7Ozs7SUFhTCxJQUFJLENBQUNwQiw2REFBT0EsQ0FBQ08sZUFBZWdCLFFBQVEsR0FBR1YsS0FBSyxFQUFFQSxRQUFRO1FBQ3BETixlQUFlaUIsUUFBUSxDQUFDO1lBQUVYLE9BQUFBO1FBQU07SUFDbEMsQ0FBQztBQUNIO0FBRUFQLHVCQUF1Qm1CLFNBQVMsQ0FBQyxTQUFDQyxlQUFrQjtJQUNsRGhCLDJCQUNFZ0IsZUFDQWxCLGlCQUFpQmUsUUFBUSxJQUN6QmQsc0JBQXNCYyxRQUFRO0FBRWxDO0FBRUFmLGlCQUFpQmlCLFNBQVMsQ0FBQyxTQUFDRSxhQUFnQjtJQUMxQ2pCLDJCQUNFSix1QkFBdUJpQixRQUFRLElBQy9CSSxhQUNBbEIsc0JBQXNCYyxRQUFRO0FBRWxDO0FBRUFkLHNCQUFzQmdCLFNBQVMsQ0FBQyxTQUFDRyxrQkFBcUI7SUFDcERsQiwyQkFDRUosdUJBQXVCaUIsUUFBUSxJQUMvQmYsaUJBQWlCZSxRQUFRLElBQ3pCSztBQUVKO0FBRUEsU0FBU0MsMkJBQ1BiLFFBQWdCLEVBQ2hCTSxVQUFtQixFQUNBO0lBQ25CLE9BQU87UUFDTEEsWUFBQUE7UUFDQUgsTUFBTUg7UUFDTmMsYUFBYSxFQUFFO1FBQ2ZaLFFBQVEsSUFBSTtJQUNkO0FBQ0Y7QUFFQTs7Ozs7Ozs7Ozs7O0NBWUMsR0FDTSxTQUFTYSx1QkFBdUJDLFdBQW1CLEVBQUU7SUFDMUQsSUFBd0JBLHFCQUFBQSxZQUFZQyxLQUFLLENBQUMsVUFBbkNDLGdCQUFpQkY7SUFDeEIsT0FBT0U7QUFDVCxDQUFDO0FBRU0sU0FBU0MsNkJBQ2RDLEtBQTZCLEVBQzdCSixXQUFtQixFQUNnQjtJQUNuQyxJQUFNYixPQUFPWSx1QkFBdUJDO0lBQ3BDLE9BQU9JLE1BQU1DLFVBQVUsQ0FBQ2xCLEtBQUs7QUFDL0IsQ0FBQztBQUVNLFNBQVNtQix5QkFDZE4sV0FBbUIsRUFDZ0I7SUFDbkMsSUFBTUksUUFBUTlCLHVCQUF1QmlCLFFBQVE7SUFDN0MsT0FBT1ksNkJBQTZCQyxPQUFPSjtBQUM3QyxDQUFDO0FBRUQ7Ozs7O0NBS0MsR0FDTSxJQUFNTyxvQkFFRGpDLHVCQUF1QmtDLE1BQU0sQ0FDdkMsU0FBQ0osT0FBT0ssdUJBQWlEO0lBQ3ZETCxNQUFNQyxVQUFVLENBQUNJLHNCQUFzQnRCLElBQUksQ0FBQyxHQUFHLHFDQUMxQ3NCO1FBQ0hDLFdBQVcsRUFBRTs7QUFFakIsR0FDQTtBQUVGOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Q0FrQkMsR0FDTSxTQUFTQyxPQUFPM0IsUUFBZ0IsRUFBRWdCLFdBQW1CLEVBQUU7SUFDNUQzQixvRUFBNEJBLENBQUMsU0FBQytCLE9BQVU7UUFDdEMsSUFBTVEsZUFBZVIsTUFBTXZCLEtBQUssQ0FBQ0csU0FBUztRQUUxQyxJQUFJLENBQUM0QixjQUFjO1lBQ2pCLE9BQU8scUNBQ0ZSO2dCQUNIdkIsT0FBTyxxQ0FDRnVCLE1BQU12QixLQUFLLEdBQ2Qsb0JBQUNHLFVBQVcscUNBQ1BhLDJCQUEyQmI7b0JBQzlCYyxhQUFhO3dCQUFDRTtxQkFBWTs7O1FBSWxDLE9BQU87WUFDTCxPQUFPLHFDQUNGSTtnQkFDSHZCLE9BQU8scUNBQ0Z1QixNQUFNdkIsS0FBSyxHQUNkLG9CQUFDRyxVQUFXLHFDQUNQNEI7b0JBQ0hkLGFBQWEsbUJBQUljLGFBQWFkLFdBQVcsU0FBNUI7d0JBQThCRTtxQkFBWTs7O1FBSS9ELENBQUM7SUFDSDtBQUNGLENBQUM7QUFFRCw4RUFBOEUsR0FDdkUsU0FBU2EsT0FBT0MsaUJBQXlCLEVBQUVkLFdBQW1CLEVBQUU7SUFDckUzQixvRUFBNEJBLENBQUMsU0FBQytCLE9BQVU7UUFDdEMsSUFBTVEsZUFBZVIsTUFBTXZCLEtBQUssQ0FBQ2lDLGtCQUFrQjtRQUVuRCxJQUFJRixnQkFBZ0JBLGFBQWFkLFdBQVcsQ0FBQ2lCLFFBQVEsQ0FBQ2YsY0FBYztZQUNsRSxPQUFPLHFDQUNGSTtnQkFDSHZCLE9BQU8scUNBQ0Z1QixNQUFNdkIsS0FBSyxHQUNkLG9CQUFDaUMsbUJBQW9CLHFDQUNoQkY7b0JBQ0hkLGFBQWFjLGFBQWFkLFdBQVcsQ0FBQ2tCLE1BQU0sQ0FDMUMsU0FBQ0M7K0JBQU9BLE9BQU9qQjs7OztRQUt6QixPQUFPO1lBQ0wsT0FBT0k7UUFDVCxDQUFDO0lBQ0g7QUFDRixDQUFDO0FBRUQsOEVBQThFLEdBQ3ZFLFNBQVNjLFVBQVVKLGlCQUF5QixFQUFFO0lBQ25EekMsb0VBQTRCQSxDQUFDLFNBQUMrQixPQUFVO1FBQ3RDLElBQU1RLGVBQWVSLE1BQU12QixLQUFLLENBQUNpQyxrQkFBa0I7UUFFbkQsSUFBSUYsY0FBYztZQUNoQixPQUFPLHFDQUNGUjtnQkFDSHZCLE9BQU8scUNBQ0Z1QixNQUFNdkIsS0FBSyxHQUNkLG9CQUFDaUMsbUJBQW9CLHFDQUNoQkY7b0JBQ0hkLGFBQWEsRUFBRTs7O1FBSXZCLE9BQU87WUFDTCxPQUFPTTtRQUNULENBQUM7SUFDSDtBQUNGLENBQUM7QUFFRDs7OztDQUlDLEdBQ0QsU0FBU2UsU0FDUG5CLFdBQW1CLEVBQ25Cb0IsZUFBOEIsRUFDOUJDLG9CQUF3QyxFQUN4Q0MsYUFBNEIsRUFDNUI7SUFDQSxJQUFNQyxrQkFBa0JILGdCQUFnQkksT0FBTyxDQUFDeEI7SUFDaEQsSUFBSXVCLG9CQUFvQixDQUFDLEdBQUc7UUFDMUIsT0FBT0E7SUFDVCxPQUFPLElBQUlGLHlCQUF5QkksV0FBVztRQUM3QyxrRkFBa0Y7UUFDbEYsT0FBTyxPQUFPSjtJQUNoQixPQUFPO1FBQ0wsSUFBTUssZ0JBQWdCSixjQUFjRSxPQUFPLENBQUN4QjtRQUM1QyxJQUFJMEIsa0JBQWtCLENBQUMsR0FBRztZQUN4QiwrRUFBK0U7WUFDL0UsbUJBQW1CO1lBQ25CLE9BQU8sT0FBT0E7UUFDaEIsT0FBTztZQUNMLE9BQU8sQ0FBQztRQUNWLENBQUM7SUFDSCxDQUFDO0FBQ0g7QUFFQTs7Ozs7OztDQU9DLEdBQ00sU0FBU0MsdUJBQ2R2QyxrQkFBNEMsRUFFakI7UUFEM0J3QyxTQUFBQSxpRUFBeUIsSUFBSTtJQUU3QixJQUFNQyxXQUFXRCxtQkFBQUEsb0JBQUFBLFNBQVVFLFVBQVVDLE1BQU07SUFDM0MsT0FBTzNDLG1CQUFtQjRCLE1BQU0sQ0FBQyxTQUFDZ0I7ZUFDaEM3RCxpREFBY0EsQ0FBQzBELFVBQVVHLEVBQUVKLE1BQU0sRUFBRUksRUFBRUMsT0FBTzs7QUFFaEQsQ0FBQztBQUVELFNBQVM1QyxrQ0FDUEwsUUFBZ0IsRUFDaEJMLGFBQXFDLEVBQ3JDTyxNQUFpQyxFQUNqQ2dELHlCQUFnRCxFQUN0QjtJQUMxQixJQUFNcEMsY0FBY25CLGNBQWNFLEtBQUssQ0FBQ0csU0FBUyxDQUFDYyxXQUFXO0lBQzdELElBQU1xQyxjQUFjQyxxQkFBcUJsRCxRQUFRWTtJQUNqRCxJQUFNTyxhQUF1QyxFQUFFO0lBQy9DLElBQUlnQyxPQUFpQ1o7UUFFaEM7O1FBQUwsUUFBSyxZQUFVVSxnQ0FBVix3R0FBdUI7WUFBdkIsSUFBSWxCLEtBQUo7WUFDSCxJQUFvQ3RELE1BQUFBLGdGQUEyQkEsQ0FDN0R1RSwyQkFDQWxELFVBQ0FpQyxLQUhNL0Isa0JBQTRCdkIsSUFBNUJ1QjtZQUtSLElBQU1DLE9BQU9ZLHVCQUF1QmtCO1lBQ3BDLElBQU1zQixZQUFZNUQsY0FBYzBCLFVBQVUsQ0FBQ2xCLEtBQUs7WUFDaEQsa0VBQWtFO1lBQ2xFLElBQUlvRCxXQUFXO29CQUVYRDtvQkFBQUE7Z0JBREYsSUFBTUUscUJBQ0pGLENBQUFBLE9BQUFBLDRCQUFBQSw2QkFBQUEsS0FBQUEsSUFBQUEsQ0FBQUEsT0FBQUEsZUFBaUIsQ0FBQyxxQkFBcUIsY0FBdkNBLGtCQUFBQSxLQUFBQSxJQUFBQSxLQUF5Q0csVUFBRixjQUF2Q0gsa0JBQUFBLE9BQ0FDLFVBQVVFLFVBQVU7Z0JBQ3RCLElBQ0VELHNCQUNDLFFBQU9BLHVCQUF1QixZQUM1QkUsTUFBTUMsT0FBTyxDQUFDSCx1QkFBdUJBLG1CQUFtQkksTUFBTSxHQUFHLENBQUMsR0FDckU7b0JBQ0EsSUFBSTNFLGlFQUFXQSxDQUFDb0UsT0FBTzs0QkFDZDVFO3dCQUFQNEUsT0FBTzVFLENBQUFBLE9BQUFBLGlFQUFlQSxHQUFHOEIsUUFBUSxHQUFHc0QsT0FBTyxjQUFwQ3BGLGtCQUFBQSxLQUFBQSxJQUFBQSxLQUFzQzRFLElBQUk7b0JBQ25ELENBQUM7b0JBRUQsSUFBSSxDQUFDQSxNQUFNO3dCQUNULFFBQVM7b0JBQ1gsQ0FBQztvQkFFRCxJQUFJLENBQUMzRSwrREFBYUEsQ0FBQzhFLG9CQUFvQkgsT0FBTzt3QkFDNUMsUUFBUztvQkFDWCxDQUFDO2dCQUNILENBQUM7Z0JBRURoQyxXQUFXeUMsSUFBSSxDQUFDO29CQUNkN0IsSUFBQUE7b0JBQ0E5QixNQUFBQTtvQkFDQUcsWUFBWWlELFVBQVVqRCxVQUFVO29CQUNoQ0osUUFBUW9EO29CQUNSUyxNQUFNUixVQUFVUSxJQUFJO29CQUNwQm5CLFFBQVFXLFVBQVVYLE1BQU07b0JBQ3hCSyxTQUFTTSxVQUFVTixPQUFPO2dCQUM1QjtZQUNGLENBQUM7UUFDSDs7UUF6Q0s7UUFBQTs7O2lCQUFBO2dCQUFBOzs7Z0JBQUE7c0JBQUE7Ozs7SUEyQ0wsT0FBTzVCO0FBQ1Q7QUFFQTs7Ozs7Q0FLQyxHQUNNLFNBQVMyQyxzQkFDZGhFLFFBQWdCLEVBQ1U7SUFDMUIsSUFBTUwsZ0JBQWdCTCx1QkFBdUJpQixRQUFRO0lBQ3JELElBQStCMUIsTUFBQUEsMkVBQXNCQSxDQUFDbUIsV0FBOUNFLGFBQXVCckIsSUFBdkJxQjtJQUNSLElBQU1nRSxzQkFBc0J6RSxzQkFBc0JjLFFBQVE7SUFDMUQsT0FBT0Ysa0NBQ0xMLFVBQ0FMLGVBQ0FzRSxZQUNBQztBQUVKLENBQUM7QUFFRCxTQUFTZCxxQkFDUGxELE1BQWlDLEVBQ2pDWSxXQUEwQixFQUMxQjtJQUNBLElBQU1xRCxXQUFXakUsT0FBT2tFLEdBQUcsSUFBSSxFQUFFO0lBQ2pDLElBQU1DLGFBQWFuRSxPQUFPb0UsTUFBTSxJQUFJLEVBQUU7SUFDdEMsSUFBTUMsVUFBVXJFLE9BQU9zRSxLQUFLLElBQUksRUFBRTtJQUNsQyxJQUFNLGFBQWlCbEYsdUJBQXVCaUIsUUFBUSxHQUE5Q2M7SUFFUixPQUFPLG1CQUFJUCxvQkFBYSxtQkFBR3FELFdBQ3hCbkMsTUFBTSxDQUFDLFNBQUNDO2VBQU8sQ0FBQ29DLFdBQVd0QyxRQUFRLENBQUNFO09BQ3BDd0MsSUFBSSxDQUFDLFNBQUNDLEtBQUtDLEtBQVE7WUFJaEJ0RCxLQU1BQTtRQVRGLElBQU11RCxLQUFLekMsU0FDVHVDLEtBQ0FILFNBQ0FsRCxDQUFBQSxNQUFBQSxVQUFVLENBQUNOLHVCQUF1QjJELEtBQUssY0FBdkNyRCxpQkFBQUEsS0FBQUEsSUFBQUEsSUFBeUNtRCxLQUFLLEVBQzlDMUQ7UUFFRixJQUFNK0QsS0FBSzFDLFNBQ1R3QyxLQUNBSixTQUNBbEQsQ0FBQUEsT0FBQUEsVUFBVSxDQUFDTix1QkFBdUI0RCxLQUFLLGNBQXZDdEQsa0JBQUFBLEtBQUFBLElBQUFBLEtBQXlDbUQsS0FBSyxFQUM5QzFEO1FBR0YsSUFBSStELE9BQU8sQ0FBQyxHQUFHO1lBQ2IsT0FBTyxDQUFDO1FBQ1YsT0FBTyxJQUFJRCxPQUFPLENBQUMsR0FBRztZQUNwQixPQUFPO1FBQ1QsT0FBTztZQUNMLE9BQU9BLEtBQUtDO1FBQ2QsQ0FBQztJQUNIO0FBQ0o7QUFFQTs7Ozs7O0NBTUMsR0FDTSxJQUFNQyx3QkFHRHhGLHVCQUF1QmtDLE1BQU0sQ0FBQyxTQUFDSixPQUFPZCxZQUFZTixVQUFhO1FBQzlDb0I7SUFBM0IsSUFBTTJELHFCQUFxQjNELENBQUFBLE1BQUFBLE1BQU12QixLQUFLLENBQUNHLFNBQVMsY0FBckJvQixpQkFBQUEsS0FBQUEsSUFBQUEsSUFBdUJkLFVBQVU7SUFDNUQsSUFBSXlFLHNCQUFzQkEsc0JBQXNCekUsWUFBWTtRQUMxRDBFLFFBQVFDLElBQUksQ0FDVixvQ0FBNktGLE9BQXpJL0UsVUFBUyxtSUFBbUosT0FBbkIrRSxvQkFBbUI7UUFFbE0sT0FBTzNEO0lBQ1QsQ0FBQztJQUNELElBQUkyRCxzQkFBc0JBLHNCQUFzQnpFLFlBQVk7UUFDMUQsZ0NBQWdDO1FBQ2hDLE9BQU9jO0lBQ1QsQ0FBQztJQUNELElBQUlBLE1BQU12QixLQUFLLENBQUNHLFNBQVMsRUFBRTtRQUN6QixPQUFPLHFDQUNGb0I7WUFDSHZCLE9BQU8scUNBQ0Z1QixNQUFNdkIsS0FBSyxHQUNkLG9CQUFDRyxVQUFXLHFDQUNQb0IsTUFBTXZCLEtBQUssQ0FBQ0csU0FBUztnQkFDeEJNLFlBQUFBOzs7SUFJUixDQUFDO0lBQ0QsSUFBTUwsT0FBT1ksMkJBQTJCYixVQUFVTTtJQUNsRCxPQUFPLHFDQUNGYztRQUNIdkIsT0FBTyxxQ0FDRnVCLE1BQU12QixLQUFLLEdBQ2Qsb0JBQUNHLFVBQVdDOztBQUdsQixHQUFHO0FBRUg7OztDQUdDLEdBQ00sSUFBTWlGLFFBQW9CM0YsZUFBZWlDLE1BQU0sQ0FBQyxXQUFNO0lBQzNELE9BQU87UUFDTDNCLE9BQU8sQ0FBQztRQUNSd0IsWUFBWSxDQUFDO0lBQ2Y7QUFDRixHQUFHIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vQG9wZW5tcnMvZXNtLWFwcC1zaGVsbC8uLi8uLi9mcmFtZXdvcmsvZXNtLWV4dGVuc2lvbnMvc3JjL2V4dGVuc2lvbnMudHM/NzU5YSJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiogQG1vZHVsZSBAY2F0ZWdvcnkgRXh0ZW5zaW9uICovXG4vKlxuICogV2UgaGF2ZSB0aGUgZm9sbG93aW5nIGV4dGVuc2lvbiBtb2RlczpcbiAqXG4gKiAtIGF0dGFjaGVkIChzZXQgdmlhIGNvZGUgaW4gZm9ybSBvZjogYXR0YWNoLCBkZXRhY2gsIC4uLilcbiAqIC0gY29uZmlndXJlZCAoc2V0IHZpYSBjb25maWd1cmF0aW9uIGluIGZvcm0gb2Y6IGFkZGVkLCByZW1vdmVkLCAuLi4pXG4gKiAtIGFzc2lnbmVkIChjb21wdXRlZCBmcm9tIGF0dGFjaGVkIGFuZCBjb25maWd1cmVkKVxuICogLSBjb25uZWN0ZWQgKGNvbXB1dGVkIGZyb20gYXNzaWduZWQgdXNpbmcgY29ubmVjdGl2aXR5IGFuZCBvbmxpbmUgLyBvZmZsaW5lKVxuICovXG5cbmltcG9ydCB7IGdldFNlc3Npb25TdG9yZSwgTG9nZ2VkSW5Vc2VyLCB1c2VySGFzQWNjZXNzIH0gZnJvbSBcIkBvcGVubXJzL2VzbS1hcGlcIjtcbmltcG9ydCB7XG4gIEV4dGVuc2lvbnNDb25maWdTdG9yZSxcbiAgRXh0ZW5zaW9uU2xvdENvbmZpZ09iamVjdCxcbiAgRXh0ZW5zaW9uU2xvdHNDb25maWdTdG9yZSxcbiAgZ2V0RXh0ZW5zaW9uQ29uZmlnRnJvbVN0b3JlLFxuICBnZXRFeHRlbnNpb25zQ29uZmlnU3RvcmUsXG4gIGdldEV4dGVuc2lvblNsb3RDb25maWcsXG4gIGdldEV4dGVuc2lvblNsb3RDb25maWdGcm9tU3RvcmUsXG4gIGdldEV4dGVuc2lvblNsb3RzQ29uZmlnU3RvcmUsXG59IGZyb20gXCJAb3Blbm1ycy9lc20tY29uZmlnXCI7XG5pbXBvcnQgaXNFcXVhbCBmcm9tIFwibG9kYXNoLWVzL2lzRXF1YWxcIjtcbmltcG9ydCBpc1VuZGVmaW5lZCBmcm9tIFwibG9kYXNoLWVzL2lzVW5kZWZpbmVkXCI7XG5pbXBvcnQge1xuICBnZXRFeHRlbnNpb25JbnRlcm5hbFN0b3JlLFxuICBFeHRlbnNpb25TbG90U3RhdGUsXG4gIEFzc2lnbmVkRXh0ZW5zaW9uLFxuICBjaGVja1N0YXR1c0ZvcixcbiAgQ29ubmVjdGVkRXh0ZW5zaW9uLFxufSBmcm9tIFwiLlwiO1xuaW1wb3J0IHtcbiAgRXh0ZW5zaW9uUmVnaXN0cmF0aW9uLFxuICBFeHRlbnNpb25TbG90SW5mbyxcbiAgRXh0ZW5zaW9uSW50ZXJuYWxTdG9yZSxcbiAgZ2V0RXh0ZW5zaW9uU3RvcmUsXG4gIHVwZGF0ZUludGVybmFsRXh0ZW5zaW9uU3RvcmUsXG59IGZyb20gXCIuL3N0b3JlXCI7XG5cbmNvbnN0IGV4dGVuc2lvbkludGVybmFsU3RvcmUgPSBnZXRFeHRlbnNpb25JbnRlcm5hbFN0b3JlKCk7XG5jb25zdCBleHRlbnNpb25TdG9yZSA9IGdldEV4dGVuc2lvblN0b3JlKCk7XG5jb25zdCBzbG90c0NvbmZpZ1N0b3JlID0gZ2V0RXh0ZW5zaW9uU2xvdHNDb25maWdTdG9yZSgpO1xuY29uc3QgZXh0ZW5zaW9uc0NvbmZpZ1N0b3JlID0gZ2V0RXh0ZW5zaW9uc0NvbmZpZ1N0b3JlKCk7XG5cbi8vIEtlZXAgdGhlIG91dHB1dCBzdG9yZSB1cGRhdGVkXG5mdW5jdGlvbiB1cGRhdGVFeHRlbnNpb25PdXRwdXRTdG9yZShcbiAgaW50ZXJuYWxTdGF0ZTogRXh0ZW5zaW9uSW50ZXJuYWxTdG9yZSxcbiAgZXh0ZW5zaW9uU2xvdENvbmZpZ3M6IEV4dGVuc2lvblNsb3RzQ29uZmlnU3RvcmUsXG4gIGV4dGVuc2lvbnNDb25maWdTdG9yZTogRXh0ZW5zaW9uc0NvbmZpZ1N0b3JlXG4pIHtcbiAgY29uc3Qgc2xvdHM6IFJlY29yZDxzdHJpbmcsIEV4dGVuc2lvblNsb3RTdGF0ZT4gPSB7fTtcbiAgZm9yIChsZXQgW3Nsb3ROYW1lLCBzbG90XSBvZiBPYmplY3QuZW50cmllcyhpbnRlcm5hbFN0YXRlLnNsb3RzKSkge1xuICAgIGNvbnN0IHsgY29uZmlnIH0gPSBnZXRFeHRlbnNpb25TbG90Q29uZmlnRnJvbVN0b3JlKFxuICAgICAgZXh0ZW5zaW9uU2xvdENvbmZpZ3MsXG4gICAgICBzbG90Lm5hbWVcbiAgICApO1xuICAgIGNvbnN0IGFzc2lnbmVkRXh0ZW5zaW9ucyA9IGdldEFzc2lnbmVkRXh0ZW5zaW9uc0Zyb21TbG90RGF0YShcbiAgICAgIHNsb3ROYW1lLFxuICAgICAgaW50ZXJuYWxTdGF0ZSxcbiAgICAgIGNvbmZpZyxcbiAgICAgIGV4dGVuc2lvbnNDb25maWdTdG9yZVxuICAgICk7XG4gICAgc2xvdHNbc2xvdE5hbWVdID0geyBtb2R1bGVOYW1lOiBzbG90Lm1vZHVsZU5hbWUsIGFzc2lnbmVkRXh0ZW5zaW9ucyB9O1xuICB9XG4gIGlmICghaXNFcXVhbChleHRlbnNpb25TdG9yZS5nZXRTdGF0ZSgpLnNsb3RzLCBzbG90cykpIHtcbiAgICBleHRlbnNpb25TdG9yZS5zZXRTdGF0ZSh7IHNsb3RzIH0pO1xuICB9XG59XG5cbmV4dGVuc2lvbkludGVybmFsU3RvcmUuc3Vic2NyaWJlKChpbnRlcm5hbFN0b3JlKSA9PiB7XG4gIHVwZGF0ZUV4dGVuc2lvbk91dHB1dFN0b3JlKFxuICAgIGludGVybmFsU3RvcmUsXG4gICAgc2xvdHNDb25maWdTdG9yZS5nZXRTdGF0ZSgpLFxuICAgIGV4dGVuc2lvbnNDb25maWdTdG9yZS5nZXRTdGF0ZSgpXG4gICk7XG59KTtcblxuc2xvdHNDb25maWdTdG9yZS5zdWJzY3JpYmUoKHNsb3RDb25maWdzKSA9PiB7XG4gIHVwZGF0ZUV4dGVuc2lvbk91dHB1dFN0b3JlKFxuICAgIGV4dGVuc2lvbkludGVybmFsU3RvcmUuZ2V0U3RhdGUoKSxcbiAgICBzbG90Q29uZmlncyxcbiAgICBleHRlbnNpb25zQ29uZmlnU3RvcmUuZ2V0U3RhdGUoKVxuICApO1xufSk7XG5cbmV4dGVuc2lvbnNDb25maWdTdG9yZS5zdWJzY3JpYmUoKGV4dGVuc2lvbkNvbmZpZ3MpID0+IHtcbiAgdXBkYXRlRXh0ZW5zaW9uT3V0cHV0U3RvcmUoXG4gICAgZXh0ZW5zaW9uSW50ZXJuYWxTdG9yZS5nZXRTdGF0ZSgpLFxuICAgIHNsb3RzQ29uZmlnU3RvcmUuZ2V0U3RhdGUoKSxcbiAgICBleHRlbnNpb25Db25maWdzXG4gICk7XG59KTtcblxuZnVuY3Rpb24gY3JlYXRlTmV3RXh0ZW5zaW9uU2xvdEluZm8oXG4gIHNsb3ROYW1lOiBzdHJpbmcsXG4gIG1vZHVsZU5hbWU/OiBzdHJpbmdcbik6IEV4dGVuc2lvblNsb3RJbmZvIHtcbiAgcmV0dXJuIHtcbiAgICBtb2R1bGVOYW1lLFxuICAgIG5hbWU6IHNsb3ROYW1lLFxuICAgIGF0dGFjaGVkSWRzOiBbXSxcbiAgICBjb25maWc6IG51bGwsXG4gIH07XG59XG5cbi8qKlxuICogR2l2ZW4gYW4gZXh0ZW5zaW9uIElELCB3aGljaCBpcyBhIHN0cmluZyB1bmlxdWVseSBpZGVudGlmeWluZ1xuICogYW4gaW5zdGFuY2Ugb2YgYW4gZXh0ZW5zaW9uIHdpdGhpbiBhbiBleHRlbnNpb24gc2xvdCwgdGhpc1xuICogcmV0dXJucyB0aGUgZXh0ZW5zaW9uIG5hbWUuXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYGpzXG4gKiBnZXRFeHRlbnNpb25OYW1lRnJvbUlkKFwiZm9vI2JhclwiKVxuICogIC0tPiBcImZvb1wiXG4gKiBnZXRFeHRlbnNpb25OYW1lRnJvbUlkKFwiYmF6XCIpXG4gKiAgLS0+IFwiYmF6XCJcbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0RXh0ZW5zaW9uTmFtZUZyb21JZChleHRlbnNpb25JZDogc3RyaW5nKSB7XG4gIGNvbnN0IFtleHRlbnNpb25OYW1lXSA9IGV4dGVuc2lvbklkLnNwbGl0KFwiI1wiKTtcbiAgcmV0dXJuIGV4dGVuc2lvbk5hbWU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRFeHRlbnNpb25SZWdpc3RyYXRpb25Gcm9tKFxuICBzdGF0ZTogRXh0ZW5zaW9uSW50ZXJuYWxTdG9yZSxcbiAgZXh0ZW5zaW9uSWQ6IHN0cmluZ1xuKTogRXh0ZW5zaW9uUmVnaXN0cmF0aW9uIHwgdW5kZWZpbmVkIHtcbiAgY29uc3QgbmFtZSA9IGdldEV4dGVuc2lvbk5hbWVGcm9tSWQoZXh0ZW5zaW9uSWQpO1xuICByZXR1cm4gc3RhdGUuZXh0ZW5zaW9uc1tuYW1lXTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEV4dGVuc2lvblJlZ2lzdHJhdGlvbihcbiAgZXh0ZW5zaW9uSWQ6IHN0cmluZ1xuKTogRXh0ZW5zaW9uUmVnaXN0cmF0aW9uIHwgdW5kZWZpbmVkIHtcbiAgY29uc3Qgc3RhdGUgPSBleHRlbnNpb25JbnRlcm5hbFN0b3JlLmdldFN0YXRlKCk7XG4gIHJldHVybiBnZXRFeHRlbnNpb25SZWdpc3RyYXRpb25Gcm9tKHN0YXRlLCBleHRlbnNpb25JZCk7XG59XG5cbi8qKlxuICogRXh0ZW5zaW9ucyBtdXN0IGJlIHJlZ2lzdGVyZWQgaW4gb3JkZXIgdG8gYmUgcmVuZGVyZWQuXG4gKiBUaGlzIGlzIGhhbmRsZWQgYnkgdGhlIGFwcCBzaGVsbCwgd2hlbiBleHRlbnNpb25zIGFyZSBwcm92aWRlZFxuICogdmlhIHRoZSBgc2V0dXBPcGVuTVJTYCByZXR1cm4gb2JqZWN0LlxuICogQGludGVybmFsXG4gKi9cbmV4cG9ydCBjb25zdCByZWdpc3RlckV4dGVuc2lvbjogKFxuICBleHRlbnNpb25SZWdpc3RyYXRpb246IEV4dGVuc2lvblJlZ2lzdHJhdGlvblxuKSA9PiB2b2lkID0gZXh0ZW5zaW9uSW50ZXJuYWxTdG9yZS5hY3Rpb24oXG4gIChzdGF0ZSwgZXh0ZW5zaW9uUmVnaXN0cmF0aW9uOiBFeHRlbnNpb25SZWdpc3RyYXRpb24pID0+IHtcbiAgICBzdGF0ZS5leHRlbnNpb25zW2V4dGVuc2lvblJlZ2lzdHJhdGlvbi5uYW1lXSA9IHtcbiAgICAgIC4uLmV4dGVuc2lvblJlZ2lzdHJhdGlvbixcbiAgICAgIGluc3RhbmNlczogW10sXG4gICAgfTtcbiAgfVxuKTtcblxuLyoqXG4gKiBBdHRhY2ggYW4gZXh0ZW5zaW9uIHRvIGFuIGV4dGVuc2lvbiBzbG90LlxuICpcbiAqIFRoaXMgd2lsbCBjYXVzZSB0aGUgZXh0ZW5zaW9uIHRvIGJlIHJlbmRlcmVkIGludG8gdGhlIHNwZWNpZmllZFxuICogZXh0ZW5zaW9uIHNsb3QsIHVubGVzcyBpdCBpcyByZW1vdmVkIGJ5IGNvbmZpZ3VyYXRpb24uIFVzaW5nXG4gKiBgYXR0YWNoYCBpcyBhbiBhbHRlcm5hdGl2ZSB0byBzcGVjaWZ5aW5nIHRoZSBgc2xvdGAgb3IgYHNsb3RzYFxuICogaW4gdGhlIGV4dGVuc2lvbiBkZWNsYXJhdGlvbi5cbiAqXG4gKiBJdCBpcyBwYXJ0aWN1bGFybHkgdXNlZnVsIHdoZW4gY3JlYXRpbmcgYSBzbG90IGludG8gd2hpY2hcbiAqIHlvdSB3YW50IHRvIHJlbmRlciBhbiBleGlzdGluZyBleHRlbnNpb24uIFRoaXMgZW5hYmxlcyB5b3VcbiAqIHRvIGRvIHNvIHdpdGhvdXQgbW9kaWZ5aW5nIHRoZSBleHRlbnNpb24ncyBkZWNsYXJhdGlvbiwgd2hpY2hcbiAqIG1heSBiZSBpbXByYWN0aWNhbCBvciBpbmFwcHJvcHJpYXRlLCBmb3IgZXhhbXBsZSBpZiB5b3UgYXJlXG4gKiB3cml0aW5nIGEgbW9kdWxlIGZvciBhIHNwZWNpZmljIGltcGxlbWVudGF0aW9uLlxuICpcbiAqIEBwYXJhbSBzbG90TmFtZSBhIG5hbWUgdW5pcXVlbHkgaWRlbnRpZnlpbmcgdGhlIHNsb3RcbiAqIEBwYXJhbSBleHRlbnNpb25JZCBhbiBleHRlbnNpb24gbmFtZSwgd2l0aCBhbiBvcHRpb25hbCAjLXN1ZmZpeFxuICogICAgdG8gZGlzdGluZ3Vpc2ggaXQgZnJvbSBvdGhlciBpbnN0YW5jZXMgb2YgdGhlIHNhbWUgZXh0ZW5zaW9uXG4gKiAgICBhdHRhY2hlZCB0byB0aGUgc2FtZSBzbG90LlxuICovXG5leHBvcnQgZnVuY3Rpb24gYXR0YWNoKHNsb3ROYW1lOiBzdHJpbmcsIGV4dGVuc2lvbklkOiBzdHJpbmcpIHtcbiAgdXBkYXRlSW50ZXJuYWxFeHRlbnNpb25TdG9yZSgoc3RhdGUpID0+IHtcbiAgICBjb25zdCBleGlzdGluZ1Nsb3QgPSBzdGF0ZS5zbG90c1tzbG90TmFtZV07XG5cbiAgICBpZiAoIWV4aXN0aW5nU2xvdCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIHNsb3RzOiB7XG4gICAgICAgICAgLi4uc3RhdGUuc2xvdHMsXG4gICAgICAgICAgW3Nsb3ROYW1lXToge1xuICAgICAgICAgICAgLi4uY3JlYXRlTmV3RXh0ZW5zaW9uU2xvdEluZm8oc2xvdE5hbWUpLFxuICAgICAgICAgICAgYXR0YWNoZWRJZHM6IFtleHRlbnNpb25JZF0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICBzbG90czoge1xuICAgICAgICAgIC4uLnN0YXRlLnNsb3RzLFxuICAgICAgICAgIFtzbG90TmFtZV06IHtcbiAgICAgICAgICAgIC4uLmV4aXN0aW5nU2xvdCxcbiAgICAgICAgICAgIGF0dGFjaGVkSWRzOiBbLi4uZXhpc3RpbmdTbG90LmF0dGFjaGVkSWRzLCBleHRlbnNpb25JZF0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH07XG4gICAgfVxuICB9KTtcbn1cblxuLyoqIEF2b2lkIHVzaW5nIHRoaXMuIEV4dGVuc2lvbiBhdHRhY2htZW50cyBzaG91bGQgYmUgY29uc2lkZXJlZCBkZWNsYXJhdGl2ZS4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkZXRhY2goZXh0ZW5zaW9uU2xvdE5hbWU6IHN0cmluZywgZXh0ZW5zaW9uSWQ6IHN0cmluZykge1xuICB1cGRhdGVJbnRlcm5hbEV4dGVuc2lvblN0b3JlKChzdGF0ZSkgPT4ge1xuICAgIGNvbnN0IGV4aXN0aW5nU2xvdCA9IHN0YXRlLnNsb3RzW2V4dGVuc2lvblNsb3ROYW1lXTtcblxuICAgIGlmIChleGlzdGluZ1Nsb3QgJiYgZXhpc3RpbmdTbG90LmF0dGFjaGVkSWRzLmluY2x1ZGVzKGV4dGVuc2lvbklkKSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIHNsb3RzOiB7XG4gICAgICAgICAgLi4uc3RhdGUuc2xvdHMsXG4gICAgICAgICAgW2V4dGVuc2lvblNsb3ROYW1lXToge1xuICAgICAgICAgICAgLi4uZXhpc3RpbmdTbG90LFxuICAgICAgICAgICAgYXR0YWNoZWRJZHM6IGV4aXN0aW5nU2xvdC5hdHRhY2hlZElkcy5maWx0ZXIoXG4gICAgICAgICAgICAgIChpZCkgPT4gaWQgIT09IGV4dGVuc2lvbklkXG4gICAgICAgICAgICApLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICB9O1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gc3RhdGU7XG4gICAgfVxuICB9KTtcbn1cblxuLyoqIEF2b2lkIHVzaW5nIHRoaXMuIEV4dGVuc2lvbiBhdHRhY2htZW50cyBzaG91bGQgYmUgY29uc2lkZXJlZCBkZWNsYXJhdGl2ZS4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkZXRhY2hBbGwoZXh0ZW5zaW9uU2xvdE5hbWU6IHN0cmluZykge1xuICB1cGRhdGVJbnRlcm5hbEV4dGVuc2lvblN0b3JlKChzdGF0ZSkgPT4ge1xuICAgIGNvbnN0IGV4aXN0aW5nU2xvdCA9IHN0YXRlLnNsb3RzW2V4dGVuc2lvblNsb3ROYW1lXTtcblxuICAgIGlmIChleGlzdGluZ1Nsb3QpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICBzbG90czoge1xuICAgICAgICAgIC4uLnN0YXRlLnNsb3RzLFxuICAgICAgICAgIFtleHRlbnNpb25TbG90TmFtZV06IHtcbiAgICAgICAgICAgIC4uLmV4aXN0aW5nU2xvdCxcbiAgICAgICAgICAgIGF0dGFjaGVkSWRzOiBbXSxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHN0YXRlO1xuICAgIH1cbiAgfSk7XG59XG5cbi8qKlxuICogR2V0IGFuIG9yZGVyIGluZGV4IGZvciB0aGUgZXh0ZW5zaW9uLiBUaGlzIHdpbGxcbiAqIGNvbWUgZnJvbSBlaXRoZXIgaXRzIGNvbmZpZ3VyZWQgb3JkZXIsIGl0cyByZWdpc3RlcmVkIG9yZGVyXG4gKiBwYXJhbWV0ZXIsIG9yIHRoZSBvcmRlciBpbiB3aGljaCBpdCBoYXBwZW5lZCB0byBiZSBhdHRhY2hlZC5cbiAqL1xuZnVuY3Rpb24gZ2V0T3JkZXIoXG4gIGV4dGVuc2lvbklkOiBzdHJpbmcsXG4gIGNvbmZpZ3VyZWRPcmRlcjogQXJyYXk8c3RyaW5nPixcbiAgcmVnaXN0ZXJlZE9yZGVySW5kZXg6IG51bWJlciB8IHVuZGVmaW5lZCxcbiAgYXR0YWNoZWRPcmRlcjogQXJyYXk8c3RyaW5nPlxuKSB7XG4gIGNvbnN0IGNvbmZpZ3VyZWRJbmRleCA9IGNvbmZpZ3VyZWRPcmRlci5pbmRleE9mKGV4dGVuc2lvbklkKTtcbiAgaWYgKGNvbmZpZ3VyZWRJbmRleCAhPT0gLTEpIHtcbiAgICByZXR1cm4gY29uZmlndXJlZEluZGV4O1xuICB9IGVsc2UgaWYgKHJlZ2lzdGVyZWRPcmRlckluZGV4ICE9PSB1bmRlZmluZWQpIHtcbiAgICAvLyBleHRlbnNpb25zIHRoYXQgZG9uJ3QgaGF2ZSBhIGNvbmZpZ3VyZWQgb3JkZXIgc2hvdWxkIGFwcGVhciBhZnRlciB0aG9zZSB0aGF0IGRvXG4gICAgcmV0dXJuIDEwMDAgKyByZWdpc3RlcmVkT3JkZXJJbmRleDtcbiAgfSBlbHNlIHtcbiAgICBjb25zdCBhc3NpZ25lZEluZGV4ID0gYXR0YWNoZWRPcmRlci5pbmRleE9mKGV4dGVuc2lvbklkKTtcbiAgICBpZiAoYXNzaWduZWRJbmRleCAhPT0gLTEpIHtcbiAgICAgIC8vIGV4dGVuc2lvbnMgdGhhdCBoYXZlIG5laXRoZXIgYSBjb25maWd1cmVkIG5vciByZWdpc3RlcmVkIG9yZGVyIHNob3VsZCBhcHBlYXJcbiAgICAgIC8vIGFmdGVyIGFsbCBvdGhlcnNcbiAgICAgIHJldHVybiAyMDAwICsgYXNzaWduZWRJbmRleDtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIC0xO1xuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIEZpbHRlcnMgYSBsaXN0IG9mIGV4dGVuc2lvbnMgYWNjb3JkaW5nIHRvIHdoZXRoZXIgdGhleSBzdXBwb3J0IHRoZVxuICogY3VycmVudCBjb25uZWN0aXZpdHkgc3RhdHVzLlxuICpcbiAqIEBwYXJhbSBhc3NpZ25lZEV4dGVuc2lvbnMgVGhlIGxpc3Qgb2YgZXh0ZW5zaW9ucyB0byBmaWx0ZXIuXG4gKiBAcGFyYW0gb25saW5lIFdoZXRoZXIgdGhlIGFwcCBpcyBjdXJyZW50bHkgb25saW5lLiBJZiBgbnVsbGAsIHVzZXMgYG5hdmlnYXRvci5vbkxpbmVgLlxuICogQHJldHVybnMgQSBsaXN0IG9mIGV4dGVuc2lvbnMgdGhhdCBzaG91bGQgYmUgcmVuZGVyZWRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldENvbm5lY3RlZEV4dGVuc2lvbnMoXG4gIGFzc2lnbmVkRXh0ZW5zaW9uczogQXJyYXk8QXNzaWduZWRFeHRlbnNpb24+LFxuICBvbmxpbmU6IGJvb2xlYW4gfCBudWxsID0gbnVsbFxuKTogQXJyYXk8Q29ubmVjdGVkRXh0ZW5zaW9uPiB7XG4gIGNvbnN0IGlzT25saW5lID0gb25saW5lID8/IG5hdmlnYXRvci5vbkxpbmU7XG4gIHJldHVybiBhc3NpZ25lZEV4dGVuc2lvbnMuZmlsdGVyKChlKSA9PlxuICAgIGNoZWNrU3RhdHVzRm9yKGlzT25saW5lLCBlLm9ubGluZSwgZS5vZmZsaW5lKVxuICApO1xufVxuXG5mdW5jdGlvbiBnZXRBc3NpZ25lZEV4dGVuc2lvbnNGcm9tU2xvdERhdGEoXG4gIHNsb3ROYW1lOiBzdHJpbmcsXG4gIGludGVybmFsU3RhdGU6IEV4dGVuc2lvbkludGVybmFsU3RvcmUsXG4gIGNvbmZpZzogRXh0ZW5zaW9uU2xvdENvbmZpZ09iamVjdCxcbiAgZXh0ZW5zaW9uQ29uZmlnU3RvcmVTdGF0ZTogRXh0ZW5zaW9uc0NvbmZpZ1N0b3JlXG4pOiBBcnJheTxBc3NpZ25lZEV4dGVuc2lvbj4ge1xuICBjb25zdCBhdHRhY2hlZElkcyA9IGludGVybmFsU3RhdGUuc2xvdHNbc2xvdE5hbWVdLmF0dGFjaGVkSWRzO1xuICBjb25zdCBhc3NpZ25lZElkcyA9IGNhbGN1bGF0ZUFzc2lnbmVkSWRzKGNvbmZpZywgYXR0YWNoZWRJZHMpO1xuICBjb25zdCBleHRlbnNpb25zOiBBcnJheTxBc3NpZ25lZEV4dGVuc2lvbj4gPSBbXTtcbiAgbGV0IHVzZXI6IExvZ2dlZEluVXNlciB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcblxuICBmb3IgKGxldCBpZCBvZiBhc3NpZ25lZElkcykge1xuICAgIGNvbnN0IHsgY29uZmlnOiBleHRlbnNpb25Db25maWcgfSA9IGdldEV4dGVuc2lvbkNvbmZpZ0Zyb21TdG9yZShcbiAgICAgIGV4dGVuc2lvbkNvbmZpZ1N0b3JlU3RhdGUsXG4gICAgICBzbG90TmFtZSxcbiAgICAgIGlkXG4gICAgKTtcbiAgICBjb25zdCBuYW1lID0gZ2V0RXh0ZW5zaW9uTmFtZUZyb21JZChpZCk7XG4gICAgY29uc3QgZXh0ZW5zaW9uID0gaW50ZXJuYWxTdGF0ZS5leHRlbnNpb25zW25hbWVdO1xuICAgIC8vIGlmIHRoZSBleHRlbnNpb24gaGFzIG5vdCBiZWVuIHJlZ2lzdGVyZWQgeWV0LCBkbyBub3QgaW5jbHVkZSBpdFxuICAgIGlmIChleHRlbnNpb24pIHtcbiAgICAgIGNvbnN0IHJlcXVpcmVkUHJpdmlsZWdlcyA9XG4gICAgICAgIGV4dGVuc2lvbkNvbmZpZz8uW1wiRGlzcGxheSBjb25kaXRpb25zXCJdPy5wcml2aWxlZ2VzID8/XG4gICAgICAgIGV4dGVuc2lvbi5wcml2aWxlZ2VzO1xuICAgICAgaWYgKFxuICAgICAgICByZXF1aXJlZFByaXZpbGVnZXMgJiZcbiAgICAgICAgKHR5cGVvZiByZXF1aXJlZFByaXZpbGVnZXMgPT09IFwic3RyaW5nXCIgfHxcbiAgICAgICAgICAoQXJyYXkuaXNBcnJheShyZXF1aXJlZFByaXZpbGVnZXMpICYmIHJlcXVpcmVkUHJpdmlsZWdlcy5sZW5ndGggPiAwKSlcbiAgICAgICkge1xuICAgICAgICBpZiAoaXNVbmRlZmluZWQodXNlcikpIHtcbiAgICAgICAgICB1c2VyID0gZ2V0U2Vzc2lvblN0b3JlKCkuZ2V0U3RhdGUoKS5zZXNzaW9uPy51c2VyO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCF1c2VyKSB7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXVzZXJIYXNBY2Nlc3MocmVxdWlyZWRQcml2aWxlZ2VzLCB1c2VyKSkge1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGV4dGVuc2lvbnMucHVzaCh7XG4gICAgICAgIGlkLFxuICAgICAgICBuYW1lLFxuICAgICAgICBtb2R1bGVOYW1lOiBleHRlbnNpb24ubW9kdWxlTmFtZSxcbiAgICAgICAgY29uZmlnOiBleHRlbnNpb25Db25maWcsXG4gICAgICAgIG1ldGE6IGV4dGVuc2lvbi5tZXRhLFxuICAgICAgICBvbmxpbmU6IGV4dGVuc2lvbi5vbmxpbmUsXG4gICAgICAgIG9mZmxpbmU6IGV4dGVuc2lvbi5vZmZsaW5lLFxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGV4dGVuc2lvbnM7XG59XG5cbi8qKlxuICogR2V0cyB0aGUgbGlzdCBvZiBleHRlbnNpb25zIGFzc2lnbmVkIHRvIGEgZ2l2ZW4gc2xvdFxuICpcbiAqIEBwYXJhbSBzbG90TmFtZSBUaGUgc2xvdCB0byBsb2FkIHRoZSBhc3NpZ25lZCBleHRlbnNpb25zIGZvclxuICogQHJldHVybnMgQW4gYXJyYXkgb2YgZXh0ZW5zaW9ucyBhc3NpZ25lZCB0byB0aGUgbmFtZWQgc2xvdFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0QXNzaWduZWRFeHRlbnNpb25zKFxuICBzbG90TmFtZTogc3RyaW5nXG4pOiBBcnJheTxBc3NpZ25lZEV4dGVuc2lvbj4ge1xuICBjb25zdCBpbnRlcm5hbFN0YXRlID0gZXh0ZW5zaW9uSW50ZXJuYWxTdG9yZS5nZXRTdGF0ZSgpO1xuICBjb25zdCB7IGNvbmZpZzogc2xvdENvbmZpZyB9ID0gZ2V0RXh0ZW5zaW9uU2xvdENvbmZpZyhzbG90TmFtZSk7XG4gIGNvbnN0IGV4dGVuc2lvblN0b3JlU3RhdGUgPSBleHRlbnNpb25zQ29uZmlnU3RvcmUuZ2V0U3RhdGUoKTtcbiAgcmV0dXJuIGdldEFzc2lnbmVkRXh0ZW5zaW9uc0Zyb21TbG90RGF0YShcbiAgICBzbG90TmFtZSxcbiAgICBpbnRlcm5hbFN0YXRlLFxuICAgIHNsb3RDb25maWcsXG4gICAgZXh0ZW5zaW9uU3RvcmVTdGF0ZVxuICApO1xufVxuXG5mdW5jdGlvbiBjYWxjdWxhdGVBc3NpZ25lZElkcyhcbiAgY29uZmlnOiBFeHRlbnNpb25TbG90Q29uZmlnT2JqZWN0LFxuICBhdHRhY2hlZElkczogQXJyYXk8c3RyaW5nPlxuKSB7XG4gIGNvbnN0IGFkZGVkSWRzID0gY29uZmlnLmFkZCB8fCBbXTtcbiAgY29uc3QgcmVtb3ZlZElkcyA9IGNvbmZpZy5yZW1vdmUgfHwgW107XG4gIGNvbnN0IGlkT3JkZXIgPSBjb25maWcub3JkZXIgfHwgW107XG4gIGNvbnN0IHsgZXh0ZW5zaW9ucyB9ID0gZXh0ZW5zaW9uSW50ZXJuYWxTdG9yZS5nZXRTdGF0ZSgpO1xuXG4gIHJldHVybiBbLi4uYXR0YWNoZWRJZHMsIC4uLmFkZGVkSWRzXVxuICAgIC5maWx0ZXIoKGlkKSA9PiAhcmVtb3ZlZElkcy5pbmNsdWRlcyhpZCkpXG4gICAgLnNvcnQoKGlkQSwgaWRCKSA9PiB7XG4gICAgICBjb25zdCBhaSA9IGdldE9yZGVyKFxuICAgICAgICBpZEEsXG4gICAgICAgIGlkT3JkZXIsXG4gICAgICAgIGV4dGVuc2lvbnNbZ2V0RXh0ZW5zaW9uTmFtZUZyb21JZChpZEEpXT8ub3JkZXIsXG4gICAgICAgIGF0dGFjaGVkSWRzXG4gICAgICApO1xuICAgICAgY29uc3QgYmkgPSBnZXRPcmRlcihcbiAgICAgICAgaWRCLFxuICAgICAgICBpZE9yZGVyLFxuICAgICAgICBleHRlbnNpb25zW2dldEV4dGVuc2lvbk5hbWVGcm9tSWQoaWRCKV0/Lm9yZGVyLFxuICAgICAgICBhdHRhY2hlZElkc1xuICAgICAgKTtcblxuICAgICAgaWYgKGJpID09PSAtMSkge1xuICAgICAgICByZXR1cm4gLTE7XG4gICAgICB9IGVsc2UgaWYgKGFpID09PSAtMSkge1xuICAgICAgICByZXR1cm4gMTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBhaSAtIGJpO1xuICAgICAgfVxuICAgIH0pO1xufVxuXG4vKipcbiAqIFVzZWQgYnkgYnkgZXh0ZW5zaW9uIHNsb3RzIGF0IG1vdW50IHRpbWUuXG4gKlxuICogQHBhcmFtIG1vZHVsZU5hbWUgVGhlIG5hbWUgb2YgdGhlIG1vZHVsZSB0aGF0IGNvbnRhaW5zIHRoZSBleHRlbnNpb24gc2xvdFxuICogQHBhcmFtIHNsb3ROYW1lIFRoZSBleHRlbnNpb24gc2xvdCBuYW1lIHRoYXQgaXMgYWN0dWFsbHkgdXNlZFxuICogQGludGVybmFsXG4gKi9cbmV4cG9ydCBjb25zdCByZWdpc3RlckV4dGVuc2lvblNsb3Q6IChcbiAgbW9kdWxlTmFtZTogc3RyaW5nLFxuICBzbG90TmFtZTogc3RyaW5nXG4pID0+IHZvaWQgPSBleHRlbnNpb25JbnRlcm5hbFN0b3JlLmFjdGlvbigoc3RhdGUsIG1vZHVsZU5hbWUsIHNsb3ROYW1lKSA9PiB7XG4gIGNvbnN0IGV4aXN0aW5nTW9kdWxlTmFtZSA9IHN0YXRlLnNsb3RzW3Nsb3ROYW1lXT8ubW9kdWxlTmFtZTtcbiAgaWYgKGV4aXN0aW5nTW9kdWxlTmFtZSAmJiBleGlzdGluZ01vZHVsZU5hbWUgIT0gbW9kdWxlTmFtZSkge1xuICAgIGNvbnNvbGUud2FybihcbiAgICAgIGBBbiBleHRlbnNpb24gc2xvdCB3aXRoIHRoZSBuYW1lICcke3Nsb3ROYW1lfScgYWxyZWFkeSBleGlzdHMuIFJlZnVzaW5nIHRvIHJlZ2lzdGVyIHRoZSBzYW1lIHNsb3QgbmFtZSB0d2ljZSAoaW4gXCJyZWdpc3RlckV4dGVuc2lvblNsb3RcIikuIFRoZSBleGlzdGluZyBvbmUgaXMgZnJvbSBtb2R1bGUgJHtleGlzdGluZ01vZHVsZU5hbWV9LmBcbiAgICApO1xuICAgIHJldHVybiBzdGF0ZTtcbiAgfVxuICBpZiAoZXhpc3RpbmdNb2R1bGVOYW1lICYmIGV4aXN0aW5nTW9kdWxlTmFtZSA9PSBtb2R1bGVOYW1lKSB7XG4gICAgLy8gUmUtcmVuZGVyaW5nIGFuIGV4aXN0aW5nIHNsb3RcbiAgICByZXR1cm4gc3RhdGU7XG4gIH1cbiAgaWYgKHN0YXRlLnNsb3RzW3Nsb3ROYW1lXSkge1xuICAgIHJldHVybiB7XG4gICAgICAuLi5zdGF0ZSxcbiAgICAgIHNsb3RzOiB7XG4gICAgICAgIC4uLnN0YXRlLnNsb3RzLFxuICAgICAgICBbc2xvdE5hbWVdOiB7XG4gICAgICAgICAgLi4uc3RhdGUuc2xvdHNbc2xvdE5hbWVdLFxuICAgICAgICAgIG1vZHVsZU5hbWUsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH07XG4gIH1cbiAgY29uc3Qgc2xvdCA9IGNyZWF0ZU5ld0V4dGVuc2lvblNsb3RJbmZvKHNsb3ROYW1lLCBtb2R1bGVOYW1lKTtcbiAgcmV0dXJuIHtcbiAgICAuLi5zdGF0ZSxcbiAgICBzbG90czoge1xuICAgICAgLi4uc3RhdGUuc2xvdHMsXG4gICAgICBbc2xvdE5hbWVdOiBzbG90LFxuICAgIH0sXG4gIH07XG59KTtcblxuLyoqXG4gKiBAaW50ZXJuYWxcbiAqIEp1c3QgZm9yIHRlc3RpbmcuXG4gKi9cbmV4cG9ydCBjb25zdCByZXNldDogKCkgPT4gdm9pZCA9IGV4dGVuc2lvblN0b3JlLmFjdGlvbigoKSA9PiB7XG4gIHJldHVybiB7XG4gICAgc2xvdHM6IHt9LFxuICAgIGV4dGVuc2lvbnM6IHt9LFxuICB9O1xufSk7XG4iXSwibmFtZXMiOlsiZ2V0U2Vzc2lvblN0b3JlIiwidXNlckhhc0FjY2VzcyIsImdldEV4dGVuc2lvbkNvbmZpZ0Zyb21TdG9yZSIsImdldEV4dGVuc2lvbnNDb25maWdTdG9yZSIsImdldEV4dGVuc2lvblNsb3RDb25maWciLCJnZXRFeHRlbnNpb25TbG90Q29uZmlnRnJvbVN0b3JlIiwiZ2V0RXh0ZW5zaW9uU2xvdHNDb25maWdTdG9yZSIsImlzRXF1YWwiLCJpc1VuZGVmaW5lZCIsImdldEV4dGVuc2lvbkludGVybmFsU3RvcmUiLCJjaGVja1N0YXR1c0ZvciIsImdldEV4dGVuc2lvblN0b3JlIiwidXBkYXRlSW50ZXJuYWxFeHRlbnNpb25TdG9yZSIsImV4dGVuc2lvbkludGVybmFsU3RvcmUiLCJleHRlbnNpb25TdG9yZSIsInNsb3RzQ29uZmlnU3RvcmUiLCJleHRlbnNpb25zQ29uZmlnU3RvcmUiLCJ1cGRhdGVFeHRlbnNpb25PdXRwdXRTdG9yZSIsImludGVybmFsU3RhdGUiLCJleHRlbnNpb25TbG90Q29uZmlncyIsInNsb3RzIiwiT2JqZWN0IiwiZW50cmllcyIsInNsb3ROYW1lIiwic2xvdCIsImNvbmZpZyIsIm5hbWUiLCJhc3NpZ25lZEV4dGVuc2lvbnMiLCJnZXRBc3NpZ25lZEV4dGVuc2lvbnNGcm9tU2xvdERhdGEiLCJtb2R1bGVOYW1lIiwiZ2V0U3RhdGUiLCJzZXRTdGF0ZSIsInN1YnNjcmliZSIsImludGVybmFsU3RvcmUiLCJzbG90Q29uZmlncyIsImV4dGVuc2lvbkNvbmZpZ3MiLCJjcmVhdGVOZXdFeHRlbnNpb25TbG90SW5mbyIsImF0dGFjaGVkSWRzIiwiZ2V0RXh0ZW5zaW9uTmFtZUZyb21JZCIsImV4dGVuc2lvbklkIiwic3BsaXQiLCJleHRlbnNpb25OYW1lIiwiZ2V0RXh0ZW5zaW9uUmVnaXN0cmF0aW9uRnJvbSIsInN0YXRlIiwiZXh0ZW5zaW9ucyIsImdldEV4dGVuc2lvblJlZ2lzdHJhdGlvbiIsInJlZ2lzdGVyRXh0ZW5zaW9uIiwiYWN0aW9uIiwiZXh0ZW5zaW9uUmVnaXN0cmF0aW9uIiwiaW5zdGFuY2VzIiwiYXR0YWNoIiwiZXhpc3RpbmdTbG90IiwiZGV0YWNoIiwiZXh0ZW5zaW9uU2xvdE5hbWUiLCJpbmNsdWRlcyIsImZpbHRlciIsImlkIiwiZGV0YWNoQWxsIiwiZ2V0T3JkZXIiLCJjb25maWd1cmVkT3JkZXIiLCJyZWdpc3RlcmVkT3JkZXJJbmRleCIsImF0dGFjaGVkT3JkZXIiLCJjb25maWd1cmVkSW5kZXgiLCJpbmRleE9mIiwidW5kZWZpbmVkIiwiYXNzaWduZWRJbmRleCIsImdldENvbm5lY3RlZEV4dGVuc2lvbnMiLCJvbmxpbmUiLCJpc09ubGluZSIsIm5hdmlnYXRvciIsIm9uTGluZSIsImUiLCJvZmZsaW5lIiwiZXh0ZW5zaW9uQ29uZmlnU3RvcmVTdGF0ZSIsImFzc2lnbmVkSWRzIiwiY2FsY3VsYXRlQXNzaWduZWRJZHMiLCJ1c2VyIiwiZXh0ZW5zaW9uQ29uZmlnIiwiZXh0ZW5zaW9uIiwicmVxdWlyZWRQcml2aWxlZ2VzIiwicHJpdmlsZWdlcyIsIkFycmF5IiwiaXNBcnJheSIsImxlbmd0aCIsInNlc3Npb24iLCJwdXNoIiwibWV0YSIsImdldEFzc2lnbmVkRXh0ZW5zaW9ucyIsInNsb3RDb25maWciLCJleHRlbnNpb25TdG9yZVN0YXRlIiwiYWRkZWRJZHMiLCJhZGQiLCJyZW1vdmVkSWRzIiwicmVtb3ZlIiwiaWRPcmRlciIsIm9yZGVyIiwic29ydCIsImlkQSIsImlkQiIsImFpIiwiYmkiLCJyZWdpc3RlckV4dGVuc2lvblNsb3QiLCJleGlzdGluZ01vZHVsZU5hbWUiLCJjb25zb2xlIiwid2FybiIsInJlc2V0Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../framework/esm-extensions/src/extensions.ts\n");
6766
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"attach\": () => (/* binding */ attach),\n/* harmony export */ \"detach\": () => (/* binding */ detach),\n/* harmony export */ \"detachAll\": () => (/* binding */ detachAll),\n/* harmony export */ \"getAssignedExtensions\": () => (/* binding */ getAssignedExtensions),\n/* harmony export */ \"getConnectedExtensions\": () => (/* binding */ getConnectedExtensions),\n/* harmony export */ \"getExtensionNameFromId\": () => (/* binding */ getExtensionNameFromId),\n/* harmony export */ \"getExtensionRegistration\": () => (/* binding */ getExtensionRegistration),\n/* harmony export */ \"getExtensionRegistrationFrom\": () => (/* binding */ getExtensionRegistrationFrom),\n/* harmony export */ \"registerExtension\": () => (/* binding */ registerExtension),\n/* harmony export */ \"registerExtensionSlot\": () => (/* binding */ registerExtensionSlot),\n/* harmony export */ \"reset\": () => (/* binding */ reset)\n/* harmony export */ });\n/* harmony import */ var _openmrs_esm_api__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @openmrs/esm-api */ \"../../framework/esm-api/src/index.ts\");\n/* harmony import */ var _openmrs_esm_config__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @openmrs/esm-config */ \"../../framework/esm-config/src/index.ts\");\n/* harmony import */ var lodash_es_isEqual__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! lodash-es/isEqual */ \"../../../node_modules/lodash-es/isEqual.js\");\n/* harmony import */ var lodash_es_isUndefined__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! lodash-es/isUndefined */ \"../../../node_modules/lodash-es/isUndefined.js\");\n/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! . */ \"../../framework/esm-extensions/src/index.ts\");\n/* harmony import */ var _store__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./store */ \"../../framework/esm-extensions/src/store.ts\");\n/** @module @category Extension */ /*\n * We have the following extension modes:\n *\n * - attached (set via code in form of: attach, detach, ...)\n * - configured (set via configuration in form of: added, removed, ...)\n * - assigned (computed from attached and configured)\n * - connected (computed from assigned using connectivity and online / offline)\n */ function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];\n return arr2;\n}\nfunction _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return _arrayLikeToArray(arr);\n}\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nfunction _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}\nfunction _iterableToArrayLimit(arr, i) {\n var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"];\n if (_i == null) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n var _s, _e;\n try {\n for(_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true){\n _arr.push(_s.value);\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally{\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally{\n if (_d) throw _e;\n }\n }\n return _arr;\n}\nfunction _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nfunction _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nfunction _objectSpread(target) {\n for(var i = 1; i < arguments.length; i++){\n var source = arguments[i] != null ? arguments[i] : {};\n var ownKeys = Object.keys(source);\n if (typeof Object.getOwnPropertySymbols === \"function\") {\n ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {\n return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n }));\n }\n ownKeys.forEach(function(key) {\n _defineProperty(target, key, source[key]);\n });\n }\n return target;\n}\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) {\n symbols = symbols.filter(function(sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n }\n keys.push.apply(keys, symbols);\n }\n return keys;\n}\nfunction _objectSpreadProps(target, source) {\n source = source != null ? source : {};\n if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(Object(source)).forEach(function(key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n return target;\n}\nfunction _slicedToArray(arr, i) {\n return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();\n}\nfunction _toConsumableArray(arr) {\n return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();\n}\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(n);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\n\n\n\n\n\n\nvar extensionInternalStore = (0,___WEBPACK_IMPORTED_MODULE_2__.getExtensionInternalStore)();\nvar extensionStore = (0,_store__WEBPACK_IMPORTED_MODULE_3__.getExtensionStore)();\nvar slotsConfigStore = (0,_openmrs_esm_config__WEBPACK_IMPORTED_MODULE_1__.getExtensionSlotsConfigStore)();\nvar extensionsConfigStore = (0,_openmrs_esm_config__WEBPACK_IMPORTED_MODULE_1__.getExtensionsConfigStore)();\n// Keep the output store updated\nfunction updateExtensionOutputStore(internalState, extensionSlotConfigs, extensionsConfigStore) {\n var slots = {};\n var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;\n try {\n for(var _iterator = Object.entries(internalState.slots)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){\n var _value = _slicedToArray(_step.value, 2), slotName = _value[0], slot = _value[1];\n var config = (0,_openmrs_esm_config__WEBPACK_IMPORTED_MODULE_1__.getExtensionSlotConfigFromStore)(extensionSlotConfigs, slot.name).config;\n var assignedExtensions = getAssignedExtensionsFromSlotData(slotName, internalState, config, extensionsConfigStore);\n slots[slotName] = {\n moduleName: slot.moduleName,\n assignedExtensions: assignedExtensions\n };\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally{\n try {\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n } finally{\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n if (!(0,lodash_es_isEqual__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(extensionStore.getState().slots, slots)) {\n extensionStore.setState({\n slots: slots\n });\n }\n}\nextensionInternalStore.subscribe(function(internalStore) {\n updateExtensionOutputStore(internalStore, slotsConfigStore.getState(), extensionsConfigStore.getState());\n});\nslotsConfigStore.subscribe(function(slotConfigs) {\n updateExtensionOutputStore(extensionInternalStore.getState(), slotConfigs, extensionsConfigStore.getState());\n});\nextensionsConfigStore.subscribe(function(extensionConfigs) {\n updateExtensionOutputStore(extensionInternalStore.getState(), slotsConfigStore.getState(), extensionConfigs);\n});\nfunction createNewExtensionSlotInfo(slotName, moduleName) {\n return {\n moduleName: moduleName,\n name: slotName,\n attachedIds: [],\n config: null\n };\n}\n/**\n * Given an extension ID, which is a string uniquely identifying\n * an instance of an extension within an extension slot, this\n * returns the extension name.\n *\n * @example\n * ```js\n * getExtensionNameFromId(\"foo#bar\")\n * --> \"foo\"\n * getExtensionNameFromId(\"baz\")\n * --> \"baz\"\n * ```\n */ function getExtensionNameFromId(extensionId) {\n var ref = _slicedToArray(extensionId.split(\"#\"), 1), extensionName = ref[0];\n return extensionName;\n}\nfunction getExtensionRegistrationFrom(state, extensionId) {\n var name = getExtensionNameFromId(extensionId);\n return state.extensions[name];\n}\nfunction getExtensionRegistration(extensionId) {\n var state = extensionInternalStore.getState();\n return getExtensionRegistrationFrom(state, extensionId);\n}\n/**\n * Extensions must be registered in order to be rendered.\n * This is handled by the app shell, when extensions are provided\n * via the `setupOpenMRS` return object.\n * @internal\n */ var registerExtension = function(extensionRegistration) {\n return extensionInternalStore.setState(function(state) {\n state.extensions[extensionRegistration.name] = _objectSpreadProps(_objectSpread({}, extensionRegistration), {\n instances: []\n });\n return state;\n });\n};\n/**\n * Attach an extension to an extension slot.\n *\n * This will cause the extension to be rendered into the specified\n * extension slot, unless it is removed by configuration. Using\n * `attach` is an alternative to specifying the `slot` or `slots`\n * in the extension declaration.\n *\n * It is particularly useful when creating a slot into which\n * you want to render an existing extension. This enables you\n * to do so without modifying the extension's declaration, which\n * may be impractical or inappropriate, for example if you are\n * writing a module for a specific implementation.\n *\n * @param slotName a name uniquely identifying the slot\n * @param extensionId an extension name, with an optional #-suffix\n * to distinguish it from other instances of the same extension\n * attached to the same slot.\n */ function attach(slotName, extensionId) {\n (0,_store__WEBPACK_IMPORTED_MODULE_3__.updateInternalExtensionStore)(function(state) {\n var existingSlot = state.slots[slotName];\n if (!existingSlot) {\n return _objectSpreadProps(_objectSpread({}, state), {\n slots: _objectSpreadProps(_objectSpread({}, state.slots), _defineProperty({}, slotName, _objectSpreadProps(_objectSpread({}, createNewExtensionSlotInfo(slotName)), {\n attachedIds: [\n extensionId\n ]\n })))\n });\n } else {\n return _objectSpreadProps(_objectSpread({}, state), {\n slots: _objectSpreadProps(_objectSpread({}, state.slots), _defineProperty({}, slotName, _objectSpreadProps(_objectSpread({}, existingSlot), {\n attachedIds: _toConsumableArray(existingSlot.attachedIds).concat([\n extensionId\n ])\n })))\n });\n }\n });\n}\n/** Avoid using this. Extension attachments should be considered declarative. */ function detach(extensionSlotName, extensionId) {\n (0,_store__WEBPACK_IMPORTED_MODULE_3__.updateInternalExtensionStore)(function(state) {\n var existingSlot = state.slots[extensionSlotName];\n if (existingSlot && existingSlot.attachedIds.includes(extensionId)) {\n return _objectSpreadProps(_objectSpread({}, state), {\n slots: _objectSpreadProps(_objectSpread({}, state.slots), _defineProperty({}, extensionSlotName, _objectSpreadProps(_objectSpread({}, existingSlot), {\n attachedIds: existingSlot.attachedIds.filter(function(id) {\n return id !== extensionId;\n })\n })))\n });\n } else {\n return state;\n }\n });\n}\n/** Avoid using this. Extension attachments should be considered declarative. */ function detachAll(extensionSlotName) {\n (0,_store__WEBPACK_IMPORTED_MODULE_3__.updateInternalExtensionStore)(function(state) {\n var existingSlot = state.slots[extensionSlotName];\n if (existingSlot) {\n return _objectSpreadProps(_objectSpread({}, state), {\n slots: _objectSpreadProps(_objectSpread({}, state.slots), _defineProperty({}, extensionSlotName, _objectSpreadProps(_objectSpread({}, existingSlot), {\n attachedIds: []\n })))\n });\n } else {\n return state;\n }\n });\n}\n/**\n * Get an order index for the extension. This will\n * come from either its configured order, its registered order\n * parameter, or the order in which it happened to be attached.\n */ function getOrder(extensionId, configuredOrder, registeredOrderIndex, attachedOrder) {\n var configuredIndex = configuredOrder.indexOf(extensionId);\n if (configuredIndex !== -1) {\n return configuredIndex;\n } else if (registeredOrderIndex !== undefined) {\n // extensions that don't have a configured order should appear after those that do\n return 1000 + registeredOrderIndex;\n } else {\n var assignedIndex = attachedOrder.indexOf(extensionId);\n if (assignedIndex !== -1) {\n // extensions that have neither a configured nor registered order should appear\n // after all others\n return 2000 + assignedIndex;\n } else {\n return -1;\n }\n }\n}\n/**\n * Filters a list of extensions according to whether they support the\n * current connectivity status.\n *\n * @param assignedExtensions The list of extensions to filter.\n * @param online Whether the app is currently online. If `null`, uses `navigator.onLine`.\n * @returns A list of extensions that should be rendered\n */ function getConnectedExtensions(assignedExtensions) {\n var online = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : null;\n var isOnline = online !== null && online !== void 0 ? online : navigator.onLine;\n return assignedExtensions.filter(function(e) {\n return (0,___WEBPACK_IMPORTED_MODULE_2__.checkStatusFor)(isOnline, e.online, e.offline);\n });\n}\nfunction getAssignedExtensionsFromSlotData(slotName, internalState, config, extensionConfigStoreState) {\n var attachedIds = internalState.slots[slotName].attachedIds;\n var assignedIds = calculateAssignedIds(config, attachedIds);\n var extensions = [];\n var user = undefined;\n var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;\n try {\n for(var _iterator = assignedIds[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){\n var id = _step.value;\n var ref = (0,_openmrs_esm_config__WEBPACK_IMPORTED_MODULE_1__.getExtensionConfigFromStore)(extensionConfigStoreState, slotName, id), extensionConfig = ref.config;\n var name = getExtensionNameFromId(id);\n var extension = internalState.extensions[name];\n // if the extension has not been registered yet, do not include it\n if (extension) {\n var ref1;\n var ref2;\n var requiredPrivileges = (ref2 = extensionConfig === null || extensionConfig === void 0 ? void 0 : (ref1 = extensionConfig[\"Display conditions\"]) === null || ref1 === void 0 ? void 0 : ref1.privileges) !== null && ref2 !== void 0 ? ref2 : extension.privileges;\n if (requiredPrivileges && (typeof requiredPrivileges === \"string\" || Array.isArray(requiredPrivileges) && requiredPrivileges.length > 0)) {\n if ((0,lodash_es_isUndefined__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(user)) {\n var ref3;\n user = (ref3 = (0,_openmrs_esm_api__WEBPACK_IMPORTED_MODULE_0__.getSessionStore)().getState().session) === null || ref3 === void 0 ? void 0 : ref3.user;\n }\n if (!user) {\n continue;\n }\n if (!(0,_openmrs_esm_api__WEBPACK_IMPORTED_MODULE_0__.userHasAccess)(requiredPrivileges, user)) {\n continue;\n }\n }\n extensions.push({\n id: id,\n name: name,\n moduleName: extension.moduleName,\n config: extensionConfig,\n meta: extension.meta,\n online: extension.online,\n offline: extension.offline\n });\n }\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally{\n try {\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n } finally{\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n return extensions;\n}\n/**\n * Gets the list of extensions assigned to a given slot\n *\n * @param slotName The slot to load the assigned extensions for\n * @returns An array of extensions assigned to the named slot\n */ function getAssignedExtensions(slotName) {\n var internalState = extensionInternalStore.getState();\n var ref = (0,_openmrs_esm_config__WEBPACK_IMPORTED_MODULE_1__.getExtensionSlotConfig)(slotName), slotConfig = ref.config;\n var extensionStoreState = extensionsConfigStore.getState();\n return getAssignedExtensionsFromSlotData(slotName, internalState, slotConfig, extensionStoreState);\n}\nfunction calculateAssignedIds(config, attachedIds) {\n var addedIds = config.add || [];\n var removedIds = config.remove || [];\n var idOrder = config.order || [];\n var extensions = extensionInternalStore.getState().extensions;\n return _toConsumableArray(attachedIds).concat(_toConsumableArray(addedIds)).filter(function(id) {\n return !removedIds.includes(id);\n }).sort(function(idA, idB) {\n var ref, ref1;\n var ai = getOrder(idA, idOrder, (ref = extensions[getExtensionNameFromId(idA)]) === null || ref === void 0 ? void 0 : ref.order, attachedIds);\n var bi = getOrder(idB, idOrder, (ref1 = extensions[getExtensionNameFromId(idB)]) === null || ref1 === void 0 ? void 0 : ref1.order, attachedIds);\n if (bi === -1) {\n return -1;\n } else if (ai === -1) {\n return 1;\n } else {\n return ai - bi;\n }\n });\n}\n/**\n * Used by by extension slots at mount time.\n *\n * @param moduleName The name of the module that contains the extension slot\n * @param slotName The extension slot name that is actually used\n * @internal\n */ var registerExtensionSlot = function(moduleName, slotName) {\n return extensionInternalStore.setState(function(state) {\n var ref;\n var existingModuleName = (ref = state.slots[slotName]) === null || ref === void 0 ? void 0 : ref.moduleName;\n if (existingModuleName && existingModuleName != moduleName) {\n console.warn(\"An extension slot with the name '\".concat(slotName, '\\' already exists. Refusing to register the same slot name twice (in \"registerExtensionSlot\"). The existing one is from module ').concat(existingModuleName, \".\"));\n return state;\n }\n if (existingModuleName && existingModuleName == moduleName) {\n // Re-rendering an existing slot\n return state;\n }\n if (state.slots[slotName]) {\n return _objectSpreadProps(_objectSpread({}, state), {\n slots: _objectSpreadProps(_objectSpread({}, state.slots), _defineProperty({}, slotName, _objectSpreadProps(_objectSpread({}, state.slots[slotName]), {\n moduleName: moduleName\n })))\n });\n }\n var slot = createNewExtensionSlotInfo(slotName, moduleName);\n return _objectSpreadProps(_objectSpread({}, state), {\n slots: _objectSpreadProps(_objectSpread({}, state.slots), _defineProperty({}, slotName, slot))\n });\n });\n};\n/**\n * @internal\n * Just for testing.\n */ var reset = function() {\n return extensionStore.setState(function() {\n return {\n slots: {},\n extensions: {}\n };\n });\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vZnJhbWV3b3JrL2VzbS1leHRlbnNpb25zL3NyYy9leHRlbnNpb25zLnRzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsZ0NBQWdDLEdBQ2hDOzs7Ozs7O0NBT0MsR0FFRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBZ0Y7QUFVbkQ7QUFDVztBQUNRO0FBT3JDO0FBT007QUFFakIsSUFBTWEseUJBQXlCSiw0REFBeUJBO0FBQ3hELElBQU1LLGlCQUFpQkgseURBQWlCQTtBQUN4QyxJQUFNSSxtQkFBbUJULGlGQUE0QkE7QUFDckQsSUFBTVUsd0JBQXdCYiw2RUFBd0JBO0FBRXRELGdDQUFnQztBQUNoQyxTQUFTYywyQkFDUEMsYUFBcUMsRUFDckNDLG9CQUErQyxFQUMvQ0gscUJBQTRDLEVBQzVDO0lBQ0EsSUFBTUksUUFBNEMsQ0FBQztRQUM5Qzs7UUFBTCxRQUFLLFlBQXdCQyxPQUFPQyxPQUFPLENBQUNKLGNBQWNFLEtBQUssc0JBQTFELHdHQUE2RDtZQUE3RCw2Q0FBS0csc0JBQVVDO1lBQ2xCLElBQU0sU0FBYW5CLG9GQUErQkEsQ0FDaERjLHNCQUNBSyxLQUFLRSxJQUFJLEVBRkhEO1lBSVIsSUFBTUUscUJBQXFCQyxrQ0FDekJMLFVBQ0FMLGVBQ0FPLFFBQ0FUO1lBRUZJLEtBQUssQ0FBQ0csU0FBUyxHQUFHO2dCQUFFTSxZQUFZTCxLQUFLSyxVQUFVO2dCQUFFRixvQkFBQUE7WUFBbUI7UUFDdEU7O1FBWks7UUFBQTs7O2lCQUFBO2dCQUFBOzs7Z0JBQUE7c0JBQUE7Ozs7SUFhTCxJQUFJLENBQUNwQiw2REFBT0EsQ0FBQ08sZUFBZWdCLFFBQVEsR0FBR1YsS0FBSyxFQUFFQSxRQUFRO1FBQ3BETixlQUFlaUIsUUFBUSxDQUFDO1lBQUVYLE9BQUFBO1FBQU07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QVVNO1FBQ2xELE9BQU8scUNBQ0ZjO1lBQ0h2QixPQUFPLHFDQUNGdUIsTUFBTXZCLEtBQUssR0FDZCxvQkFBQ0csVUFBV0M7O0lBR2xCO0VBQUc7QUFFTDs7O0NBR0MsR0FDTSxJQUFNZ0YsUUFBb0I7V0FDL0IxRixlQUFlaUIsUUFBUSxDQUFDLFdBQU07UUFDNUIsT0FBTztZQUNMWCxPQUFPLENBQUM7WUFDUndCLFlBQVksQ0FBQztRQUNmO0lBQ0Y7RUFBRyIsInNvdXJjZXMiOlsid2VicGFjazovL0BvcGVubXJzL2VzbS1hcHAtc2hlbGwvLi4vLi4vZnJhbWV3b3JrL2VzbS1leHRlbnNpb25zL3NyYy9leHRlbnNpb25zLnRzPzc1OWEiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqIEBtb2R1bGUgQGNhdGVnb3J5IEV4dGVuc2lvbiAqL1xuLypcbiAqIFdlIGhhdmUgdGhlIGZvbGxvd2luZyBleHRlbnNpb24gbW9kZXM6XG4gKlxuICogLSBhdHRhY2hlZCAoc2V0IHZpYSBjb2RlIGluIGZvcm0gb2Y6IGF0dGFjaCwgZGV0YWNoLCAuLi4pXG4gKiAtIGNvbmZpZ3VyZWQgKHNldCB2aWEgY29uZmlndXJhdGlvbiBpbiBmb3JtIG9mOiBhZGRlZCwgcmVtb3ZlZCwgLi4uKVxuICogLSBhc3NpZ25lZCAoY29tcHV0ZWQgZnJvbSBhdHRhY2hlZCBhbmQgY29uZmlndXJlZClcbiAqIC0gY29ubmVjdGVkIChjb21wdXRlZCBmcm9tIGFzc2lnbmVkIHVzaW5nIGNvbm5lY3Rpdml0eSBhbmQgb25saW5lIC8gb2ZmbGluZSlcbiAqL1xuXG5pbXBvcnQgeyBnZXRTZXNzaW9uU3RvcmUsIExvZ2dlZEluVXNlciwgdXNlckhhc0FjY2VzcyB9IGZyb20gXCJAb3Blbm1ycy9lc20tYXBpXCI7XG5pbXBvcnQge1xuICBFeHRlbnNpb25zQ29uZmlnU3RvcmUsXG4gIEV4dGVuc2lvblNsb3RDb25maWdPYmplY3QsXG4gIEV4dGVuc2lvblNsb3RzQ29uZmlnU3RvcmUsXG4gIGdldEV4dGVuc2lvbkNvbmZpZ0Zyb21TdG9yZSxcbiAgZ2V0RXh0ZW5zaW9uc0NvbmZpZ1N0b3JlLFxuICBnZXRFeHRlbnNpb25TbG90Q29uZmlnLFxuICBnZXRFeHRlbnNpb25TbG90Q29uZmlnRnJvbVN0b3JlLFxuICBnZXRFeHRlbnNpb25TbG90c0NvbmZpZ1N0b3JlLFxufSBmcm9tIFwiQG9wZW5tcnMvZXNtLWNvbmZpZ1wiO1xuaW1wb3J0IGlzRXF1YWwgZnJvbSBcImxvZGFzaC1lcy9pc0VxdWFsXCI7XG5pbXBvcnQgaXNVbmRlZmluZWQgZnJvbSBcImxvZGFzaC1lcy9pc1VuZGVmaW5lZFwiO1xuaW1wb3J0IHtcbiAgZ2V0RXh0ZW5zaW9uSW50ZXJuYWxTdG9yZSxcbiAgRXh0ZW5zaW9uU2xvdFN0YXRlLFxuICBBc3NpZ25lZEV4dGVuc2lvbixcbiAgY2hlY2tTdGF0dXNGb3IsXG4gIENvbm5lY3RlZEV4dGVuc2lvbixcbn0gZnJvbSBcIi5cIjtcbmltcG9ydCB7XG4gIEV4dGVuc2lvblJlZ2lzdHJhdGlvbixcbiAgRXh0ZW5zaW9uU2xvdEluZm8sXG4gIEV4dGVuc2lvbkludGVybmFsU3RvcmUsXG4gIGdldEV4dGVuc2lvblN0b3JlLFxuICB1cGRhdGVJbnRlcm5hbEV4dGVuc2lvblN0b3JlLFxufSBmcm9tIFwiLi9zdG9yZVwiO1xuXG5jb25zdCBleHRlbnNpb25JbnRlcm5hbFN0b3JlID0gZ2V0RXh0ZW5zaW9uSW50ZXJuYWxTdG9yZSgpO1xuY29uc3QgZXh0ZW5zaW9uU3RvcmUgPSBnZXRFeHRlbnNpb25TdG9yZSgpO1xuY29uc3Qgc2xvdHNDb25maWdTdG9yZSA9IGdldEV4dGVuc2lvblNsb3RzQ29uZmlnU3RvcmUoKTtcbmNvbnN0IGV4dGVuc2lvbnNDb25maWdTdG9yZSA9IGdldEV4dGVuc2lvbnNDb25maWdTdG9yZSgpO1xuXG4vLyBLZWVwIHRoZSBvdXRwdXQgc3RvcmUgdXBkYXRlZFxuZnVuY3Rpb24gdXBkYXRlRXh0ZW5zaW9uT3V0cHV0U3RvcmUoXG4gIGludGVybmFsU3RhdGU6IEV4dGVuc2lvbkludGVybmFsU3RvcmUsXG4gIGV4dGVuc2lvblNsb3RDb25maWdzOiBFeHRlbnNpb25TbG90c0NvbmZpZ1N0b3JlLFxuICBleHRlbnNpb25zQ29uZmlnU3RvcmU6IEV4dGVuc2lvbnNDb25maWdTdG9yZVxuKSB7XG4gIGNvbnN0IHNsb3RzOiBSZWNvcmQ8c3RyaW5nLCBFeHRlbnNpb25TbG90U3RhdGU+ID0ge307XG4gIGZvciAobGV0IFtzbG90TmFtZSwgc2xvdF0gb2YgT2JqZWN0LmVudHJpZXMoaW50ZXJuYWxTdGF0ZS5zbG90cykpIHtcbiAgICBjb25zdCB7IGNvbmZpZyB9ID0gZ2V0RXh0ZW5zaW9uU2xvdENvbmZpZ0Zyb21TdG9yZShcbiAgICAgIGV4dGVuc2lvblNsb3RDb25maWdzLFxuICAgICAgc2xvdC5uYW1lXG4gICAgKTtcbiAgICBjb25zdCBhc3NpZ25lZEV4dGVuc2lvbnMgPSBnZXRBc3NpZ25lZEV4dGVuc2lvbnNGcm9tU2xvdERhdGEoXG4gICAgICBzbG90TmFtZSxcbiAgICAgIGludGVybmFsU3RhdGUsXG4gICAgICBjb25maWcsXG4gICAgICBleHRlbnNpb25zQ29uZmlnU3RvcmVcbiAgICApO1xuICAgIHNsb3RzW3Nsb3ROYW1lXSA9IHsgbW9kdWxlTmFtZTogc2xvdC5tb2R1bGVOYW1lLCBhc3NpZ25lZEV4dGVuc2lvbnMgfTtcbiAgfVxuICBpZiAoIWlzRXF1YWwoZXh0ZW5zaW9uU3RvcmUuZ2V0U3RhdGUoKS5zbG90cywgc2xvdHMpKSB7XG4gICAgZXh0ZW5zaW9uU3RvcmUuc2V0U3RhdGUoeyBzbG90cyB9KTtcbiAgfVxufVxuXG5leHRlbnNpb25JbnRlcm5hbFN0b3JlLnN1YnNjcmliZSgoaW50ZXJuYWxTdG9yZSkgPT4ge1xuICB1cGRhdGVFeHRlbnNpb25PdXRwdXRTdG9yZShcbiAgICBpbnRlcm5hbFN0b3JlLFxuICAgIHNsb3RzQ29uZmlnU3RvcmUuZ2V0U3RhdGUoKSxcbiAgICBleHRlbnNpb25zQ29uZmlnU3RvcmUuZ2V0U3RhdGUoKVxuICApO1xufSk7XG5cbnNsb3RzQ29uZmlnU3RvcmUuc3Vic2NyaWJlKChzbG90Q29uZmlncykgPT4ge1xuICB1cGRhdGVFeHRlbnNpb25PdXRwdXRTdG9yZShcbiAgICBleHRlbnNpb25JbnRlcm5hbFN0b3JlLmdldFN0YXRlKCksXG4gICAgc2xvdENvbmZpZ3MsXG4gICAgZXh0ZW5zaW9uc0NvbmZpZ1N0b3JlLmdldFN0YXRlKClcbiAgKTtcbn0pO1xuXG5leHRlbnNpb25zQ29uZmlnU3RvcmUuc3Vic2NyaWJlKChleHRlbnNpb25Db25maWdzKSA9PiB7XG4gIHVwZGF0ZUV4dGVuc2lvbk91dHB1dFN0b3JlKFxuICAgIGV4dGVuc2lvbkludGVybmFsU3RvcmUuZ2V0U3RhdGUoKSxcbiAgICBzbG90c0NvbmZpZ1N0b3JlLmdldFN0YXRlKCksXG4gICAgZXh0ZW5zaW9uQ29uZmlnc1xuICApO1xufSk7XG5cbmZ1bmN0aW9uIGNyZWF0ZU5ld0V4dGVuc2lvblNsb3RJbmZvKFxuICBzbG90TmFtZTogc3RyaW5nLFxuICBtb2R1bGVOYW1lPzogc3RyaW5nXG4pOiBFeHRlbnNpb25TbG90SW5mbyB7XG4gIHJldHVybiB7XG4gICAgbW9kdWxlTmFtZSxcbiAgICBuYW1lOiBzbG90TmFtZSxcbiAgICBhdHRhY2hlZElkczogW10sXG4gICAgY29uZmlnOiBudWxsLFxuICB9O1xufVxuXG4vKipcbiAqIEdpdmVuIGFuIGV4dGVuc2lvbiBJRCwgd2hpY2ggaXMgYSBzdHJpbmcgdW5pcXVlbHkgaWRlbnRpZnlpbmdcbiAqIGFuIGluc3RhbmNlIG9mIGFuIGV4dGVuc2lvbiB3aXRoaW4gYW4gZXh0ZW5zaW9uIHNsb3QsIHRoaXNcbiAqIHJldHVybnMgdGhlIGV4dGVuc2lvbiBuYW1lLlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGBqc1xuICogZ2V0RXh0ZW5zaW9uTmFtZUZyb21JZChcImZvbyNiYXJcIilcbiAqICAtLT4gXCJmb29cIlxuICogZ2V0RXh0ZW5zaW9uTmFtZUZyb21JZChcImJhelwiKVxuICogIC0tPiBcImJhelwiXG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEV4dGVuc2lvbk5hbWVGcm9tSWQoZXh0ZW5zaW9uSWQ6IHN0cmluZykge1xuICBjb25zdCBbZXh0ZW5zaW9uTmFtZV0gPSBleHRlbnNpb25JZC5zcGxpdChcIiNcIik7XG4gIHJldHVybiBleHRlbnNpb25OYW1lO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0RXh0ZW5zaW9uUmVnaXN0cmF0aW9uRnJvbShcbiAgc3RhdGU6IEV4dGVuc2lvbkludGVybmFsU3RvcmUsXG4gIGV4dGVuc2lvbklkOiBzdHJpbmdcbik6IEV4dGVuc2lvblJlZ2lzdHJhdGlvbiB8IHVuZGVmaW5lZCB7XG4gIGNvbnN0IG5hbWUgPSBnZXRFeHRlbnNpb25OYW1lRnJvbUlkKGV4dGVuc2lvbklkKTtcbiAgcmV0dXJuIHN0YXRlLmV4dGVuc2lvbnNbbmFtZV07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRFeHRlbnNpb25SZWdpc3RyYXRpb24oXG4gIGV4dGVuc2lvbklkOiBzdHJpbmdcbik6IEV4dGVuc2lvblJlZ2lzdHJhdGlvbiB8IHVuZGVmaW5lZCB7XG4gIGNvbnN0IHN0YXRlID0gZXh0ZW5zaW9uSW50ZXJuYWxTdG9yZS5nZXRTdGF0ZSgpO1xuICByZXR1cm4gZ2V0RXh0ZW5zaW9uUmVnaXN0cmF0aW9uRnJvbShzdGF0ZSwgZXh0ZW5zaW9uSWQpO1xufVxuXG4vKipcbiAqIEV4dGVuc2lvbnMgbXVzdCBiZSByZWdpc3RlcmVkIGluIG9yZGVyIHRvIGJlIHJlbmRlcmVkLlxuICogVGhpcyBpcyBoYW5kbGVkIGJ5IHRoZSBhcHAgc2hlbGwsIHdoZW4gZXh0ZW5zaW9ucyBhcmUgcHJvdmlkZWRcbiAqIHZpYSB0aGUgYHNldHVwT3Blbk1SU2AgcmV0dXJuIG9iamVjdC5cbiAqIEBpbnRlcm5hbFxuICovXG5leHBvcnQgY29uc3QgcmVnaXN0ZXJFeHRlbnNpb246IChcbiAgZXh0ZW5zaW9uUmVnaXN0cmF0aW9uOiBFeHRlbnNpb25SZWdpc3RyYXRpb25cbikgPT4gdm9pZCA9IChleHRlbnNpb25SZWdpc3RyYXRpb24pID0+XG4gIGV4dGVuc2lvbkludGVybmFsU3RvcmUuc2V0U3RhdGUoKHN0YXRlKSA9PiB7XG4gICAgc3RhdGUuZXh0ZW5zaW9uc1tleHRlbnNpb25SZWdpc3RyYXRpb24ubmFtZV0gPSB7XG4gICAgICAuLi5leHRlbnNpb25SZWdpc3RyYXRpb24sXG4gICAgICBpbnN0YW5jZXM6IFtdLFxuICAgIH07XG4gICAgcmV0dXJuIHN0YXRlO1xuICB9KTtcblxuLyoqXG4gKiBBdHRhY2ggYW4gZXh0ZW5zaW9uIHRvIGFuIGV4dGVuc2lvbiBzbG90LlxuICpcbiAqIFRoaXMgd2lsbCBjYXVzZSB0aGUgZXh0ZW5zaW9uIHRvIGJlIHJlbmRlcmVkIGludG8gdGhlIHNwZWNpZmllZFxuICogZXh0ZW5zaW9uIHNsb3QsIHVubGVzcyBpdCBpcyByZW1vdmVkIGJ5IGNvbmZpZ3VyYXRpb24uIFVzaW5nXG4gKiBgYXR0YWNoYCBpcyBhbiBhbHRlcm5hdGl2ZSB0byBzcGVjaWZ5aW5nIHRoZSBgc2xvdGAgb3IgYHNsb3RzYFxuICogaW4gdGhlIGV4dGVuc2lvbiBkZWNsYXJhdGlvbi5cbiAqXG4gKiBJdCBpcyBwYXJ0aWN1bGFybHkgdXNlZnVsIHdoZW4gY3JlYXRpbmcgYSBzbG90IGludG8gd2hpY2hcbiAqIHlvdSB3YW50IHRvIHJlbmRlciBhbiBleGlzdGluZyBleHRlbnNpb24uIFRoaXMgZW5hYmxlcyB5b3VcbiAqIHRvIGRvIHNvIHdpdGhvdXQgbW9kaWZ5aW5nIHRoZSBleHRlbnNpb24ncyBkZWNsYXJhdGlvbiwgd2hpY2hcbiAqIG1heSBiZSBpbXByYWN0aWNhbCBvciBpbmFwcHJvcHJpYXRlLCBmb3IgZXhhbXBsZSBpZiB5b3UgYXJlXG4gKiB3cml0aW5nIGEgbW9kdWxlIGZvciBhIHNwZWNpZmljIGltcGxlbWVudGF0aW9uLlxuICpcbiAqIEBwYXJhbSBzbG90TmFtZSBhIG5hbWUgdW5pcXVlbHkgaWRlbnRpZnlpbmcgdGhlIHNsb3RcbiAqIEBwYXJhbSBleHRlbnNpb25JZCBhbiBleHRlbnNpb24gbmFtZSwgd2l0aCBhbiBvcHRpb25hbCAjLXN1ZmZpeFxuICogICAgdG8gZGlzdGluZ3Vpc2ggaXQgZnJvbSBvdGhlciBpbnN0YW5jZXMgb2YgdGhlIHNhbWUgZXh0ZW5zaW9uXG4gKiAgICBhdHRhY2hlZCB0byB0aGUgc2FtZSBzbG90LlxuICovXG5leHBvcnQgZnVuY3Rpb24gYXR0YWNoKHNsb3ROYW1lOiBzdHJpbmcsIGV4dGVuc2lvbklkOiBzdHJpbmcpIHtcbiAgdXBkYXRlSW50ZXJuYWxFeHRlbnNpb25TdG9yZSgoc3RhdGUpID0+IHtcbiAgICBjb25zdCBleGlzdGluZ1Nsb3QgPSBzdGF0ZS5zbG90c1tzbG90TmFtZV07XG5cbiAgICBpZiAoIWV4aXN0aW5nU2xvdCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIHNsb3RzOiB7XG4gICAgICAgICAgLi4uc3RhdGUuc2xvdHMsXG4gICAgICAgICAgW3Nsb3ROYW1lXToge1xuICAgICAgICAgICAgLi4uY3JlYXRlTmV3RXh0ZW5zaW9uU2xvdEluZm8oc2xvdE5hbWUpLFxuICAgICAgICAgICAgYXR0YWNoZWRJZHM6IFtleHRlbnNpb25JZF0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICBzbG90czoge1xuICAgICAgICAgIC4uLnN0YXRlLnNsb3RzLFxuICAgICAgICAgIFtzbG90TmFtZV06IHtcbiAgICAgICAgICAgIC4uLmV4aXN0aW5nU2xvdCxcbiAgICAgICAgICAgIGF0dGFjaGVkSWRzOiBbLi4uZXhpc3RpbmdTbG90LmF0dGFjaGVkSWRzLCBleHRlbnNpb25JZF0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH07XG4gICAgfVxuICB9KTtcbn1cblxuLyoqIEF2b2lkIHVzaW5nIHRoaXMuIEV4dGVuc2lvbiBhdHRhY2htZW50cyBzaG91bGQgYmUgY29uc2lkZXJlZCBkZWNsYXJhdGl2ZS4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkZXRhY2goZXh0ZW5zaW9uU2xvdE5hbWU6IHN0cmluZywgZXh0ZW5zaW9uSWQ6IHN0cmluZykge1xuICB1cGRhdGVJbnRlcm5hbEV4dGVuc2lvblN0b3JlKChzdGF0ZSkgPT4ge1xuICAgIGNvbnN0IGV4aXN0aW5nU2xvdCA9IHN0YXRlLnNsb3RzW2V4dGVuc2lvblNsb3ROYW1lXTtcblxuICAgIGlmIChleGlzdGluZ1Nsb3QgJiYgZXhpc3RpbmdTbG90LmF0dGFjaGVkSWRzLmluY2x1ZGVzKGV4dGVuc2lvbklkKSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIHNsb3RzOiB7XG4gICAgICAgICAgLi4uc3RhdGUuc2xvdHMsXG4gICAgICAgICAgW2V4dGVuc2lvblNsb3ROYW1lXToge1xuICAgICAgICAgICAgLi4uZXhpc3RpbmdTbG90LFxuICAgICAgICAgICAgYXR0YWNoZWRJZHM6IGV4aXN0aW5nU2xvdC5hdHRhY2hlZElkcy5maWx0ZXIoXG4gICAgICAgICAgICAgIChpZCkgPT4gaWQgIT09IGV4dGVuc2lvbklkXG4gICAgICAgICAgICApLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICB9O1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gc3RhdGU7XG4gICAgfVxuICB9KTtcbn1cblxuLyoqIEF2b2lkIHVzaW5nIHRoaXMuIEV4dGVuc2lvbiBhdHRhY2htZW50cyBzaG91bGQgYmUgY29uc2lkZXJlZCBkZWNsYXJhdGl2ZS4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkZXRhY2hBbGwoZXh0ZW5zaW9uU2xvdE5hbWU6IHN0cmluZykge1xuICB1cGRhdGVJbnRlcm5hbEV4dGVuc2lvblN0b3JlKChzdGF0ZSkgPT4ge1xuICAgIGNvbnN0IGV4aXN0aW5nU2xvdCA9IHN0YXRlLnNsb3RzW2V4dGVuc2lvblNsb3ROYW1lXTtcblxuICAgIGlmIChleGlzdGluZ1Nsb3QpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICBzbG90czoge1xuICAgICAgICAgIC4uLnN0YXRlLnNsb3RzLFxuICAgICAgICAgIFtleHRlbnNpb25TbG90TmFtZV06IHtcbiAgICAgICAgICAgIC4uLmV4aXN0aW5nU2xvdCxcbiAgICAgICAgICAgIGF0dGFjaGVkSWRzOiBbXSxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHN0YXRlO1xuICAgIH1cbiAgfSk7XG59XG5cbi8qKlxuICogR2V0IGFuIG9yZGVyIGluZGV4IGZvciB0aGUgZXh0ZW5zaW9uLiBUaGlzIHdpbGxcbiAqIGNvbWUgZnJvbSBlaXRoZXIgaXRzIGNvbmZpZ3VyZWQgb3JkZXIsIGl0cyByZWdpc3RlcmVkIG9yZGVyXG4gKiBwYXJhbWV0ZXIsIG9yIHRoZSBvcmRlciBpbiB3aGljaCBpdCBoYXBwZW5lZCB0byBiZSBhdHRhY2hlZC5cbiAqL1xuZnVuY3Rpb24gZ2V0T3JkZXIoXG4gIGV4dGVuc2lvbklkOiBzdHJpbmcsXG4gIGNvbmZpZ3VyZWRPcmRlcjogQXJyYXk8c3RyaW5nPixcbiAgcmVnaXN0ZXJlZE9yZGVySW5kZXg6IG51bWJlciB8IHVuZGVmaW5lZCxcbiAgYXR0YWNoZWRPcmRlcjogQXJyYXk8c3RyaW5nPlxuKSB7XG4gIGNvbnN0IGNvbmZpZ3VyZWRJbmRleCA9IGNvbmZpZ3VyZWRPcmRlci5pbmRleE9mKGV4dGVuc2lvbklkKTtcbiAgaWYgKGNvbmZpZ3VyZWRJbmRleCAhPT0gLTEpIHtcbiAgICByZXR1cm4gY29uZmlndXJlZEluZGV4O1xuICB9IGVsc2UgaWYgKHJlZ2lzdGVyZWRPcmRlckluZGV4ICE9PSB1bmRlZmluZWQpIHtcbiAgICAvLyBleHRlbnNpb25zIHRoYXQgZG9uJ3QgaGF2ZSBhIGNvbmZpZ3VyZWQgb3JkZXIgc2hvdWxkIGFwcGVhciBhZnRlciB0aG9zZSB0aGF0IGRvXG4gICAgcmV0dXJuIDEwMDAgKyByZWdpc3RlcmVkT3JkZXJJbmRleDtcbiAgfSBlbHNlIHtcbiAgICBjb25zdCBhc3NpZ25lZEluZGV4ID0gYXR0YWNoZWRPcmRlci5pbmRleE9mKGV4dGVuc2lvbklkKTtcbiAgICBpZiAoYXNzaWduZWRJbmRleCAhPT0gLTEpIHtcbiAgICAgIC8vIGV4dGVuc2lvbnMgdGhhdCBoYXZlIG5laXRoZXIgYSBjb25maWd1cmVkIG5vciByZWdpc3RlcmVkIG9yZGVyIHNob3VsZCBhcHBlYXJcbiAgICAgIC8vIGFmdGVyIGFsbCBvdGhlcnNcbiAgICAgIHJldHVybiAyMDAwICsgYXNzaWduZWRJbmRleDtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIC0xO1xuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIEZpbHRlcnMgYSBsaXN0IG9mIGV4dGVuc2lvbnMgYWNjb3JkaW5nIHRvIHdoZXRoZXIgdGhleSBzdXBwb3J0IHRoZVxuICogY3VycmVudCBjb25uZWN0aXZpdHkgc3RhdHVzLlxuICpcbiAqIEBwYXJhbSBhc3NpZ25lZEV4dGVuc2lvbnMgVGhlIGxpc3Qgb2YgZXh0ZW5zaW9ucyB0byBmaWx0ZXIuXG4gKiBAcGFyYW0gb25saW5lIFdoZXRoZXIgdGhlIGFwcCBpcyBjdXJyZW50bHkgb25saW5lLiBJZiBgbnVsbGAsIHVzZXMgYG5hdmlnYXRvci5vbkxpbmVgLlxuICogQHJldHVybnMgQSBsaXN0IG9mIGV4dGVuc2lvbnMgdGhhdCBzaG91bGQgYmUgcmVuZGVyZWRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldENvbm5lY3RlZEV4dGVuc2lvbnMoXG4gIGFzc2lnbmVkRXh0ZW5zaW9uczogQXJyYXk8QXNzaWduZWRFeHRlbnNpb24+LFxuICBvbmxpbmU6IGJvb2xlYW4gfCBudWxsID0gbnVsbFxuKTogQXJyYXk8Q29ubmVjdGVkRXh0ZW5zaW9uPiB7XG4gIGNvbnN0IGlzT25saW5lID0gb25saW5lID8/IG5hdmlnYXRvci5vbkxpbmU7XG4gIHJldHVybiBhc3NpZ25lZEV4dGVuc2lvbnMuZmlsdGVyKChlKSA9PlxuICAgIGNoZWNrU3RhdHVzRm9yKGlzT25saW5lLCBlLm9ubGluZSwgZS5vZmZsaW5lKVxuICApO1xufVxuXG5mdW5jdGlvbiBnZXRBc3NpZ25lZEV4dGVuc2lvbnNGcm9tU2xvdERhdGEoXG4gIHNsb3ROYW1lOiBzdHJpbmcsXG4gIGludGVybmFsU3RhdGU6IEV4dGVuc2lvbkludGVybmFsU3RvcmUsXG4gIGNvbmZpZzogRXh0ZW5zaW9uU2xvdENvbmZpZ09iamVjdCxcbiAgZXh0ZW5zaW9uQ29uZmlnU3RvcmVTdGF0ZTogRXh0ZW5zaW9uc0NvbmZpZ1N0b3JlXG4pOiBBcnJheTxBc3NpZ25lZEV4dGVuc2lvbj4ge1xuICBjb25zdCBhdHRhY2hlZElkcyA9IGludGVybmFsU3RhdGUuc2xvdHNbc2xvdE5hbWVdLmF0dGFjaGVkSWRzO1xuICBjb25zdCBhc3NpZ25lZElkcyA9IGNhbGN1bGF0ZUFzc2lnbmVkSWRzKGNvbmZpZywgYXR0YWNoZWRJZHMpO1xuICBjb25zdCBleHRlbnNpb25zOiBBcnJheTxBc3NpZ25lZEV4dGVuc2lvbj4gPSBbXTtcbiAgbGV0IHVzZXI6IExvZ2dlZEluVXNlciB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcblxuICBmb3IgKGxldCBpZCBvZiBhc3NpZ25lZElkcykge1xuICAgIGNvbnN0IHsgY29uZmlnOiBleHRlbnNpb25Db25maWcgfSA9IGdldEV4dGVuc2lvbkNvbmZpZ0Zyb21TdG9yZShcbiAgICAgIGV4dGVuc2lvbkNvbmZpZ1N0b3JlU3RhdGUsXG4gICAgICBzbG90TmFtZSxcbiAgICAgIGlkXG4gICAgKTtcbiAgICBjb25zdCBuYW1lID0gZ2V0RXh0ZW5zaW9uTmFtZUZyb21JZChpZCk7XG4gICAgY29uc3QgZXh0ZW5zaW9uID0gaW50ZXJuYWxTdGF0ZS5leHRlbnNpb25zW25hbWVdO1xuICAgIC8vIGlmIHRoZSBleHRlbnNpb24gaGFzIG5vdCBiZWVuIHJlZ2lzdGVyZWQgeWV0LCBkbyBub3QgaW5jbHVkZSBpdFxuICAgIGlmIChleHRlbnNpb24pIHtcbiAgICAgIGNvbnN0IHJlcXVpcmVkUHJpdmlsZWdlcyA9XG4gICAgICAgIGV4dGVuc2lvbkNvbmZpZz8uW1wiRGlzcGxheSBjb25kaXRpb25zXCJdPy5wcml2aWxlZ2VzID8/XG4gICAgICAgIGV4dGVuc2lvbi5wcml2aWxlZ2VzO1xuICAgICAgaWYgKFxuICAgICAgICByZXF1aXJlZFByaXZpbGVnZXMgJiZcbiAgICAgICAgKHR5cGVvZiByZXF1aXJlZFByaXZpbGVnZXMgPT09IFwic3RyaW5nXCIgfHxcbiAgICAgICAgICAoQXJyYXkuaXNBcnJheShyZXF1aXJlZFByaXZpbGVnZXMpICYmIHJlcXVpcmVkUHJpdmlsZWdlcy5sZW5ndGggPiAwKSlcbiAgICAgICkge1xuICAgICAgICBpZiAoaXNVbmRlZmluZWQodXNlcikpIHtcbiAgICAgICAgICB1c2VyID0gZ2V0U2Vzc2lvblN0b3JlKCkuZ2V0U3RhdGUoKS5zZXNzaW9uPy51c2VyO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCF1c2VyKSB7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXVzZXJIYXNBY2Nlc3MocmVxdWlyZWRQcml2aWxlZ2VzLCB1c2VyKSkge1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGV4dGVuc2lvbnMucHVzaCh7XG4gICAgICAgIGlkLFxuICAgICAgICBuYW1lLFxuICAgICAgICBtb2R1bGVOYW1lOiBleHRlbnNpb24ubW9kdWxlTmFtZSxcbiAgICAgICAgY29uZmlnOiBleHRlbnNpb25Db25maWcsXG4gICAgICAgIG1ldGE6IGV4dGVuc2lvbi5tZXRhLFxuICAgICAgICBvbmxpbmU6IGV4dGVuc2lvbi5vbmxpbmUsXG4gICAgICAgIG9mZmxpbmU6IGV4dGVuc2lvbi5vZmZsaW5lLFxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGV4dGVuc2lvbnM7XG59XG5cbi8qKlxuICogR2V0cyB0aGUgbGlzdCBvZiBleHRlbnNpb25zIGFzc2lnbmVkIHRvIGEgZ2l2ZW4gc2xvdFxuICpcbiAqIEBwYXJhbSBzbG90TmFtZSBUaGUgc2xvdCB0byBsb2FkIHRoZSBhc3NpZ25lZCBleHRlbnNpb25zIGZvclxuICogQHJldHVybnMgQW4gYXJyYXkgb2YgZXh0ZW5zaW9ucyBhc3NpZ25lZCB0byB0aGUgbmFtZWQgc2xvdFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0QXNzaWduZWRFeHRlbnNpb25zKFxuICBzbG90TmFtZTogc3RyaW5nXG4pOiBBcnJheTxBc3NpZ25lZEV4dGVuc2lvbj4ge1xuICBjb25zdCBpbnRlcm5hbFN0YXRlID0gZXh0ZW5zaW9uSW50ZXJuYWxTdG9yZS5nZXRTdGF0ZSgpO1xuICBjb25zdCB7IGNvbmZpZzogc2xvdENvbmZpZyB9ID0gZ2V0RXh0ZW5zaW9uU2xvdENvbmZpZyhzbG90TmFtZSk7XG4gIGNvbnN0IGV4dGVuc2lvblN0b3JlU3RhdGUgPSBleHRlbnNpb25zQ29uZmlnU3RvcmUuZ2V0U3RhdGUoKTtcbiAgcmV0dXJuIGdldEFzc2lnbmVkRXh0ZW5zaW9uc0Zyb21TbG90RGF0YShcbiAgICBzbG90TmFtZSxcbiAgICBpbnRlcm5hbFN0YXRlLFxuICAgIHNsb3RDb25maWcsXG4gICAgZXh0ZW5zaW9uU3RvcmVTdGF0ZVxuICApO1xufVxuXG5mdW5jdGlvbiBjYWxjdWxhdGVBc3NpZ25lZElkcyhcbiAgY29uZmlnOiBFeHRlbnNpb25TbG90Q29uZmlnT2JqZWN0LFxuICBhdHRhY2hlZElkczogQXJyYXk8c3RyaW5nPlxuKSB7XG4gIGNvbnN0IGFkZGVkSWRzID0gY29uZmlnLmFkZCB8fCBbXTtcbiAgY29uc3QgcmVtb3ZlZElkcyA9IGNvbmZpZy5yZW1vdmUgfHwgW107XG4gIGNvbnN0IGlkT3JkZXIgPSBjb25maWcub3JkZXIgfHwgW107XG4gIGNvbnN0IHsgZXh0ZW5zaW9ucyB9ID0gZXh0ZW5zaW9uSW50ZXJuYWxTdG9yZS5nZXRTdGF0ZSgpO1xuXG4gIHJldHVybiBbLi4uYXR0YWNoZWRJZHMsIC4uLmFkZGVkSWRzXVxuICAgIC5maWx0ZXIoKGlkKSA9PiAhcmVtb3ZlZElkcy5pbmNsdWRlcyhpZCkpXG4gICAgLnNvcnQoKGlkQSwgaWRCKSA9PiB7XG4gICAgICBjb25zdCBhaSA9IGdldE9yZGVyKFxuICAgICAgICBpZEEsXG4gICAgICAgIGlkT3JkZXIsXG4gICAgICAgIGV4dGVuc2lvbnNbZ2V0RXh0ZW5zaW9uTmFtZUZyb21JZChpZEEpXT8ub3JkZXIsXG4gICAgICAgIGF0dGFjaGVkSWRzXG4gICAgICApO1xuICAgICAgY29uc3QgYmkgPSBnZXRPcmRlcihcbiAgICAgICAgaWRCLFxuICAgICAgICBpZE9yZGVyLFxuICAgICAgICBleHRlbnNpb25zW2dldEV4dGVuc2lvbk5hbWVGcm9tSWQoaWRCKV0/Lm9yZGVyLFxuICAgICAgICBhdHRhY2hlZElkc1xuICAgICAgKTtcblxuICAgICAgaWYgKGJpID09PSAtMSkge1xuICAgICAgICByZXR1cm4gLTE7XG4gICAgICB9IGVsc2UgaWYgKGFpID09PSAtMSkge1xuICAgICAgICByZXR1cm4gMTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBhaSAtIGJpO1xuICAgICAgfVxuICAgIH0pO1xufVxuXG4vKipcbiAqIFVzZWQgYnkgYnkgZXh0ZW5zaW9uIHNsb3RzIGF0IG1vdW50IHRpbWUuXG4gKlxuICogQHBhcmFtIG1vZHVsZU5hbWUgVGhlIG5hbWUgb2YgdGhlIG1vZHVsZSB0aGF0IGNvbnRhaW5zIHRoZSBleHRlbnNpb24gc2xvdFxuICogQHBhcmFtIHNsb3ROYW1lIFRoZSBleHRlbnNpb24gc2xvdCBuYW1lIHRoYXQgaXMgYWN0dWFsbHkgdXNlZFxuICogQGludGVybmFsXG4gKi9cbmV4cG9ydCBjb25zdCByZWdpc3RlckV4dGVuc2lvblNsb3Q6IChcbiAgbW9kdWxlTmFtZTogc3RyaW5nLFxuICBzbG90TmFtZTogc3RyaW5nXG4pID0+IHZvaWQgPSAobW9kdWxlTmFtZSwgc2xvdE5hbWUpID0+XG4gIGV4dGVuc2lvbkludGVybmFsU3RvcmUuc2V0U3RhdGUoKHN0YXRlKSA9PiB7XG4gICAgY29uc3QgZXhpc3RpbmdNb2R1bGVOYW1lID0gc3RhdGUuc2xvdHNbc2xvdE5hbWVdPy5tb2R1bGVOYW1lO1xuICAgIGlmIChleGlzdGluZ01vZHVsZU5hbWUgJiYgZXhpc3RpbmdNb2R1bGVOYW1lICE9IG1vZHVsZU5hbWUpIHtcbiAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgYEFuIGV4dGVuc2lvbiBzbG90IHdpdGggdGhlIG5hbWUgJyR7c2xvdE5hbWV9JyBhbHJlYWR5IGV4aXN0cy4gUmVmdXNpbmcgdG8gcmVnaXN0ZXIgdGhlIHNhbWUgc2xvdCBuYW1lIHR3aWNlIChpbiBcInJlZ2lzdGVyRXh0ZW5zaW9uU2xvdFwiKS4gVGhlIGV4aXN0aW5nIG9uZSBpcyBmcm9tIG1vZHVsZSAke2V4aXN0aW5nTW9kdWxlTmFtZX0uYFxuICAgICAgKTtcbiAgICAgIHJldHVybiBzdGF0ZTtcbiAgICB9XG4gICAgaWYgKGV4aXN0aW5nTW9kdWxlTmFtZSAmJiBleGlzdGluZ01vZHVsZU5hbWUgPT0gbW9kdWxlTmFtZSkge1xuICAgICAgLy8gUmUtcmVuZGVyaW5nIGFuIGV4aXN0aW5nIHNsb3RcbiAgICAgIHJldHVybiBzdGF0ZTtcbiAgICB9XG4gICAgaWYgKHN0YXRlLnNsb3RzW3Nsb3ROYW1lXSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIHNsb3RzOiB7XG4gICAgICAgICAgLi4uc3RhdGUuc2xvdHMsXG4gICAgICAgICAgW3Nsb3ROYW1lXToge1xuICAgICAgICAgICAgLi4uc3RhdGUuc2xvdHNbc2xvdE5hbWVdLFxuICAgICAgICAgICAgbW9kdWxlTmFtZSxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgfTtcbiAgICB9XG4gICAgY29uc3Qgc2xvdCA9IGNyZWF0ZU5ld0V4dGVuc2lvblNsb3RJbmZvKHNsb3ROYW1lLCBtb2R1bGVOYW1lKTtcbiAgICByZXR1cm4ge1xuICAgICAgLi4uc3RhdGUsXG4gICAgICBzbG90czoge1xuICAgICAgICAuLi5zdGF0ZS5zbG90cyxcbiAgICAgICAgW3Nsb3ROYW1lXTogc2xvdCxcbiAgICAgIH0sXG4gICAgfTtcbiAgfSk7XG5cbi8qKlxuICogQGludGVybmFsXG4gKiBKdXN0IGZvciB0ZXN0aW5nLlxuICovXG5leHBvcnQgY29uc3QgcmVzZXQ6ICgpID0+IHZvaWQgPSAoKSA9PlxuICBleHRlbnNpb25TdG9yZS5zZXRTdGF0ZSgoKSA9PiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHNsb3RzOiB7fSxcbiAgICAgIGV4dGVuc2lvbnM6IHt9LFxuICAgIH07XG4gIH0pO1xuIl0sIm5hbWVzIjpbImdldFNlc3Npb25TdG9yZSIsInVzZXJIYXNBY2Nlc3MiLCJnZXRFeHRlbnNpb25Db25maWdGcm9tU3RvcmUiLCJnZXRFeHRlbnNpb25zQ29uZmlnU3RvcmUiLCJnZXRFeHRlbnNpb25TbG90Q29uZmlnIiwiZ2V0RXh0ZW5zaW9uU2xvdENvbmZpZ0Zyb21TdG9yZSIsImdldEV4dGVuc2lvblNsb3RzQ29uZmlnU3RvcmUiLCJpc0VxdWFsIiwiaXNVbmRlZmluZWQiLCJnZXRFeHRlbnNpb25JbnRlcm5hbFN0b3JlIiwiY2hlY2tTdGF0dXNGb3IiLCJnZXRFeHRlbnNpb25TdG9yZSIsInVwZGF0ZUludGVybmFsRXh0ZW5zaW9uU3RvcmUiLCJleHRlbnNpb25JbnRlcm5hbFN0b3JlIiwiZXh0ZW5zaW9uU3RvcmUiLCJzbG90c0NvbmZpZ1N0b3JlIiwiZXh0ZW5zaW9uc0NvbmZpZ1N0b3JlIiwidXBkYXRlRXh0ZW5zaW9uT3V0cHV0U3RvcmUiLCJpbnRlcm5hbFN0YXRlIiwiZXh0ZW5zaW9uU2xvdENvbmZpZ3MiLCJzbG90cyIsIk9iamVjdCIsImVudHJpZXMiLCJzbG90TmFtZSIsInNsb3QiLCJjb25maWciLCJuYW1lIiwiYXNzaWduZWRFeHRlbnNpb25zIiwiZ2V0QXNzaWduZWRFeHRlbnNpb25zRnJvbVNsb3REYXRhIiwibW9kdWxlTmFtZSIsImdldFN0YXRlIiwic2V0U3RhdGUiLCJzdWJzY3JpYmUiLCJpbnRlcm5hbFN0b3JlIiwic2xvdENvbmZpZ3MiLCJleHRlbnNpb25Db25maWdzIiwiY3JlYXRlTmV3RXh0ZW5zaW9uU2xvdEluZm8iLCJhdHRhY2hlZElkcyIsImdldEV4dGVuc2lvbk5hbWVGcm9tSWQiLCJleHRlbnNpb25JZCIsInNwbGl0IiwiZXh0ZW5zaW9uTmFtZSIsImdldEV4dGVuc2lvblJlZ2lzdHJhdGlvbkZyb20iLCJzdGF0ZSIsImV4dGVuc2lvbnMiLCJnZXRFeHRlbnNpb25SZWdpc3RyYXRpb24iLCJyZWdpc3RlckV4dGVuc2lvbiIsImV4dGVuc2lvblJlZ2lzdHJhdGlvbiIsImluc3RhbmNlcyIsImF0dGFjaCIsImV4aXN0aW5nU2xvdCIsImRldGFjaCIsImV4dGVuc2lvblNsb3ROYW1lIiwiaW5jbHVkZXMiLCJmaWx0ZXIiLCJpZCIsImRldGFjaEFsbCIsImdldE9yZGVyIiwiY29uZmlndXJlZE9yZGVyIiwicmVnaXN0ZXJlZE9yZGVySW5kZXgiLCJhdHRhY2hlZE9yZGVyIiwiY29uZmlndXJlZEluZGV4IiwiaW5kZXhPZiIsInVuZGVmaW5lZCIsImFzc2lnbmVkSW5kZXgiLCJnZXRDb25uZWN0ZWRFeHRlbnNpb25zIiwib25saW5lIiwiaXNPbmxpbmUiLCJuYXZpZ2F0b3IiLCJvbkxpbmUiLCJlIiwib2ZmbGluZSIsImV4dGVuc2lvbkNvbmZpZ1N0b3JlU3RhdGUiLCJhc3NpZ25lZElkcyIsImNhbGN1bGF0ZUFzc2lnbmVkSWRzIiwidXNlciIsImV4dGVuc2lvbkNvbmZpZyIsImV4dGVuc2lvbiIsInJlcXVpcmVkUHJpdmlsZWdlcyIsInByaXZpbGVnZXMiLCJBcnJheSIsImlzQXJyYXkiLCJsZW5ndGgiLCJzZXNzaW9uIiwicHVzaCIsIm1ldGEiLCJnZXRBc3NpZ25lZEV4dGVuc2lvbnMiLCJzbG90Q29uZmlnIiwiZXh0ZW5zaW9uU3RvcmVTdGF0ZSIsImFkZGVkSWRzIiwiYWRkIiwicmVtb3ZlZElkcyIsInJlbW92ZSIsImlkT3JkZXIiLCJvcmRlciIsInNvcnQiLCJpZEEiLCJpZEIiLCJhaSIsImJpIiwicmVnaXN0ZXJFeHRlbnNpb25TbG90IiwiZXhpc3RpbmdNb2R1bGVOYW1lIiwiY29uc29sZSIsIndhcm4iLCJyZXNldCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../framework/esm-extensions/src/extensions.ts\n");
6778
6767
 
6779
6768
  /***/ }),
6780
6769
 
@@ -6829,7 +6818,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
6829
6818
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
6830
6819
 
6831
6820
  "use strict";
6832
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"getExtensionInternalStore\": () => (/* binding */ getExtensionInternalStore),\n/* harmony export */ \"getExtensionStore\": () => (/* binding */ getExtensionStore),\n/* harmony export */ \"updateInternalExtensionStore\": () => (/* binding */ updateInternalExtensionStore)\n/* harmony export */ });\n/* harmony import */ var lodash_es_isEqual__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! lodash-es/isEqual */ \"../../../node_modules/lodash-es/isEqual.js\");\n/* harmony import */ var _openmrs_esm_config__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @openmrs/esm-config */ \"../../framework/esm-config/src/index.ts\");\n/* harmony import */ var _openmrs_esm_state__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @openmrs/esm-state */ \"../../framework/esm-state/src/index.ts\");\n/** @module @category Extension */ \n\n\nvar extensionInternalStore = (0,_openmrs_esm_state__WEBPACK_IMPORTED_MODULE_1__.createGlobalStore)(\"extensionsInternal\", {\n slots: {},\n extensions: {}\n});\n/**\n * This gets the extension system's internal store. It is subject\n * to change radically and without warning. It should not be used\n * outside esm-core.\n * @internal\n */ var getExtensionInternalStore = function() {\n return (0,_openmrs_esm_state__WEBPACK_IMPORTED_MODULE_1__.getGlobalStore)(\"extensionsInternal\", {\n slots: {},\n extensions: {}\n });\n};\n/** @internal */ function updateInternalExtensionStore(updater) {\n var state = extensionInternalStore.getState();\n var newState = updater(state);\n if (newState !== state) {\n extensionInternalStore.setState(newState);\n }\n}\n/**\n * This returns a [store](https://github.com/developit/unistore#store)\n * that modules can use to get information about the state of the\n * extension system.\n */ var getExtensionStore = function() {\n return (0,_openmrs_esm_state__WEBPACK_IMPORTED_MODULE_1__.getGlobalStore)(\"extensions\", {\n slots: {}\n });\n};\n/**\n * esm-config maintains its own store of the extension information it needs\n * to generate extension configs. We keep it updated based on what's in\n * `extensionStore`.\n */ updateConfigExtensionStore(extensionInternalStore.getState());\nextensionInternalStore.subscribe(updateConfigExtensionStore);\nfunction updateConfigExtensionStore(extensionState) {\n var configExtensionRecords = [];\n var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;\n try {\n for(var _iterator = Object.values(extensionState.extensions)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){\n var extensionInfo = _step.value;\n var _iteratorNormalCompletion1 = true, _didIteratorError1 = false, _iteratorError1 = undefined;\n try {\n for(var _iterator1 = extensionInfo.instances[Symbol.iterator](), _step1; !(_iteratorNormalCompletion1 = (_step1 = _iterator1.next()).done); _iteratorNormalCompletion1 = true){\n var instance = _step1.value;\n configExtensionRecords.push({\n slotModuleName: instance.slotModuleName,\n extensionModuleName: extensionInfo.moduleName,\n slotName: instance.slotName,\n extensionId: instance.id\n });\n }\n } catch (err) {\n _didIteratorError1 = true;\n _iteratorError1 = err;\n } finally{\n try {\n if (!_iteratorNormalCompletion1 && _iterator1.return != null) {\n _iterator1.return();\n }\n } finally{\n if (_didIteratorError1) {\n throw _iteratorError1;\n }\n }\n }\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally{\n try {\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n } finally{\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n if (!(0,lodash_es_isEqual__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(_openmrs_esm_config__WEBPACK_IMPORTED_MODULE_0__.configExtensionStore.getState().mountedExtensions, configExtensionRecords)) {\n _openmrs_esm_config__WEBPACK_IMPORTED_MODULE_0__.configExtensionStore.setState({\n mountedExtensions: configExtensionRecords\n });\n }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vZnJhbWV3b3JrL2VzbS1leHRlbnNpb25zL3NyYy9zdG9yZS50cy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQSxnQ0FBZ0MsR0FDUTtBQU1YO0FBQzBDO0FBb0Z2RSxJQUFNSSx5QkFBeUJGLHFFQUFpQkEsQ0FDOUMsc0JBQ0E7SUFDRUcsT0FBTyxDQUFDO0lBQ1JDLFlBQVksQ0FBQztBQUNmO0FBR0Y7Ozs7O0NBS0MsR0FDTSxJQUFNQyw0QkFBNEI7V0FDdkNKLGtFQUFjQSxDQUF5QixzQkFBc0I7UUFDM0RFLE9BQU8sQ0FBQztRQUNSQyxZQUFZLENBQUM7SUFDZjtFQUFHO0FBRUwsY0FBYyxHQUNQLFNBQVNFLDZCQUNkQyxPQUFrRSxFQUNsRTtJQUNBLElBQU1DLFFBQVFOLHVCQUF1Qk8sUUFBUTtJQUM3QyxJQUFNQyxXQUFXSCxRQUFRQztJQUV6QixJQUFJRSxhQUFhRixPQUFPO1FBQ3RCTix1QkFBdUJTLFFBQVEsQ0FBQ0Q7SUFDbEMsQ0FBQztBQUNILENBQUM7QUFFRDs7OztDQUlDLEdBQ00sSUFBTUUsb0JBQW9CO1dBQy9CWCxrRUFBY0EsQ0FBaUIsY0FBYztRQUMzQ0UsT0FBTyxDQUFDO0lBQ1Y7RUFBRztBQUVMOzs7O0NBSUMsR0FFRFUsMkJBQTJCWCx1QkFBdUJPLFFBQVE7QUFDMURQLHVCQUF1QlksU0FBUyxDQUFDRDtBQUVqQyxTQUFTQSwyQkFBMkJFLGNBQXNDLEVBQUU7SUFDMUUsSUFBTUMseUJBQTZELEVBQUU7UUFFaEU7O1FBQUwsUUFBSyxZQUFxQkMsT0FBT0MsTUFBTSxDQUFDSCxlQUFlWCxVQUFVLHNCQUE1RCx3R0FBK0Q7WUFBL0QsSUFBSWUsZ0JBQUo7Z0JBQ0U7O2dCQUFMLFFBQUssYUFBZ0JBLGNBQWNDLFNBQVMscUJBQXZDLDZHQUF5QztvQkFBekMsSUFBSUMsV0FBSjtvQkFDSEwsdUJBQXVCTSxJQUFJLENBQUM7d0JBQzFCQyxnQkFBZ0JGLFNBQVNFLGNBQWM7d0JBQ3ZDQyxxQkFBcUJMLGNBQWNNLFVBQVU7d0JBQzdDQyxVQUFVTCxTQUFTSyxRQUFRO3dCQUMzQkMsYUFBYU4sU0FBU08sRUFBRTtvQkFDMUI7Z0JBQ0Y7O2dCQVBLO2dCQUFBOzs7eUJBQUE7d0JBQUE7Ozt3QkFBQTs4QkFBQTs7OztRQVFQOztRQVRLO1FBQUE7OztpQkFBQTtnQkFBQTs7O2dCQUFBO3NCQUFBOzs7O0lBVUwsSUFDRSxDQUFDOUIsNkRBQU9BLENBQ05DLDhFQUE2QixHQUFHOEIsaUJBQWlCLEVBQ2pEYix5QkFFRjtRQUNBakIsOEVBQTZCLENBQUM7WUFDNUI4QixtQkFBbUJiO1FBQ3JCO0lBQ0YsQ0FBQztBQUNIIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vQG9wZW5tcnMvZXNtLWFwcC1zaGVsbC8uLi8uLi9mcmFtZXdvcmsvZXNtLWV4dGVuc2lvbnMvc3JjL3N0b3JlLnRzP2UyMjkiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqIEBtb2R1bGUgQGNhdGVnb3J5IEV4dGVuc2lvbiAqL1xuaW1wb3J0IGlzRXF1YWwgZnJvbSBcImxvZGFzaC1lcy9pc0VxdWFsXCI7XG5pbXBvcnQge1xuICBjb25maWdFeHRlbnNpb25TdG9yZSxcbiAgQ29uZmlnRXh0ZW5zaW9uU3RvcmVFbGVtZW50LFxuICBDb25maWdPYmplY3QsXG4gIEV4dGVuc2lvblNsb3RDb25maWdPYmplY3QsXG59IGZyb20gXCJAb3Blbm1ycy9lc20tY29uZmlnXCI7XG5pbXBvcnQgeyBjcmVhdGVHbG9iYWxTdG9yZSwgZ2V0R2xvYmFsU3RvcmUgfSBmcm9tIFwiQG9wZW5tcnMvZXNtLXN0YXRlXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRXh0ZW5zaW9uTWV0YSB7XG4gIFtfOiBzdHJpbmddOiBhbnk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRXh0ZW5zaW9uUmVnaXN0cmF0aW9uIHtcbiAgbmFtZTogc3RyaW5nO1xuICBsb2FkKCk6IFByb21pc2U8YW55PjtcbiAgbW9kdWxlTmFtZTogc3RyaW5nO1xuICBtZXRhOiBFeHRlbnNpb25NZXRhO1xuICBvcmRlcj86IG51bWJlcjtcbiAgb25saW5lPzogYm9vbGVhbiB8IG9iamVjdDtcbiAgb2ZmbGluZT86IGJvb2xlYW4gfCBvYmplY3Q7XG4gIHByaXZpbGVnZXM/OiBzdHJpbmcgfCBzdHJpbmdbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBFeHRlbnNpb25JbmZvIGV4dGVuZHMgRXh0ZW5zaW9uUmVnaXN0cmF0aW9uIHtcbiAgLyoqXG4gICAqIFRoZSBpbnN0YW5jZXMgd2hlcmUgdGhlIGV4dGVuc2lvbiBoYXMgYmVlbiByZW5kZXJlZCB1c2luZyBgcmVuZGVyRXh0ZW5zaW9uYC5cbiAgICovXG4gIGluc3RhbmNlczogQXJyYXk8RXh0ZW5zaW9uSW5zdGFuY2U+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEV4dGVuc2lvbkluc3RhbmNlIHtcbiAgaWQ6IHN0cmluZztcbiAgc2xvdE5hbWU6IHN0cmluZztcbiAgc2xvdE1vZHVsZU5hbWU6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBFeHRlbnNpb25JbnRlcm5hbFN0b3JlIHtcbiAgLyoqIFNsb3RzIGluZGV4ZWQgYnkgbmFtZSAqL1xuICBzbG90czogUmVjb3JkPHN0cmluZywgRXh0ZW5zaW9uU2xvdEluZm8+O1xuICAvKiogRXh0ZW5zaW9ucyBpbmRleGVkIGJ5IG5hbWUgKi9cbiAgZXh0ZW5zaW9uczogUmVjb3JkPHN0cmluZywgRXh0ZW5zaW9uSW5mbz47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRXh0ZW5zaW9uU2xvdEluZm8ge1xuICAvKipcbiAgICogVGhlIG1vZHVsZSBpbiB3aGljaCB0aGUgZXh0ZW5zaW9uIHNsb3QgZXhpc3RzLiBVbmRlZmluZWQgaWYgdGhlIHNsb3RcbiAgICogaGFzbid0IGJlZW4gcmVnaXN0ZXJlZCB5ZXQgKGJ1dCBpdCBoYXMgYmVlbiBhdHRhY2hlZCBvciBhc3NpZ25lZCB0b1xuICAgKiBhbiBleHRlbnNpb24uXG4gICAqL1xuICBtb2R1bGVOYW1lPzogc3RyaW5nO1xuICAvKiogVGhlIG5hbWUgdW5kZXIgd2hpY2ggdGhlIGV4dGVuc2lvbiBzbG90IGhhcyBiZWVuIHJlZ2lzdGVyZWQuICovXG4gIG5hbWU6IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSBzZXQgb2YgZXh0ZW5zaW9uIElEcyB3aGljaCBoYXZlIGJlZW4gYXR0YWNoZWQgdG8gdGhpcyBzbG90IHVzaW5nIGBhdHRhY2hgLlxuICAgKiBIb3dldmVyLCBub3QgYWxsIG9mIHRoZXNlIGV4dGVuc2lvbiBJRHMgc2hvdWxkIGJlIHJlbmRlcmVkLlxuICAgKiBgYXNzaWduZWRJZHNgIGlzIHRoZSBzZXQgZGVmaW5pbmcgdGhvc2UuXG4gICAqL1xuICBhdHRhY2hlZElkczogQXJyYXk8c3RyaW5nPjtcbiAgLyoqIFRoZSBjb25maWd1cmF0aW9uIHByb3ZpZGVkIGZvciB0aGlzIHNsb3QuIGBudWxsYCBpZiBub3QgeWV0IGxvYWRlZC4gKi9cbiAgY29uZmlnOiBFeHRlbnNpb25TbG90Q29uZmlnT2JqZWN0IHwgbnVsbDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBFeHRlbnNpb25TdG9yZSB7XG4gIHNsb3RzOiBSZWNvcmQ8c3RyaW5nLCBFeHRlbnNpb25TbG90U3RhdGU+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEV4dGVuc2lvblNsb3RTdGF0ZSB7XG4gIG1vZHVsZU5hbWU/OiBzdHJpbmc7XG4gIGFzc2lnbmVkRXh0ZW5zaW9uczogQXJyYXk8QXNzaWduZWRFeHRlbnNpb24+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFzc2lnbmVkRXh0ZW5zaW9uIHtcbiAgaWQ6IHN0cmluZztcbiAgbmFtZTogc3RyaW5nO1xuICBtb2R1bGVOYW1lOiBzdHJpbmc7XG4gIG1ldGE6IEV4dGVuc2lvbk1ldGE7XG4gIC8qKiBUaGUgZXh0ZW5zaW9uJ3MgY29uZmlnLiBOb3RlIHRoYXQgdGhpcyB3aWxsIGJlIGBudWxsYCB1bnRpbCB0aGUgc2xvdCBpcyBtb3VudGVkLiAqL1xuICBjb25maWc6IENvbmZpZ09iamVjdCB8IG51bGw7XG4gIG9ubGluZT86IGJvb2xlYW4gfCBvYmplY3Q7XG4gIG9mZmxpbmU/OiBib29sZWFuIHwgb2JqZWN0O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENvbm5lY3RlZEV4dGVuc2lvbiB7XG4gIGlkOiBzdHJpbmc7XG4gIG5hbWU6IHN0cmluZztcbiAgbWV0YTogRXh0ZW5zaW9uTWV0YTtcbiAgLyoqIFRoZSBleHRlbnNpb24ncyBjb25maWcuIE5vdGUgdGhhdCB0aGlzIHdpbGwgYmUgYG51bGxgIHVudGlsIHRoZSBzbG90IGlzIG1vdW50ZWQuICovXG4gIGNvbmZpZzogQ29uZmlnT2JqZWN0IHwgbnVsbDtcbn1cblxuY29uc3QgZXh0ZW5zaW9uSW50ZXJuYWxTdG9yZSA9IGNyZWF0ZUdsb2JhbFN0b3JlPEV4dGVuc2lvbkludGVybmFsU3RvcmU+KFxuICBcImV4dGVuc2lvbnNJbnRlcm5hbFwiLFxuICB7XG4gICAgc2xvdHM6IHt9LFxuICAgIGV4dGVuc2lvbnM6IHt9LFxuICB9XG4pO1xuXG4vKipcbiAqIFRoaXMgZ2V0cyB0aGUgZXh0ZW5zaW9uIHN5c3RlbSdzIGludGVybmFsIHN0b3JlLiBJdCBpcyBzdWJqZWN0XG4gKiB0byBjaGFuZ2UgcmFkaWNhbGx5IGFuZCB3aXRob3V0IHdhcm5pbmcuIEl0IHNob3VsZCBub3QgYmUgdXNlZFxuICogb3V0c2lkZSBlc20tY29yZS5cbiAqIEBpbnRlcm5hbFxuICovXG5leHBvcnQgY29uc3QgZ2V0RXh0ZW5zaW9uSW50ZXJuYWxTdG9yZSA9ICgpID0+XG4gIGdldEdsb2JhbFN0b3JlPEV4dGVuc2lvbkludGVybmFsU3RvcmU+KFwiZXh0ZW5zaW9uc0ludGVybmFsXCIsIHtcbiAgICBzbG90czoge30sXG4gICAgZXh0ZW5zaW9uczoge30sXG4gIH0pO1xuXG4vKiogQGludGVybmFsICovXG5leHBvcnQgZnVuY3Rpb24gdXBkYXRlSW50ZXJuYWxFeHRlbnNpb25TdG9yZShcbiAgdXBkYXRlcjogKHN0YXRlOiBFeHRlbnNpb25JbnRlcm5hbFN0b3JlKSA9PiBFeHRlbnNpb25JbnRlcm5hbFN0b3JlXG4pIHtcbiAgY29uc3Qgc3RhdGUgPSBleHRlbnNpb25JbnRlcm5hbFN0b3JlLmdldFN0YXRlKCk7XG4gIGNvbnN0IG5ld1N0YXRlID0gdXBkYXRlcihzdGF0ZSk7XG5cbiAgaWYgKG5ld1N0YXRlICE9PSBzdGF0ZSkge1xuICAgIGV4dGVuc2lvbkludGVybmFsU3RvcmUuc2V0U3RhdGUobmV3U3RhdGUpO1xuICB9XG59XG5cbi8qKlxuICogVGhpcyByZXR1cm5zIGEgW3N0b3JlXShodHRwczovL2dpdGh1Yi5jb20vZGV2ZWxvcGl0L3VuaXN0b3JlI3N0b3JlKVxuICogdGhhdCBtb2R1bGVzIGNhbiB1c2UgdG8gZ2V0IGluZm9ybWF0aW9uIGFib3V0IHRoZSBzdGF0ZSBvZiB0aGVcbiAqIGV4dGVuc2lvbiBzeXN0ZW0uXG4gKi9cbmV4cG9ydCBjb25zdCBnZXRFeHRlbnNpb25TdG9yZSA9ICgpID0+XG4gIGdldEdsb2JhbFN0b3JlPEV4dGVuc2lvblN0b3JlPihcImV4dGVuc2lvbnNcIiwge1xuICAgIHNsb3RzOiB7fSxcbiAgfSk7XG5cbi8qKlxuICogZXNtLWNvbmZpZyBtYWludGFpbnMgaXRzIG93biBzdG9yZSBvZiB0aGUgZXh0ZW5zaW9uIGluZm9ybWF0aW9uIGl0IG5lZWRzXG4gKiB0byBnZW5lcmF0ZSBleHRlbnNpb24gY29uZmlncy4gV2Uga2VlcCBpdCB1cGRhdGVkIGJhc2VkIG9uIHdoYXQncyBpblxuICogYGV4dGVuc2lvblN0b3JlYC5cbiAqL1xuXG51cGRhdGVDb25maWdFeHRlbnNpb25TdG9yZShleHRlbnNpb25JbnRlcm5hbFN0b3JlLmdldFN0YXRlKCkpO1xuZXh0ZW5zaW9uSW50ZXJuYWxTdG9yZS5zdWJzY3JpYmUodXBkYXRlQ29uZmlnRXh0ZW5zaW9uU3RvcmUpO1xuXG5mdW5jdGlvbiB1cGRhdGVDb25maWdFeHRlbnNpb25TdG9yZShleHRlbnNpb25TdGF0ZTogRXh0ZW5zaW9uSW50ZXJuYWxTdG9yZSkge1xuICBjb25zdCBjb25maWdFeHRlbnNpb25SZWNvcmRzOiBBcnJheTxDb25maWdFeHRlbnNpb25TdG9yZUVsZW1lbnQ+ID0gW107XG5cbiAgZm9yIChsZXQgZXh0ZW5zaW9uSW5mbyBvZiBPYmplY3QudmFsdWVzKGV4dGVuc2lvblN0YXRlLmV4dGVuc2lvbnMpKSB7XG4gICAgZm9yIChsZXQgaW5zdGFuY2Ugb2YgZXh0ZW5zaW9uSW5mby5pbnN0YW5jZXMpIHtcbiAgICAgIGNvbmZpZ0V4dGVuc2lvblJlY29yZHMucHVzaCh7XG4gICAgICAgIHNsb3RNb2R1bGVOYW1lOiBpbnN0YW5jZS5zbG90TW9kdWxlTmFtZSxcbiAgICAgICAgZXh0ZW5zaW9uTW9kdWxlTmFtZTogZXh0ZW5zaW9uSW5mby5tb2R1bGVOYW1lLFxuICAgICAgICBzbG90TmFtZTogaW5zdGFuY2Uuc2xvdE5hbWUsXG4gICAgICAgIGV4dGVuc2lvbklkOiBpbnN0YW5jZS5pZCxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuICBpZiAoXG4gICAgIWlzRXF1YWwoXG4gICAgICBjb25maWdFeHRlbnNpb25TdG9yZS5nZXRTdGF0ZSgpLm1vdW50ZWRFeHRlbnNpb25zLFxuICAgICAgY29uZmlnRXh0ZW5zaW9uUmVjb3Jkc1xuICAgIClcbiAgKSB7XG4gICAgY29uZmlnRXh0ZW5zaW9uU3RvcmUuc2V0U3RhdGUoe1xuICAgICAgbW91bnRlZEV4dGVuc2lvbnM6IGNvbmZpZ0V4dGVuc2lvblJlY29yZHMsXG4gICAgfSk7XG4gIH1cbn1cbiJdLCJuYW1lcyI6WyJpc0VxdWFsIiwiY29uZmlnRXh0ZW5zaW9uU3RvcmUiLCJjcmVhdGVHbG9iYWxTdG9yZSIsImdldEdsb2JhbFN0b3JlIiwiZXh0ZW5zaW9uSW50ZXJuYWxTdG9yZSIsInNsb3RzIiwiZXh0ZW5zaW9ucyIsImdldEV4dGVuc2lvbkludGVybmFsU3RvcmUiLCJ1cGRhdGVJbnRlcm5hbEV4dGVuc2lvblN0b3JlIiwidXBkYXRlciIsInN0YXRlIiwiZ2V0U3RhdGUiLCJuZXdTdGF0ZSIsInNldFN0YXRlIiwiZ2V0RXh0ZW5zaW9uU3RvcmUiLCJ1cGRhdGVDb25maWdFeHRlbnNpb25TdG9yZSIsInN1YnNjcmliZSIsImV4dGVuc2lvblN0YXRlIiwiY29uZmlnRXh0ZW5zaW9uUmVjb3JkcyIsIk9iamVjdCIsInZhbHVlcyIsImV4dGVuc2lvbkluZm8iLCJpbnN0YW5jZXMiLCJpbnN0YW5jZSIsInB1c2giLCJzbG90TW9kdWxlTmFtZSIsImV4dGVuc2lvbk1vZHVsZU5hbWUiLCJtb2R1bGVOYW1lIiwic2xvdE5hbWUiLCJleHRlbnNpb25JZCIsImlkIiwibW91bnRlZEV4dGVuc2lvbnMiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../framework/esm-extensions/src/store.ts\n");
6821
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"getExtensionInternalStore\": () => (/* binding */ getExtensionInternalStore),\n/* harmony export */ \"getExtensionStore\": () => (/* binding */ getExtensionStore),\n/* harmony export */ \"updateInternalExtensionStore\": () => (/* binding */ updateInternalExtensionStore)\n/* harmony export */ });\n/* harmony import */ var lodash_es_isEqual__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! lodash-es/isEqual */ \"../../../node_modules/lodash-es/isEqual.js\");\n/* harmony import */ var _openmrs_esm_config__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @openmrs/esm-config */ \"../../framework/esm-config/src/index.ts\");\n/* harmony import */ var _openmrs_esm_state__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @openmrs/esm-state */ \"../../framework/esm-state/src/index.ts\");\n/** @module @category Extension */ \n\n\nvar extensionInternalStore = (0,_openmrs_esm_state__WEBPACK_IMPORTED_MODULE_1__.createGlobalStore)(\"extensionsInternal\", {\n slots: {},\n extensions: {}\n});\n/**\n * This gets the extension system's internal store. It is subject\n * to change radically and without warning. It should not be used\n * outside esm-core.\n * @internal\n */ var getExtensionInternalStore = function() {\n return (0,_openmrs_esm_state__WEBPACK_IMPORTED_MODULE_1__.getGlobalStore)(\"extensionsInternal\", {\n slots: {},\n extensions: {}\n });\n};\n/** @internal */ function updateInternalExtensionStore(updater) {\n var state = extensionInternalStore.getState();\n var newState = updater(state);\n if (newState !== state) {\n extensionInternalStore.setState(newState);\n }\n}\n/**\n * This returns a store that modules can use to get information about the\n * state of the extension system.\n */ var getExtensionStore = function() {\n return (0,_openmrs_esm_state__WEBPACK_IMPORTED_MODULE_1__.getGlobalStore)(\"extensions\", {\n slots: {}\n });\n};\n/**\n * esm-config maintains its own store of the extension information it needs\n * to generate extension configs. We keep it updated based on what's in\n * `extensionStore`.\n */ updateConfigExtensionStore(extensionInternalStore.getState());\nextensionInternalStore.subscribe(updateConfigExtensionStore);\nfunction updateConfigExtensionStore(extensionState) {\n var configExtensionRecords = [];\n var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;\n try {\n for(var _iterator = Object.values(extensionState.extensions)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){\n var extensionInfo = _step.value;\n var _iteratorNormalCompletion1 = true, _didIteratorError1 = false, _iteratorError1 = undefined;\n try {\n for(var _iterator1 = extensionInfo.instances[Symbol.iterator](), _step1; !(_iteratorNormalCompletion1 = (_step1 = _iterator1.next()).done); _iteratorNormalCompletion1 = true){\n var instance = _step1.value;\n configExtensionRecords.push({\n slotModuleName: instance.slotModuleName,\n extensionModuleName: extensionInfo.moduleName,\n slotName: instance.slotName,\n extensionId: instance.id\n });\n }\n } catch (err) {\n _didIteratorError1 = true;\n _iteratorError1 = err;\n } finally{\n try {\n if (!_iteratorNormalCompletion1 && _iterator1.return != null) {\n _iterator1.return();\n }\n } finally{\n if (_didIteratorError1) {\n throw _iteratorError1;\n }\n }\n }\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally{\n try {\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n } finally{\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n if (!(0,lodash_es_isEqual__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(_openmrs_esm_config__WEBPACK_IMPORTED_MODULE_0__.configExtensionStore.getState().mountedExtensions, configExtensionRecords)) {\n _openmrs_esm_config__WEBPACK_IMPORTED_MODULE_0__.configExtensionStore.setState({\n mountedExtensions: configExtensionRecords\n });\n }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vZnJhbWV3b3JrL2VzbS1leHRlbnNpb25zL3NyYy9zdG9yZS50cy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQSxnQ0FBZ0MsR0FDUTtBQU1YO0FBQzBDO0FBb0Z2RSxJQUFNSSx5QkFBeUJGLHFFQUFpQkEsQ0FDOUMsc0JBQ0E7SUFDRUcsT0FBTyxDQUFDO0lBQ1JDLFlBQVksQ0FBQztBQUNmO0FBR0Y7Ozs7O0NBS0MsR0FDTSxJQUFNQyw0QkFBNEI7V0FDdkNKLGtFQUFjQSxDQUF5QixzQkFBc0I7UUFDM0RFLE9BQU8sQ0FBQztRQUNSQyxZQUFZLENBQUM7SUFDZjtFQUFHO0FBRUwsY0FBYyxHQUNQLFNBQVNFLDZCQUNkQyxPQUFrRSxFQUNsRTtJQUNBLElBQU1DLFFBQVFOLHVCQUF1Qk8sUUFBUTtJQUM3QyxJQUFNQyxXQUFXSCxRQUFRQztJQUV6QixJQUFJRSxhQUFhRixPQUFPO1FBQ3RCTix1QkFBdUJTLFFBQVEsQ0FBQ0Q7SUFDbEMsQ0FBQztBQUNILENBQUM7QUFFRDs7O0NBR0MsR0FDTSxJQUFNRSxvQkFBb0I7V0FDL0JYLGtFQUFjQSxDQUFpQixjQUFjO1FBQzNDRSxPQUFPLENBQUM7SUFDVjtFQUFHO0FBRUw7Ozs7Q0FJQyxHQUVEVSwyQkFBMkJYLHVCQUF1Qk8sUUFBUTtBQUMxRFAsdUJBQXVCWSxTQUFTLENBQUNEO0FBRWpDLFNBQVNBLDJCQUEyQkUsY0FBc0MsRUFBRTtJQUMxRSxJQUFNQyx5QkFBNkQsRUFBRTtRQUVoRTs7UUFBTCxRQUFLLFlBQXFCQyxPQUFPQyxNQUFNLENBQUNILGVBQWVYLFVBQVUsc0JBQTVELHdHQUErRDtZQUEvRCxJQUFJZSxnQkFBSjtnQkFDRTs7Z0JBQUwsUUFBSyxhQUFnQkEsY0FBY0MsU0FBUyxxQkFBdkMsNkdBQXlDO29CQUF6QyxJQUFJQyxXQUFKO29CQUNITCx1QkFBdUJNLElBQUksQ0FBQzt3QkFDMUJDLGdCQUFnQkYsU0FBU0UsY0FBYzt3QkFDdkNDLHFCQUFxQkwsY0FBY00sVUFBVTt3QkFDN0NDLFVBQVVMLFNBQVNLLFFBQVE7d0JBQzNCQyxhQUFhTixTQUFTTyxFQUFFO29CQUMxQjtnQkFDRjs7Z0JBUEs7Z0JBQUE7Ozt5QkFBQTt3QkFBQTs7O3dCQUFBOzhCQUFBOzs7O1FBUVA7O1FBVEs7UUFBQTs7O2lCQUFBO2dCQUFBOzs7Z0JBQUE7c0JBQUE7Ozs7SUFVTCxJQUNFLENBQUM5Qiw2REFBT0EsQ0FDTkMsOEVBQTZCLEdBQUc4QixpQkFBaUIsRUFDakRiLHlCQUVGO1FBQ0FqQiw4RUFBNkIsQ0FBQztZQUM1QjhCLG1CQUFtQmI7UUFDckI7SUFDRixDQUFDO0FBQ0giLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Ab3Blbm1ycy9lc20tYXBwLXNoZWxsLy4uLy4uL2ZyYW1ld29yay9lc20tZXh0ZW5zaW9ucy9zcmMvc3RvcmUudHM/ZTIyOSJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiogQG1vZHVsZSBAY2F0ZWdvcnkgRXh0ZW5zaW9uICovXG5pbXBvcnQgaXNFcXVhbCBmcm9tIFwibG9kYXNoLWVzL2lzRXF1YWxcIjtcbmltcG9ydCB7XG4gIGNvbmZpZ0V4dGVuc2lvblN0b3JlLFxuICBDb25maWdFeHRlbnNpb25TdG9yZUVsZW1lbnQsXG4gIENvbmZpZ09iamVjdCxcbiAgRXh0ZW5zaW9uU2xvdENvbmZpZ09iamVjdCxcbn0gZnJvbSBcIkBvcGVubXJzL2VzbS1jb25maWdcIjtcbmltcG9ydCB7IGNyZWF0ZUdsb2JhbFN0b3JlLCBnZXRHbG9iYWxTdG9yZSB9IGZyb20gXCJAb3Blbm1ycy9lc20tc3RhdGVcIjtcblxuZXhwb3J0IGludGVyZmFjZSBFeHRlbnNpb25NZXRhIHtcbiAgW186IHN0cmluZ106IGFueTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBFeHRlbnNpb25SZWdpc3RyYXRpb24ge1xuICBuYW1lOiBzdHJpbmc7XG4gIGxvYWQoKTogUHJvbWlzZTxhbnk+O1xuICBtb2R1bGVOYW1lOiBzdHJpbmc7XG4gIG1ldGE6IEV4dGVuc2lvbk1ldGE7XG4gIG9yZGVyPzogbnVtYmVyO1xuICBvbmxpbmU/OiBib29sZWFuIHwgb2JqZWN0O1xuICBvZmZsaW5lPzogYm9vbGVhbiB8IG9iamVjdDtcbiAgcHJpdmlsZWdlcz86IHN0cmluZyB8IHN0cmluZ1tdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEV4dGVuc2lvbkluZm8gZXh0ZW5kcyBFeHRlbnNpb25SZWdpc3RyYXRpb24ge1xuICAvKipcbiAgICogVGhlIGluc3RhbmNlcyB3aGVyZSB0aGUgZXh0ZW5zaW9uIGhhcyBiZWVuIHJlbmRlcmVkIHVzaW5nIGByZW5kZXJFeHRlbnNpb25gLlxuICAgKi9cbiAgaW5zdGFuY2VzOiBBcnJheTxFeHRlbnNpb25JbnN0YW5jZT47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRXh0ZW5zaW9uSW5zdGFuY2Uge1xuICBpZDogc3RyaW5nO1xuICBzbG90TmFtZTogc3RyaW5nO1xuICBzbG90TW9kdWxlTmFtZTogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEV4dGVuc2lvbkludGVybmFsU3RvcmUge1xuICAvKiogU2xvdHMgaW5kZXhlZCBieSBuYW1lICovXG4gIHNsb3RzOiBSZWNvcmQ8c3RyaW5nLCBFeHRlbnNpb25TbG90SW5mbz47XG4gIC8qKiBFeHRlbnNpb25zIGluZGV4ZWQgYnkgbmFtZSAqL1xuICBleHRlbnNpb25zOiBSZWNvcmQ8c3RyaW5nLCBFeHRlbnNpb25JbmZvPjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBFeHRlbnNpb25TbG90SW5mbyB7XG4gIC8qKlxuICAgKiBUaGUgbW9kdWxlIGluIHdoaWNoIHRoZSBleHRlbnNpb24gc2xvdCBleGlzdHMuIFVuZGVmaW5lZCBpZiB0aGUgc2xvdFxuICAgKiBoYXNuJ3QgYmVlbiByZWdpc3RlcmVkIHlldCAoYnV0IGl0IGhhcyBiZWVuIGF0dGFjaGVkIG9yIGFzc2lnbmVkIHRvXG4gICAqIGFuIGV4dGVuc2lvbi5cbiAgICovXG4gIG1vZHVsZU5hbWU/OiBzdHJpbmc7XG4gIC8qKiBUaGUgbmFtZSB1bmRlciB3aGljaCB0aGUgZXh0ZW5zaW9uIHNsb3QgaGFzIGJlZW4gcmVnaXN0ZXJlZC4gKi9cbiAgbmFtZTogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIHNldCBvZiBleHRlbnNpb24gSURzIHdoaWNoIGhhdmUgYmVlbiBhdHRhY2hlZCB0byB0aGlzIHNsb3QgdXNpbmcgYGF0dGFjaGAuXG4gICAqIEhvd2V2ZXIsIG5vdCBhbGwgb2YgdGhlc2UgZXh0ZW5zaW9uIElEcyBzaG91bGQgYmUgcmVuZGVyZWQuXG4gICAqIGBhc3NpZ25lZElkc2AgaXMgdGhlIHNldCBkZWZpbmluZyB0aG9zZS5cbiAgICovXG4gIGF0dGFjaGVkSWRzOiBBcnJheTxzdHJpbmc+O1xuICAvKiogVGhlIGNvbmZpZ3VyYXRpb24gcHJvdmlkZWQgZm9yIHRoaXMgc2xvdC4gYG51bGxgIGlmIG5vdCB5ZXQgbG9hZGVkLiAqL1xuICBjb25maWc6IEV4dGVuc2lvblNsb3RDb25maWdPYmplY3QgfCBudWxsO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEV4dGVuc2lvblN0b3JlIHtcbiAgc2xvdHM6IFJlY29yZDxzdHJpbmcsIEV4dGVuc2lvblNsb3RTdGF0ZT47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRXh0ZW5zaW9uU2xvdFN0YXRlIHtcbiAgbW9kdWxlTmFtZT86IHN0cmluZztcbiAgYXNzaWduZWRFeHRlbnNpb25zOiBBcnJheTxBc3NpZ25lZEV4dGVuc2lvbj47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXNzaWduZWRFeHRlbnNpb24ge1xuICBpZDogc3RyaW5nO1xuICBuYW1lOiBzdHJpbmc7XG4gIG1vZHVsZU5hbWU6IHN0cmluZztcbiAgbWV0YTogRXh0ZW5zaW9uTWV0YTtcbiAgLyoqIFRoZSBleHRlbnNpb24ncyBjb25maWcuIE5vdGUgdGhhdCB0aGlzIHdpbGwgYmUgYG51bGxgIHVudGlsIHRoZSBzbG90IGlzIG1vdW50ZWQuICovXG4gIGNvbmZpZzogQ29uZmlnT2JqZWN0IHwgbnVsbDtcbiAgb25saW5lPzogYm9vbGVhbiB8IG9iamVjdDtcbiAgb2ZmbGluZT86IGJvb2xlYW4gfCBvYmplY3Q7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29ubmVjdGVkRXh0ZW5zaW9uIHtcbiAgaWQ6IHN0cmluZztcbiAgbmFtZTogc3RyaW5nO1xuICBtZXRhOiBFeHRlbnNpb25NZXRhO1xuICAvKiogVGhlIGV4dGVuc2lvbidzIGNvbmZpZy4gTm90ZSB0aGF0IHRoaXMgd2lsbCBiZSBgbnVsbGAgdW50aWwgdGhlIHNsb3QgaXMgbW91bnRlZC4gKi9cbiAgY29uZmlnOiBDb25maWdPYmplY3QgfCBudWxsO1xufVxuXG5jb25zdCBleHRlbnNpb25JbnRlcm5hbFN0b3JlID0gY3JlYXRlR2xvYmFsU3RvcmU8RXh0ZW5zaW9uSW50ZXJuYWxTdG9yZT4oXG4gIFwiZXh0ZW5zaW9uc0ludGVybmFsXCIsXG4gIHtcbiAgICBzbG90czoge30sXG4gICAgZXh0ZW5zaW9uczoge30sXG4gIH1cbik7XG5cbi8qKlxuICogVGhpcyBnZXRzIHRoZSBleHRlbnNpb24gc3lzdGVtJ3MgaW50ZXJuYWwgc3RvcmUuIEl0IGlzIHN1YmplY3RcbiAqIHRvIGNoYW5nZSByYWRpY2FsbHkgYW5kIHdpdGhvdXQgd2FybmluZy4gSXQgc2hvdWxkIG5vdCBiZSB1c2VkXG4gKiBvdXRzaWRlIGVzbS1jb3JlLlxuICogQGludGVybmFsXG4gKi9cbmV4cG9ydCBjb25zdCBnZXRFeHRlbnNpb25JbnRlcm5hbFN0b3JlID0gKCkgPT5cbiAgZ2V0R2xvYmFsU3RvcmU8RXh0ZW5zaW9uSW50ZXJuYWxTdG9yZT4oXCJleHRlbnNpb25zSW50ZXJuYWxcIiwge1xuICAgIHNsb3RzOiB7fSxcbiAgICBleHRlbnNpb25zOiB7fSxcbiAgfSk7XG5cbi8qKiBAaW50ZXJuYWwgKi9cbmV4cG9ydCBmdW5jdGlvbiB1cGRhdGVJbnRlcm5hbEV4dGVuc2lvblN0b3JlKFxuICB1cGRhdGVyOiAoc3RhdGU6IEV4dGVuc2lvbkludGVybmFsU3RvcmUpID0+IEV4dGVuc2lvbkludGVybmFsU3RvcmVcbikge1xuICBjb25zdCBzdGF0ZSA9IGV4dGVuc2lvbkludGVybmFsU3RvcmUuZ2V0U3RhdGUoKTtcbiAgY29uc3QgbmV3U3RhdGUgPSB1cGRhdGVyKHN0YXRlKTtcblxuICBpZiAobmV3U3RhdGUgIT09IHN0YXRlKSB7XG4gICAgZXh0ZW5zaW9uSW50ZXJuYWxTdG9yZS5zZXRTdGF0ZShuZXdTdGF0ZSk7XG4gIH1cbn1cblxuLyoqXG4gKiBUaGlzIHJldHVybnMgYSBzdG9yZSB0aGF0IG1vZHVsZXMgY2FuIHVzZSB0byBnZXQgaW5mb3JtYXRpb24gYWJvdXQgdGhlXG4gKiBzdGF0ZSBvZiB0aGUgZXh0ZW5zaW9uIHN5c3RlbS5cbiAqL1xuZXhwb3J0IGNvbnN0IGdldEV4dGVuc2lvblN0b3JlID0gKCkgPT5cbiAgZ2V0R2xvYmFsU3RvcmU8RXh0ZW5zaW9uU3RvcmU+KFwiZXh0ZW5zaW9uc1wiLCB7XG4gICAgc2xvdHM6IHt9LFxuICB9KTtcblxuLyoqXG4gKiBlc20tY29uZmlnIG1haW50YWlucyBpdHMgb3duIHN0b3JlIG9mIHRoZSBleHRlbnNpb24gaW5mb3JtYXRpb24gaXQgbmVlZHNcbiAqIHRvIGdlbmVyYXRlIGV4dGVuc2lvbiBjb25maWdzLiBXZSBrZWVwIGl0IHVwZGF0ZWQgYmFzZWQgb24gd2hhdCdzIGluXG4gKiBgZXh0ZW5zaW9uU3RvcmVgLlxuICovXG5cbnVwZGF0ZUNvbmZpZ0V4dGVuc2lvblN0b3JlKGV4dGVuc2lvbkludGVybmFsU3RvcmUuZ2V0U3RhdGUoKSk7XG5leHRlbnNpb25JbnRlcm5hbFN0b3JlLnN1YnNjcmliZSh1cGRhdGVDb25maWdFeHRlbnNpb25TdG9yZSk7XG5cbmZ1bmN0aW9uIHVwZGF0ZUNvbmZpZ0V4dGVuc2lvblN0b3JlKGV4dGVuc2lvblN0YXRlOiBFeHRlbnNpb25JbnRlcm5hbFN0b3JlKSB7XG4gIGNvbnN0IGNvbmZpZ0V4dGVuc2lvblJlY29yZHM6IEFycmF5PENvbmZpZ0V4dGVuc2lvblN0b3JlRWxlbWVudD4gPSBbXTtcblxuICBmb3IgKGxldCBleHRlbnNpb25JbmZvIG9mIE9iamVjdC52YWx1ZXMoZXh0ZW5zaW9uU3RhdGUuZXh0ZW5zaW9ucykpIHtcbiAgICBmb3IgKGxldCBpbnN0YW5jZSBvZiBleHRlbnNpb25JbmZvLmluc3RhbmNlcykge1xuICAgICAgY29uZmlnRXh0ZW5zaW9uUmVjb3Jkcy5wdXNoKHtcbiAgICAgICAgc2xvdE1vZHVsZU5hbWU6IGluc3RhbmNlLnNsb3RNb2R1bGVOYW1lLFxuICAgICAgICBleHRlbnNpb25Nb2R1bGVOYW1lOiBleHRlbnNpb25JbmZvLm1vZHVsZU5hbWUsXG4gICAgICAgIHNsb3ROYW1lOiBpbnN0YW5jZS5zbG90TmFtZSxcbiAgICAgICAgZXh0ZW5zaW9uSWQ6IGluc3RhbmNlLmlkLFxuICAgICAgfSk7XG4gICAgfVxuICB9XG4gIGlmIChcbiAgICAhaXNFcXVhbChcbiAgICAgIGNvbmZpZ0V4dGVuc2lvblN0b3JlLmdldFN0YXRlKCkubW91bnRlZEV4dGVuc2lvbnMsXG4gICAgICBjb25maWdFeHRlbnNpb25SZWNvcmRzXG4gICAgKVxuICApIHtcbiAgICBjb25maWdFeHRlbnNpb25TdG9yZS5zZXRTdGF0ZSh7XG4gICAgICBtb3VudGVkRXh0ZW5zaW9uczogY29uZmlnRXh0ZW5zaW9uUmVjb3JkcyxcbiAgICB9KTtcbiAgfVxufVxuIl0sIm5hbWVzIjpbImlzRXF1YWwiLCJjb25maWdFeHRlbnNpb25TdG9yZSIsImNyZWF0ZUdsb2JhbFN0b3JlIiwiZ2V0R2xvYmFsU3RvcmUiLCJleHRlbnNpb25JbnRlcm5hbFN0b3JlIiwic2xvdHMiLCJleHRlbnNpb25zIiwiZ2V0RXh0ZW5zaW9uSW50ZXJuYWxTdG9yZSIsInVwZGF0ZUludGVybmFsRXh0ZW5zaW9uU3RvcmUiLCJ1cGRhdGVyIiwic3RhdGUiLCJnZXRTdGF0ZSIsIm5ld1N0YXRlIiwic2V0U3RhdGUiLCJnZXRFeHRlbnNpb25TdG9yZSIsInVwZGF0ZUNvbmZpZ0V4dGVuc2lvblN0b3JlIiwic3Vic2NyaWJlIiwiZXh0ZW5zaW9uU3RhdGUiLCJjb25maWdFeHRlbnNpb25SZWNvcmRzIiwiT2JqZWN0IiwidmFsdWVzIiwiZXh0ZW5zaW9uSW5mbyIsImluc3RhbmNlcyIsImluc3RhbmNlIiwicHVzaCIsInNsb3RNb2R1bGVOYW1lIiwiZXh0ZW5zaW9uTW9kdWxlTmFtZSIsIm1vZHVsZU5hbWUiLCJzbG90TmFtZSIsImV4dGVuc2lvbklkIiwiaWQiLCJtb3VudGVkRXh0ZW5zaW9ucyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../framework/esm-extensions/src/store.ts\n");
6833
6822
 
6834
6823
  /***/ }),
6835
6824
 
@@ -6873,7 +6862,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
6873
6862
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
6874
6863
 
6875
6864
  "use strict";
6876
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"setupPaths\": () => (/* binding */ setupPaths),\n/* harmony export */ \"setupUtils\": () => (/* binding */ setupUtils)\n/* harmony export */ });\nfunction setupPaths(config) {\n window.openmrsBase = config.apiUrl;\n window.spaBase = config.spaPath;\n window.spaEnv = config.env || \"production\";\n window.spaVersion = \"4.3.2-pre.678-20230425\";\n window.getOpenmrsSpaBase = function() {\n return \"\".concat(window.spaBase, \"/\");\n };\n}\nfunction setupUtils() {\n window.copyText = function(source) {\n var sel = window.getSelection();\n if (sel) {\n var r = document.createRange();\n r.selectNode(source);\n sel.removeAllRanges();\n sel.addRange(r);\n document.execCommand(\"copy\");\n sel.removeAllRanges();\n }\n };\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vZnJhbWV3b3JrL2VzbS1nbG9iYWxzL3NyYy9nbG9iYWxzLnRzLmpzIiwibWFwcGluZ3MiOiI7Ozs7O0FBRU8sU0FBU0EsV0FBV0MsTUFBaUIsRUFBRTtJQUM1Q0MsT0FBT0MsV0FBVyxHQUFHRixPQUFPRyxNQUFNO0lBQ2xDRixPQUFPRyxPQUFPLEdBQUdKLE9BQU9LLE9BQU87SUFDL0JKLE9BQU9LLE1BQU0sR0FBR04sT0FBT08sR0FBRyxJQUFJO0lBQzlCTixPQUFPTyxVQUFVLEdBQUdDLHdCQUF5QjtJQUM3Q1IsT0FBT1UsaUJBQWlCLEdBQUc7ZUFBTSxHQUFrQixPQUFmVixPQUFPRyxPQUFPLEVBQUM7O0FBQ3JELENBQUM7QUFFTSxTQUFTUSxhQUFhO0lBQzNCWCxPQUFPWSxRQUFRLEdBQUcsU0FBQ0MsUUFBd0I7UUFDekMsSUFBTUMsTUFBTWQsT0FBT2UsWUFBWTtRQUUvQixJQUFJRCxLQUFLO1lBQ1AsSUFBTUUsSUFBSUMsU0FBU0MsV0FBVztZQUM5QkYsRUFBRUcsVUFBVSxDQUFDTjtZQUNiQyxJQUFJTSxlQUFlO1lBQ25CTixJQUFJTyxRQUFRLENBQUNMO1lBQ2JDLFNBQVNLLFdBQVcsQ0FBQztZQUNyQlIsSUFBSU0sZUFBZTtRQUNyQixDQUFDO0lBQ0g7QUFDRixDQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vQG9wZW5tcnMvZXNtLWFwcC1zaGVsbC8uLi8uLi9mcmFtZXdvcmsvZXNtLWdsb2JhbHMvc3JjL2dsb2JhbHMudHM/NDFiMiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IFNwYUNvbmZpZyB9IGZyb20gXCIuL3R5cGVzXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBzZXR1cFBhdGhzKGNvbmZpZzogU3BhQ29uZmlnKSB7XG4gIHdpbmRvdy5vcGVubXJzQmFzZSA9IGNvbmZpZy5hcGlVcmw7XG4gIHdpbmRvdy5zcGFCYXNlID0gY29uZmlnLnNwYVBhdGg7XG4gIHdpbmRvdy5zcGFFbnYgPSBjb25maWcuZW52IHx8IFwicHJvZHVjdGlvblwiO1xuICB3aW5kb3cuc3BhVmVyc2lvbiA9IHByb2Nlc3MuZW52LkJVSUxEX1ZFUlNJT047XG4gIHdpbmRvdy5nZXRPcGVubXJzU3BhQmFzZSA9ICgpID0+IGAke3dpbmRvdy5zcGFCYXNlfS9gO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc2V0dXBVdGlscygpIHtcbiAgd2luZG93LmNvcHlUZXh0ID0gKHNvdXJjZTogSFRNTEVsZW1lbnQpID0+IHtcbiAgICBjb25zdCBzZWwgPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKCk7XG5cbiAgICBpZiAoc2VsKSB7XG4gICAgICBjb25zdCByID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTtcbiAgICAgIHIuc2VsZWN0Tm9kZShzb3VyY2UpO1xuICAgICAgc2VsLnJlbW92ZUFsbFJhbmdlcygpO1xuICAgICAgc2VsLmFkZFJhbmdlKHIpO1xuICAgICAgZG9jdW1lbnQuZXhlY0NvbW1hbmQoXCJjb3B5XCIpO1xuICAgICAgc2VsLnJlbW92ZUFsbFJhbmdlcygpO1xuICAgIH1cbiAgfTtcbn1cbiJdLCJuYW1lcyI6WyJzZXR1cFBhdGhzIiwiY29uZmlnIiwid2luZG93Iiwib3Blbm1yc0Jhc2UiLCJhcGlVcmwiLCJzcGFCYXNlIiwic3BhUGF0aCIsInNwYUVudiIsImVudiIsInNwYVZlcnNpb24iLCJwcm9jZXNzIiwiQlVJTERfVkVSU0lPTiIsImdldE9wZW5tcnNTcGFCYXNlIiwic2V0dXBVdGlscyIsImNvcHlUZXh0Iiwic291cmNlIiwic2VsIiwiZ2V0U2VsZWN0aW9uIiwiciIsImRvY3VtZW50IiwiY3JlYXRlUmFuZ2UiLCJzZWxlY3ROb2RlIiwicmVtb3ZlQWxsUmFuZ2VzIiwiYWRkUmFuZ2UiLCJleGVjQ29tbWFuZCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../framework/esm-globals/src/globals.ts\n");
6865
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"setupPaths\": () => (/* binding */ setupPaths),\n/* harmony export */ \"setupUtils\": () => (/* binding */ setupUtils)\n/* harmony export */ });\nfunction setupPaths(config) {\n window.openmrsBase = config.apiUrl;\n window.spaBase = config.spaPath;\n window.spaEnv = config.env || \"production\";\n window.spaVersion = \"4.3.2-pre.681-20230427\";\n window.getOpenmrsSpaBase = function() {\n return \"\".concat(window.spaBase, \"/\");\n };\n}\nfunction setupUtils() {\n window.copyText = function(source) {\n var sel = window.getSelection();\n if (sel) {\n var r = document.createRange();\n r.selectNode(source);\n sel.removeAllRanges();\n sel.addRange(r);\n document.execCommand(\"copy\");\n sel.removeAllRanges();\n }\n };\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vZnJhbWV3b3JrL2VzbS1nbG9iYWxzL3NyYy9nbG9iYWxzLnRzLmpzIiwibWFwcGluZ3MiOiI7Ozs7O0FBRU8sU0FBU0EsV0FBV0MsTUFBaUIsRUFBRTtJQUM1Q0MsT0FBT0MsV0FBVyxHQUFHRixPQUFPRyxNQUFNO0lBQ2xDRixPQUFPRyxPQUFPLEdBQUdKLE9BQU9LLE9BQU87SUFDL0JKLE9BQU9LLE1BQU0sR0FBR04sT0FBT08sR0FBRyxJQUFJO0lBQzlCTixPQUFPTyxVQUFVLEdBQUdDLHdCQUF5QjtJQUM3Q1IsT0FBT1UsaUJBQWlCLEdBQUc7ZUFBTSxHQUFrQixPQUFmVixPQUFPRyxPQUFPLEVBQUM7O0FBQ3JELENBQUM7QUFFTSxTQUFTUSxhQUFhO0lBQzNCWCxPQUFPWSxRQUFRLEdBQUcsU0FBQ0MsUUFBd0I7UUFDekMsSUFBTUMsTUFBTWQsT0FBT2UsWUFBWTtRQUUvQixJQUFJRCxLQUFLO1lBQ1AsSUFBTUUsSUFBSUMsU0FBU0MsV0FBVztZQUM5QkYsRUFBRUcsVUFBVSxDQUFDTjtZQUNiQyxJQUFJTSxlQUFlO1lBQ25CTixJQUFJTyxRQUFRLENBQUNMO1lBQ2JDLFNBQVNLLFdBQVcsQ0FBQztZQUNyQlIsSUFBSU0sZUFBZTtRQUNyQixDQUFDO0lBQ0g7QUFDRixDQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vQG9wZW5tcnMvZXNtLWFwcC1zaGVsbC8uLi8uLi9mcmFtZXdvcmsvZXNtLWdsb2JhbHMvc3JjL2dsb2JhbHMudHM/NDFiMiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IFNwYUNvbmZpZyB9IGZyb20gXCIuL3R5cGVzXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBzZXR1cFBhdGhzKGNvbmZpZzogU3BhQ29uZmlnKSB7XG4gIHdpbmRvdy5vcGVubXJzQmFzZSA9IGNvbmZpZy5hcGlVcmw7XG4gIHdpbmRvdy5zcGFCYXNlID0gY29uZmlnLnNwYVBhdGg7XG4gIHdpbmRvdy5zcGFFbnYgPSBjb25maWcuZW52IHx8IFwicHJvZHVjdGlvblwiO1xuICB3aW5kb3cuc3BhVmVyc2lvbiA9IHByb2Nlc3MuZW52LkJVSUxEX1ZFUlNJT047XG4gIHdpbmRvdy5nZXRPcGVubXJzU3BhQmFzZSA9ICgpID0+IGAke3dpbmRvdy5zcGFCYXNlfS9gO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc2V0dXBVdGlscygpIHtcbiAgd2luZG93LmNvcHlUZXh0ID0gKHNvdXJjZTogSFRNTEVsZW1lbnQpID0+IHtcbiAgICBjb25zdCBzZWwgPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKCk7XG5cbiAgICBpZiAoc2VsKSB7XG4gICAgICBjb25zdCByID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTtcbiAgICAgIHIuc2VsZWN0Tm9kZShzb3VyY2UpO1xuICAgICAgc2VsLnJlbW92ZUFsbFJhbmdlcygpO1xuICAgICAgc2VsLmFkZFJhbmdlKHIpO1xuICAgICAgZG9jdW1lbnQuZXhlY0NvbW1hbmQoXCJjb3B5XCIpO1xuICAgICAgc2VsLnJlbW92ZUFsbFJhbmdlcygpO1xuICAgIH1cbiAgfTtcbn1cbiJdLCJuYW1lcyI6WyJzZXR1cFBhdGhzIiwiY29uZmlnIiwid2luZG93Iiwib3Blbm1yc0Jhc2UiLCJhcGlVcmwiLCJzcGFCYXNlIiwic3BhUGF0aCIsInNwYUVudiIsImVudiIsInNwYVZlcnNpb24iLCJwcm9jZXNzIiwiQlVJTERfVkVSU0lPTiIsImdldE9wZW5tcnNTcGFCYXNlIiwic2V0dXBVdGlscyIsImNvcHlUZXh0Iiwic291cmNlIiwic2VsIiwiZ2V0U2VsZWN0aW9uIiwiciIsImRvY3VtZW50IiwiY3JlYXRlUmFuZ2UiLCJzZWxlY3ROb2RlIiwicmVtb3ZlQWxsUmFuZ2VzIiwiYWRkUmFuZ2UiLCJleGVjQ29tbWFuZCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../framework/esm-globals/src/globals.ts\n");
6877
6866
 
6878
6867
  /***/ }),
6879
6868
 
@@ -7071,7 +7060,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
7071
7060
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
7072
7061
 
7073
7062
  "use strict";
7074
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"ExtensionSlot\": () => (/* binding */ ExtensionSlot)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"webpack/sharing/consume/default/react/react\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _ComponentContext__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./ComponentContext */ \"../../framework/esm-react-utils/src/ComponentContext.ts\");\n/* harmony import */ var _Extension__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./Extension */ \"../../framework/esm-react-utils/src/Extension.tsx\");\n/* harmony import */ var _useExtensionSlot__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./useExtensionSlot */ \"../../framework/esm-react-utils/src/useExtensionSlot.ts\");\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nfunction _extends() {\n _extends = Object.assign || function(target) {\n for(var i = 1; i < arguments.length; i++){\n var source = arguments[i];\n for(var key in source){\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}\nfunction _objectSpread(target) {\n for(var i = 1; i < arguments.length; i++){\n var source = arguments[i] != null ? arguments[i] : {};\n var ownKeys = Object.keys(source);\n if (typeof Object.getOwnPropertySymbols === \"function\") {\n ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {\n return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n }));\n }\n ownKeys.forEach(function(key) {\n _defineProperty(target, key, source[key]);\n });\n }\n return target;\n}\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) {\n symbols = symbols.filter(function(sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n }\n keys.push.apply(keys, symbols);\n }\n return keys;\n}\nfunction _objectSpreadProps(target, source) {\n source = source != null ? source : {};\n if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(Object(source)).forEach(function(key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n return target;\n}\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n var target = _objectWithoutPropertiesLoose(source, excluded);\n var key, i;\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n for(i = 0; i < sourceSymbolKeys.length; i++){\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n return target;\n}\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n for(i = 0; i < sourceKeys.length; i++){\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n return target;\n}\n\n\n\n\nfunction defaultSelect(extensions) {\n return extensions;\n}\n/**\n * An [extension slot](https://o3-dev.docs.openmrs.org/#/main/extensions).\n * A place with a name. Extensions that get connected to that name\n * will be rendered into this.\n *\n * @param props.name The name of the extension slot\n * @param props.select An optional function for filtering or otherwise modifying\n * the list of extensions that will be rendered.\n * @param props.state *Only works if no children are provided*. Passes data\n * through as props to the extensions that are mounted here. If `ExtensionSlot`\n * has children, you must pass the state through the `state` param of the\n * `Extension` component.\n * @param props.children There are two different ways to use `ExtensionSlot`\n * children.\n * - Passing a `ReactNode`, the \"normal\" way. The child must contain the component\n * `Extension`. Whatever is passed as the child will be rendered once per extension.\n * See the first example below.\n * - Passing a function, the \"render props\" way. The child must be a function\n * which takes a [[ConnectedExtension]] as argument and returns a `ReactNode`.\n * the resulting react node must contain the component `Extension`. It will\n * be run for each extension. See the second example below.\n *\n * @example\n * Passing a react node as children\n *\n * ```tsx\n * <ExtensionSlot name=\"Foo\">\n * <div style={{ width: 10rem }}>\n * <Extension />\n * </div>\n * </ExtensionSlot>\n * ```\n *\n * @example\n * Passing a function as children\n *\n * ```tsx\n * <ExtensionSlot name=\"Bar\">\n * {(extension) => (\n * <h1>{extension.name}</h1>\n * <div style={{ color: extension.meta.color }}>\n * <Extension />\n * </div>\n * )}\n * </ExtensionSlot>\n * ```\n *\n */ function ExtensionSlot(_param) {\n var extensionSlotName = _param.name, legacyExtensionSlotName = _param.extensionSlotName, _select = _param.select, select = _select === void 0 ? defaultSelect : _select, children = _param.children, state = _param.state, style = _param.style, divProps = _objectWithoutProperties(_param, [\n \"name\",\n \"extensionSlotName\",\n \"select\",\n \"children\",\n \"state\",\n \"style\"\n ]);\n if (children && state) {\n throw new Error(\"Both children and state have been provided. If children are provided, the state must be passed as a prop to the `Extension` component.\");\n }\n var name = extensionSlotName !== null && extensionSlotName !== void 0 ? extensionSlotName : legacyExtensionSlotName;\n var slotRef = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(null);\n var ref = (0,_useExtensionSlot__WEBPACK_IMPORTED_MODULE_3__.useExtensionSlot)(name), extensions = ref.extensions, extensionSlotModuleName = ref.extensionSlotModuleName;\n var extensionsToRender = (0,react__WEBPACK_IMPORTED_MODULE_0__.useMemo)(function() {\n return select(extensions);\n }, [\n select,\n extensions\n ]);\n var extensionsFromChildrenFunction = (0,react__WEBPACK_IMPORTED_MODULE_0__.useMemo)(function() {\n if (typeof children == \"function\" && !/*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().isValidElement(children)) {\n return extensionsToRender.map(function(extension) {\n return children(extension);\n });\n }\n }, [\n children,\n extensionsToRender\n ]);\n var ref1, ref2;\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", _extends({\n ref: slotRef,\n \"data-extension-slot-name\": name,\n \"data-extension-slot-module-name\": extensionSlotModuleName,\n style: _objectSpreadProps(_objectSpread({}, style), {\n position: \"relative\"\n })\n }, divProps), name && extensionsToRender.map(function(extension, i) {\n /*#__PURE__*/ return react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_ComponentContext__WEBPACK_IMPORTED_MODULE_1__.ComponentContext.Provider, {\n key: extension.id,\n value: {\n moduleName: extensionSlotModuleName,\n extension: {\n extensionId: extension.id,\n extensionSlotName: name,\n extensionSlotModuleName: extensionSlotModuleName\n }\n }\n }, (ref2 = (ref1 = extensionsFromChildrenFunction === null || extensionsFromChildrenFunction === void 0 ? void 0 : extensionsFromChildrenFunction[i]) !== null && ref1 !== void 0 ? ref1 : typeof children != \"function\" ? children : null) !== null && ref2 !== void 0 ? ref2 : /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_Extension__WEBPACK_IMPORTED_MODULE_2__.Extension, {\n state: state\n }));\n }));\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vZnJhbWV3b3JrL2VzbS1yZWFjdC11dGlscy9zcmMvRXh0ZW5zaW9uU2xvdC50c3guanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUErQztBQUVPO0FBQ2Q7QUFDYztBQTRCdEQsU0FBU00sY0FBY0MsVUFBcUMsRUFBRTtJQUM1RCxPQUFPQTtBQUNUO0FBRUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0NBK0NDLEdBQ00sU0FBU0MsY0FBYyxRQVFQO1FBUHJCQyxvQkFENEIsT0FDNUJBLE1BQ0FDLDBCQUY0QixPQUU1QkEsNkJBRjRCLE9BRzVCRSxRQUFBQSw4QkFBU04seUJBQ1RPLFdBSjRCLE9BSTVCQSxVQUNBQyxRQUw0QixPQUs1QkEsT0FDQUMsUUFONEIsT0FNNUJBLE9BQ0dDLG9DQVB5QjtRQUM1QlA7UUFDQUM7UUFDQUU7UUFDQUM7UUFDQUM7UUFDQUM7O0lBR0EsSUFBSUYsWUFBWUMsT0FBTztRQUNyQixNQUFNLElBQUlHLE1BQ1IsMElBQ0E7SUFDSixDQUFDO0lBRUQsSUFBTVIsT0FBUUMsOEJBQUFBLCtCQUFBQSxvQkFBcUJDLHVCQUF1QjtJQUMxRCxJQUFNTyxVQUFVakIsNkNBQU1BLENBQUMsSUFBSTtJQUMzQixJQUFnREksTUFBQUEsbUVBQWdCQSxDQUFDSSxPQUF6REYsYUFBd0NGLElBQXhDRSxZQUFZWSwwQkFBNEJkLElBQTVCYztJQUVwQixJQUFNQyxxQkFBcUJsQiw4Q0FBT0EsQ0FDaEM7ZUFBTVUsT0FBT0w7T0FDYjtRQUFDSztRQUFRTDtLQUFXO0lBR3RCLElBQU1jLGlDQUFpQ25CLDhDQUFPQSxDQUFDLFdBQU07UUFDbkQsSUFBSSxPQUFPVyxZQUFZLGNBQWMsZUFBQ2IsMkRBQW9CLENBQUNhLFdBQVc7WUFDcEUsT0FBT08sbUJBQW1CRyxHQUFHLENBQUMsU0FBQ0M7dUJBQWNYLFNBQVNXOztRQUN4RCxDQUFDO0lBQ0gsR0FBRztRQUFDWDtRQUFVTztLQUFtQjtRQXVCdEJDLE1BQUFBO0lBckJYLHFCQUNFLDJEQUFDSTtRQUNDQyxLQUFLUjtRQUNMUyw0QkFBMEJsQjtRQUMxQm1CLG1DQUFpQ1Q7UUFDakNKLE9BQU8scUNBQUtBO1lBQU9jLFVBQVU7O09BQ3pCYixXQUVIUCxRQUNDVyxtQkFBbUJHLEdBQUcsQ0FBQyxTQUFDQyxXQUFXTTtzQkFDakMsa0VBQUMzQix3RUFBeUI7WUFDeEI2QixLQUFLUixVQUFVUyxFQUFFO1lBQ2pCQyxPQUFPO2dCQUNMQyxZQUFZaEI7Z0JBQ1pLLFdBQVc7b0JBQ1RZLGFBQWFaLFVBQVVTLEVBQUU7b0JBQ3pCdkIsbUJBQW1CRDtvQkFDbkJVLHlCQUFBQTtnQkFDRjtZQUNGO1dBRUNFLENBQUFBLE9BQUFBLENBQUFBLE9BQUFBLDJDQUFBQSw0Q0FBQUEsS0FBQUEsSUFBQUEsOEJBQWdDLENBQUNTLEVBQUUsY0FBbkNULGtCQUFBQSxPQUNFLE9BQU9SLFlBQVksYUFBYUEsV0FBVyxJQUFJLGNBRGpEUSxrQkFBQUEscUJBRUcsMkRBQUNqQixpREFBU0E7WUFBQ1UsT0FBT0E7VUFDbkI7O0FBS2YsQ0FBQyIsInNvdXJjZXMiOlsid2VicGFjazovL0BvcGVubXJzL2VzbS1hcHAtc2hlbGwvLi4vLi4vZnJhbWV3b3JrL2VzbS1yZWFjdC11dGlscy9zcmMvRXh0ZW5zaW9uU2xvdC50c3g/MDBlYyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QsIHsgdXNlUmVmLCB1c2VNZW1vIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyBDb25uZWN0ZWRFeHRlbnNpb24gfSBmcm9tIFwiQG9wZW5tcnMvZXNtLWV4dGVuc2lvbnNcIjtcbmltcG9ydCB7IENvbXBvbmVudENvbnRleHQgfSBmcm9tIFwiLi9Db21wb25lbnRDb250ZXh0XCI7XG5pbXBvcnQgeyBFeHRlbnNpb24gfSBmcm9tIFwiLi9FeHRlbnNpb25cIjtcbmltcG9ydCB7IHVzZUV4dGVuc2lvblNsb3QgfSBmcm9tIFwiLi91c2VFeHRlbnNpb25TbG90XCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRXh0ZW5zaW9uU2xvdEJhc2VQcm9wcyB7XG4gIG5hbWU6IHN0cmluZztcbiAgLyoqIEBkZXByZWNhdGVkIFVzZSBgbmFtZWAgKi9cbiAgZXh0ZW5zaW9uU2xvdE5hbWU/OiBzdHJpbmc7XG4gIHNlbGVjdD86IChleHRlbnNpb25zOiBBcnJheTxDb25uZWN0ZWRFeHRlbnNpb24+KSA9PiBBcnJheTxDb25uZWN0ZWRFeHRlbnNpb24+O1xuICBzdGF0ZT86IFJlY29yZDxzdHJpbmcsIGFueT47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgT2xkRXh0ZW5zaW9uU2xvdEJhc2VQcm9wcyB7XG4gIG5hbWU/OiBzdHJpbmc7XG4gIC8qKiBAZGVwcmVjYXRlZCBVc2UgYG5hbWVgICovXG4gIGV4dGVuc2lvblNsb3ROYW1lOiBzdHJpbmc7XG4gIHNlbGVjdD86IChleHRlbnNpb25zOiBBcnJheTxDb25uZWN0ZWRFeHRlbnNpb24+KSA9PiBBcnJheTxDb25uZWN0ZWRFeHRlbnNpb24+O1xuICBzdGF0ZT86IFJlY29yZDxzdHJpbmcsIGFueT47XG59XG5cbmV4cG9ydCB0eXBlIEV4dGVuc2lvblNsb3RQcm9wcyA9IChcbiAgfCBPbGRFeHRlbnNpb25TbG90QmFzZVByb3BzXG4gIHwgRXh0ZW5zaW9uU2xvdEJhc2VQcm9wc1xuKSAmXG4gIE9taXQ8UmVhY3QuSFRNTEF0dHJpYnV0ZXM8SFRNTERpdkVsZW1lbnQ+LCBcImNoaWxkcmVuXCI+ICYge1xuICAgIGNoaWxkcmVuPzpcbiAgICAgIHwgUmVhY3QuUmVhY3ROb2RlXG4gICAgICB8ICgoZXh0ZW5zaW9uOiBDb25uZWN0ZWRFeHRlbnNpb24pID0+IFJlYWN0LlJlYWN0Tm9kZSk7XG4gIH07XG5cbmZ1bmN0aW9uIGRlZmF1bHRTZWxlY3QoZXh0ZW5zaW9uczogQXJyYXk8Q29ubmVjdGVkRXh0ZW5zaW9uPikge1xuICByZXR1cm4gZXh0ZW5zaW9ucztcbn1cblxuLyoqXG4gKiBBbiBbZXh0ZW5zaW9uIHNsb3RdKGh0dHBzOi8vbzMtZGV2LmRvY3Mub3Blbm1ycy5vcmcvIy9tYWluL2V4dGVuc2lvbnMpLlxuICogQSBwbGFjZSB3aXRoIGEgbmFtZS4gRXh0ZW5zaW9ucyB0aGF0IGdldCBjb25uZWN0ZWQgdG8gdGhhdCBuYW1lXG4gKiB3aWxsIGJlIHJlbmRlcmVkIGludG8gdGhpcy5cbiAqXG4gKiBAcGFyYW0gcHJvcHMubmFtZSBUaGUgbmFtZSBvZiB0aGUgZXh0ZW5zaW9uIHNsb3RcbiAqIEBwYXJhbSBwcm9wcy5zZWxlY3QgQW4gb3B0aW9uYWwgZnVuY3Rpb24gZm9yIGZpbHRlcmluZyBvciBvdGhlcndpc2UgbW9kaWZ5aW5nXG4gKiAgIHRoZSBsaXN0IG9mIGV4dGVuc2lvbnMgdGhhdCB3aWxsIGJlIHJlbmRlcmVkLlxuICogQHBhcmFtIHByb3BzLnN0YXRlICpPbmx5IHdvcmtzIGlmIG5vIGNoaWxkcmVuIGFyZSBwcm92aWRlZCouIFBhc3NlcyBkYXRhXG4gKiAgIHRocm91Z2ggYXMgcHJvcHMgdG8gdGhlIGV4dGVuc2lvbnMgdGhhdCBhcmUgbW91bnRlZCBoZXJlLiBJZiBgRXh0ZW5zaW9uU2xvdGBcbiAqICAgaGFzIGNoaWxkcmVuLCB5b3UgbXVzdCBwYXNzIHRoZSBzdGF0ZSB0aHJvdWdoIHRoZSBgc3RhdGVgIHBhcmFtIG9mIHRoZVxuICogICBgRXh0ZW5zaW9uYCBjb21wb25lbnQuXG4gKiBAcGFyYW0gcHJvcHMuY2hpbGRyZW4gVGhlcmUgYXJlIHR3byBkaWZmZXJlbnQgd2F5cyB0byB1c2UgYEV4dGVuc2lvblNsb3RgXG4gKiAgIGNoaWxkcmVuLlxuICogIC0gUGFzc2luZyBhIGBSZWFjdE5vZGVgLCB0aGUgXCJub3JtYWxcIiB3YXkuIFRoZSBjaGlsZCBtdXN0IGNvbnRhaW4gdGhlIGNvbXBvbmVudFxuICogICAgIGBFeHRlbnNpb25gLiBXaGF0ZXZlciBpcyBwYXNzZWQgYXMgdGhlIGNoaWxkIHdpbGwgYmUgcmVuZGVyZWQgb25jZSBwZXIgZXh0ZW5zaW9uLlxuICogICAgIFNlZSB0aGUgZmlyc3QgZXhhbXBsZSBiZWxvdy5cbiAqICAtIFBhc3NpbmcgYSBmdW5jdGlvbiwgdGhlIFwicmVuZGVyIHByb3BzXCIgd2F5LiBUaGUgY2hpbGQgbXVzdCBiZSBhIGZ1bmN0aW9uXG4gKiAgICAgd2hpY2ggdGFrZXMgYSBbW0Nvbm5lY3RlZEV4dGVuc2lvbl1dIGFzIGFyZ3VtZW50IGFuZCByZXR1cm5zIGEgYFJlYWN0Tm9kZWAuXG4gKiAgICAgdGhlIHJlc3VsdGluZyByZWFjdCBub2RlIG11c3QgY29udGFpbiB0aGUgY29tcG9uZW50IGBFeHRlbnNpb25gLiBJdCB3aWxsXG4gKiAgICAgYmUgcnVuIGZvciBlYWNoIGV4dGVuc2lvbi4gU2VlIHRoZSBzZWNvbmQgZXhhbXBsZSBiZWxvdy5cbiAqXG4gKiBAZXhhbXBsZVxuICogUGFzc2luZyBhIHJlYWN0IG5vZGUgYXMgY2hpbGRyZW5cbiAqXG4gKiBgYGB0c3hcbiAqIDxFeHRlbnNpb25TbG90IG5hbWU9XCJGb29cIj5cbiAqICAgPGRpdiBzdHlsZT17eyB3aWR0aDogMTByZW0gfX0+XG4gKiAgICAgPEV4dGVuc2lvbiAvPlxuICogICA8L2Rpdj5cbiAqIDwvRXh0ZW5zaW9uU2xvdD5cbiAqIGBgYFxuICpcbiAqIEBleGFtcGxlXG4gKiBQYXNzaW5nIGEgZnVuY3Rpb24gYXMgY2hpbGRyZW5cbiAqXG4gKiBgYGB0c3hcbiAqIDxFeHRlbnNpb25TbG90IG5hbWU9XCJCYXJcIj5cbiAqICAgeyhleHRlbnNpb24pID0+IChcbiAqICAgICA8aDE+e2V4dGVuc2lvbi5uYW1lfTwvaDE+XG4gKiAgICAgPGRpdiBzdHlsZT17eyBjb2xvcjogZXh0ZW5zaW9uLm1ldGEuY29sb3IgfX0+XG4gKiAgICAgICA8RXh0ZW5zaW9uIC8+XG4gKiAgICAgPC9kaXY+XG4gKiAgICl9XG4gKiA8L0V4dGVuc2lvblNsb3Q+XG4gKiBgYGBcbiAqXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBFeHRlbnNpb25TbG90KHtcbiAgbmFtZTogZXh0ZW5zaW9uU2xvdE5hbWUsXG4gIGV4dGVuc2lvblNsb3ROYW1lOiBsZWdhY3lFeHRlbnNpb25TbG90TmFtZSxcbiAgc2VsZWN0ID0gZGVmYXVsdFNlbGVjdCxcbiAgY2hpbGRyZW4sXG4gIHN0YXRlLFxuICBzdHlsZSxcbiAgLi4uZGl2UHJvcHNcbn06IEV4dGVuc2lvblNsb3RQcm9wcykge1xuICBpZiAoY2hpbGRyZW4gJiYgc3RhdGUpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICBcIkJvdGggY2hpbGRyZW4gYW5kIHN0YXRlIGhhdmUgYmVlbiBwcm92aWRlZC4gSWYgY2hpbGRyZW4gYXJlIHByb3ZpZGVkLCB0aGUgc3RhdGUgbXVzdCBiZSBwYXNzZWQgYXMgYSBwcm9wIHRvIHRoZSBgRXh0ZW5zaW9uYCBjb21wb25lbnQuXCJcbiAgICApO1xuICB9XG5cbiAgY29uc3QgbmFtZSA9IChleHRlbnNpb25TbG90TmFtZSA/PyBsZWdhY3lFeHRlbnNpb25TbG90TmFtZSkgYXMgc3RyaW5nO1xuICBjb25zdCBzbG90UmVmID0gdXNlUmVmKG51bGwpO1xuICBjb25zdCB7IGV4dGVuc2lvbnMsIGV4dGVuc2lvblNsb3RNb2R1bGVOYW1lIH0gPSB1c2VFeHRlbnNpb25TbG90KG5hbWUpO1xuXG4gIGNvbnN0IGV4dGVuc2lvbnNUb1JlbmRlciA9IHVzZU1lbW8oXG4gICAgKCkgPT4gc2VsZWN0KGV4dGVuc2lvbnMpLFxuICAgIFtzZWxlY3QsIGV4dGVuc2lvbnNdXG4gICk7XG5cbiAgY29uc3QgZXh0ZW5zaW9uc0Zyb21DaGlsZHJlbkZ1bmN0aW9uID0gdXNlTWVtbygoKSA9PiB7XG4gICAgaWYgKHR5cGVvZiBjaGlsZHJlbiA9PSBcImZ1bmN0aW9uXCIgJiYgIVJlYWN0LmlzVmFsaWRFbGVtZW50KGNoaWxkcmVuKSkge1xuICAgICAgcmV0dXJuIGV4dGVuc2lvbnNUb1JlbmRlci5tYXAoKGV4dGVuc2lvbikgPT4gY2hpbGRyZW4oZXh0ZW5zaW9uKSk7XG4gICAgfVxuICB9LCBbY2hpbGRyZW4sIGV4dGVuc2lvbnNUb1JlbmRlcl0pO1xuXG4gIHJldHVybiAoXG4gICAgPGRpdlxuICAgICAgcmVmPXtzbG90UmVmfVxuICAgICAgZGF0YS1leHRlbnNpb24tc2xvdC1uYW1lPXtuYW1lfVxuICAgICAgZGF0YS1leHRlbnNpb24tc2xvdC1tb2R1bGUtbmFtZT17ZXh0ZW5zaW9uU2xvdE1vZHVsZU5hbWV9XG4gICAgICBzdHlsZT17eyAuLi5zdHlsZSwgcG9zaXRpb246IFwicmVsYXRpdmVcIiB9fVxuICAgICAgey4uLmRpdlByb3BzfVxuICAgID5cbiAgICAgIHtuYW1lICYmXG4gICAgICAgIGV4dGVuc2lvbnNUb1JlbmRlci5tYXAoKGV4dGVuc2lvbiwgaSkgPT4gKFxuICAgICAgICAgIDxDb21wb25lbnRDb250ZXh0LlByb3ZpZGVyXG4gICAgICAgICAgICBrZXk9e2V4dGVuc2lvbi5pZH1cbiAgICAgICAgICAgIHZhbHVlPXt7XG4gICAgICAgICAgICAgIG1vZHVsZU5hbWU6IGV4dGVuc2lvblNsb3RNb2R1bGVOYW1lLCAvLyBtb2R1bGVOYW1lIGlzIG5vdCB1c2VkIGJ5IHRoZSByZWNlaXZpbmcgRXh0ZW5zaW9uXG4gICAgICAgICAgICAgIGV4dGVuc2lvbjoge1xuICAgICAgICAgICAgICAgIGV4dGVuc2lvbklkOiBleHRlbnNpb24uaWQsXG4gICAgICAgICAgICAgICAgZXh0ZW5zaW9uU2xvdE5hbWU6IG5hbWUsXG4gICAgICAgICAgICAgICAgZXh0ZW5zaW9uU2xvdE1vZHVsZU5hbWUsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9fVxuICAgICAgICAgID5cbiAgICAgICAgICAgIHtleHRlbnNpb25zRnJvbUNoaWxkcmVuRnVuY3Rpb24/LltpXSA/P1xuICAgICAgICAgICAgICAodHlwZW9mIGNoaWxkcmVuICE9IFwiZnVuY3Rpb25cIiA/IGNoaWxkcmVuIDogbnVsbCkgPz8gKFxuICAgICAgICAgICAgICAgIDxFeHRlbnNpb24gc3RhdGU9e3N0YXRlfSAvPlxuICAgICAgICAgICAgICApfVxuICAgICAgICAgIDwvQ29tcG9uZW50Q29udGV4dC5Qcm92aWRlcj5cbiAgICAgICAgKSl9XG4gICAgPC9kaXY+XG4gICk7XG59XG4iXSwibmFtZXMiOlsiUmVhY3QiLCJ1c2VSZWYiLCJ1c2VNZW1vIiwiQ29tcG9uZW50Q29udGV4dCIsIkV4dGVuc2lvbiIsInVzZUV4dGVuc2lvblNsb3QiLCJkZWZhdWx0U2VsZWN0IiwiZXh0ZW5zaW9ucyIsIkV4dGVuc2lvblNsb3QiLCJuYW1lIiwiZXh0ZW5zaW9uU2xvdE5hbWUiLCJsZWdhY3lFeHRlbnNpb25TbG90TmFtZSIsInNlbGVjdCIsImNoaWxkcmVuIiwic3RhdGUiLCJzdHlsZSIsImRpdlByb3BzIiwiRXJyb3IiLCJzbG90UmVmIiwiZXh0ZW5zaW9uU2xvdE1vZHVsZU5hbWUiLCJleHRlbnNpb25zVG9SZW5kZXIiLCJleHRlbnNpb25zRnJvbUNoaWxkcmVuRnVuY3Rpb24iLCJpc1ZhbGlkRWxlbWVudCIsIm1hcCIsImV4dGVuc2lvbiIsImRpdiIsInJlZiIsImRhdGEtZXh0ZW5zaW9uLXNsb3QtbmFtZSIsImRhdGEtZXh0ZW5zaW9uLXNsb3QtbW9kdWxlLW5hbWUiLCJwb3NpdGlvbiIsImkiLCJQcm92aWRlciIsImtleSIsImlkIiwidmFsdWUiLCJtb2R1bGVOYW1lIiwiZXh0ZW5zaW9uSWQiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../framework/esm-react-utils/src/ExtensionSlot.tsx\n");
7063
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"ExtensionSlot\": () => (/* binding */ ExtensionSlot)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"webpack/sharing/consume/default/react/react\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _ComponentContext__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./ComponentContext */ \"../../framework/esm-react-utils/src/ComponentContext.ts\");\n/* harmony import */ var _Extension__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./Extension */ \"../../framework/esm-react-utils/src/Extension.tsx\");\n/* harmony import */ var _useExtensionSlot__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./useExtensionSlot */ \"../../framework/esm-react-utils/src/useExtensionSlot.ts\");\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nfunction _extends() {\n _extends = Object.assign || function(target) {\n for(var i = 1; i < arguments.length; i++){\n var source = arguments[i];\n for(var key in source){\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}\nfunction _objectSpread(target) {\n for(var i = 1; i < arguments.length; i++){\n var source = arguments[i] != null ? arguments[i] : {};\n var ownKeys = Object.keys(source);\n if (typeof Object.getOwnPropertySymbols === \"function\") {\n ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {\n return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n }));\n }\n ownKeys.forEach(function(key) {\n _defineProperty(target, key, source[key]);\n });\n }\n return target;\n}\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) {\n symbols = symbols.filter(function(sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n }\n keys.push.apply(keys, symbols);\n }\n return keys;\n}\nfunction _objectSpreadProps(target, source) {\n source = source != null ? source : {};\n if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(Object(source)).forEach(function(key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n return target;\n}\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n var target = _objectWithoutPropertiesLoose(source, excluded);\n var key, i;\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n for(i = 0; i < sourceSymbolKeys.length; i++){\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n return target;\n}\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n for(i = 0; i < sourceKeys.length; i++){\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n return target;\n}\n\n\n\n\nfunction defaultSelect(extensions) {\n return extensions;\n}\n/**\n * An [extension slot](https://o3-dev.docs.openmrs.org/#/main/extensions).\n * A place with a name. Extensions that get connected to that name\n * will be rendered into this.\n *\n * @param props.name The name of the extension slot\n * @param props.select An optional function for filtering or otherwise modifying\n * the list of extensions that will be rendered.\n * @param props.state *Only works if no children are provided*. Passes data\n * through as props to the extensions that are mounted here. If `ExtensionSlot`\n * has children, you must pass the state through the `state` param of the\n * `Extension` component.\n * @param props.children There are two different ways to use `ExtensionSlot`\n * children.\n * - Passing a `ReactNode`, the \"normal\" way. The child must contain the component\n * `Extension`. Whatever is passed as the child will be rendered once per extension.\n * See the first example below.\n * - Passing a function, the \"render props\" way. The child must be a function\n * which takes a [[ConnectedExtension]] as argument and returns a `ReactNode`.\n * the resulting react node must contain the component `Extension`. It will\n * be run for each extension. See the second example below.\n *\n * @example\n * Passing a react node as children\n *\n * ```tsx\n * <ExtensionSlot name=\"Foo\">\n * <div style={{ width: 10rem }}>\n * <Extension />\n * </div>\n * </ExtensionSlot>\n * ```\n *\n * @example\n * Passing a function as children\n *\n * ```tsx\n * <ExtensionSlot name=\"Bar\">\n * {(extension) => (\n * <h1>{extension.name}</h1>\n * <div style={{ color: extension.meta.color }}>\n * <Extension />\n * </div>\n * )}\n * </ExtensionSlot>\n * ```\n *\n */ function ExtensionSlot(_param) {\n var extensionSlotName = _param.name, legacyExtensionSlotName = _param.extensionSlotName, _select = _param.select, select = _select === void 0 ? defaultSelect : _select, children = _param.children, state = _param.state, style = _param.style, divProps = _objectWithoutProperties(_param, [\n \"name\",\n \"extensionSlotName\",\n \"select\",\n \"children\",\n \"state\",\n \"style\"\n ]);\n if (children && state) {\n throw new Error(\"Both children and state have been provided. If children are provided, the state must be passed as a prop to the `Extension` component.\");\n }\n var name = extensionSlotName !== null && extensionSlotName !== void 0 ? extensionSlotName : legacyExtensionSlotName;\n var slotRef = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(null);\n var ref = (0,_useExtensionSlot__WEBPACK_IMPORTED_MODULE_3__.useExtensionSlot)(name), extensions = ref.extensions, extensionSlotModuleName = ref.extensionSlotModuleName;\n var extensionsToRender = (0,react__WEBPACK_IMPORTED_MODULE_0__.useMemo)(function() {\n return select(extensions);\n }, [\n select,\n extensions\n ]);\n var extensionsFromChildrenFunction = (0,react__WEBPACK_IMPORTED_MODULE_0__.useMemo)(function() {\n if (typeof children == \"function\" && !/*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().isValidElement(children)) {\n return extensionsToRender.map(function(extension) {\n return children(extension);\n });\n }\n }, [\n children,\n extensionsToRender\n ]);\n var ref1, ref2;\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", _extends({\n ref: slotRef,\n \"data-extension-slot-name\": name,\n \"data-extension-slot-module-name\": extensionSlotModuleName,\n style: _objectSpreadProps(_objectSpread({}, style), {\n position: \"relative\"\n })\n }, divProps), name && extensionsToRender.map(function(extension, i) {\n /*#__PURE__*/ return react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_ComponentContext__WEBPACK_IMPORTED_MODULE_1__.ComponentContext.Provider, {\n key: extension.id,\n value: {\n moduleName: extensionSlotModuleName,\n extension: {\n extensionId: extension.id,\n extensionSlotName: name,\n extensionSlotModuleName: extensionSlotModuleName\n }\n }\n }, (ref2 = (ref1 = extensionsFromChildrenFunction === null || extensionsFromChildrenFunction === void 0 ? void 0 : extensionsFromChildrenFunction[i]) !== null && ref1 !== void 0 ? ref1 : typeof children != \"function\" ? children : null) !== null && ref2 !== void 0 ? ref2 : /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_Extension__WEBPACK_IMPORTED_MODULE_2__.Extension, {\n state: state\n }));\n }));\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vZnJhbWV3b3JrL2VzbS1yZWFjdC11dGlscy9zcmMvRXh0ZW5zaW9uU2xvdC50c3guanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUErQztBQUVPO0FBQ2Q7QUFDYztBQTRCdEQsU0FBU00sY0FBY0MsVUFBcUMsRUFBRTtJQUM1RCxPQUFPQTtBQUNUO0FBRUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0NBK0NDLEdBQ00sU0FBU0MsY0FBYyxRQVFQO1FBUHJCQyxvQkFENEIsT0FDNUJBLE1BQ0FDLDBCQUY0QixPQUU1QkEsNkJBRjRCLE9BRzVCRSxRQUFBQSw4QkFBU04seUJBQ1RPLFdBSjRCLE9BSTVCQSxVQUNBQyxRQUw0QixPQUs1QkEsT0FDQUMsUUFONEIsT0FNNUJBLE9BQ0dDLG9DQVB5QjtRQUM1QlA7UUFDQUM7UUFDQUU7UUFDQUM7UUFDQUM7UUFDQUM7O0lBR0EsSUFBSUYsWUFBWUMsT0FBTztRQUNyQixNQUFNLElBQUlHLE1BQ1IsMElBQ0E7SUFDSixDQUFDO0lBRUQsSUFBTVIsT0FBUUMsOEJBQUFBLCtCQUFBQSxvQkFBcUJDLHVCQUF1QjtJQUMxRCxJQUFNTyxVQUFVakIsNkNBQU1BLENBQUMsSUFBSTtJQUMzQixJQUFnREksTUFBQUEsbUVBQWdCQSxDQUFDSSxPQUF6REYsYUFBd0NGLElBQXhDRSxZQUFZWSwwQkFBNEJkLElBQTVCYztJQUVwQixJQUFNQyxxQkFBcUJsQiw4Q0FBT0EsQ0FDaEM7ZUFBTVUsT0FBT0w7T0FDYjtRQUFDSztRQUFRTDtLQUFXO0lBR3RCLElBQU1jLGlDQUFpQ25CLDhDQUFPQSxDQUFDLFdBQU07UUFDbkQsSUFBSSxPQUFPVyxZQUFZLGNBQWMsZUFBQ2IsMkRBQW9CLENBQUNhLFdBQVc7WUFDcEUsT0FBT08sbUJBQW1CRyxHQUFHLENBQUMsU0FBQ0M7dUJBQWNYLFNBQVNXOztRQUN4RCxDQUFDO0lBQ0gsR0FBRztRQUFDWDtRQUFVTztLQUFtQjtRQXVCdEJDLE1BQUFBO0lBckJYLHFCQUNFLDJEQUFDSTtRQUNDQyxLQUFLUjtRQUNMUyw0QkFBMEJsQjtRQUMxQm1CLG1DQUFpQ1Q7UUFDakNKLE9BQU8scUNBQUtBO1lBQU9jLFVBQVU7O09BQ3pCYixXQUVIUCxRQUNDVyxtQkFBbUJHLEdBQUcsQ0FBQyxTQUFDQyxXQUFXTTtzQkFDakMsa0VBQUMzQix3RUFBeUI7WUFDeEI2QixLQUFLUixVQUFVUyxFQUFFO1lBQ2pCQyxPQUFPO2dCQUNMQyxZQUFZaEI7Z0JBQ1pLLFdBQVc7b0JBQ1RZLGFBQWFaLFVBQVVTLEVBQUU7b0JBQ3pCdkIsbUJBQW1CRDtvQkFDbkJVLHlCQUFBQTtnQkFDRjtZQUNGO1dBRUNFLENBQUFBLE9BQUFBLENBQUFBLE9BQUFBLDJDQUFBQSw0Q0FBQUEsS0FBQUEsSUFBQUEsOEJBQWdDLENBQUNTLEVBQUUsY0FBbkNULGtCQUFBQSxPQUNFLE9BQU9SLFlBQVksYUFBYUEsV0FBVyxJQUFJLGNBRGpEUSxrQkFBQUEscUJBRUcsMkRBQUNqQixpREFBU0E7WUFBQ1UsT0FBT0E7VUFDbkI7O0FBS2YsQ0FBQyIsInNvdXJjZXMiOlsid2VicGFjazovL0BvcGVubXJzL2VzbS1hcHAtc2hlbGwvLi4vLi4vZnJhbWV3b3JrL2VzbS1yZWFjdC11dGlscy9zcmMvRXh0ZW5zaW9uU2xvdC50c3g/MDBlYyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QsIHsgdXNlUmVmLCB1c2VNZW1vIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgdHlwZSB7IENvbm5lY3RlZEV4dGVuc2lvbiB9IGZyb20gXCJAb3Blbm1ycy9lc20tZXh0ZW5zaW9uc1wiO1xuaW1wb3J0IHsgQ29tcG9uZW50Q29udGV4dCB9IGZyb20gXCIuL0NvbXBvbmVudENvbnRleHRcIjtcbmltcG9ydCB7IEV4dGVuc2lvbiB9IGZyb20gXCIuL0V4dGVuc2lvblwiO1xuaW1wb3J0IHsgdXNlRXh0ZW5zaW9uU2xvdCB9IGZyb20gXCIuL3VzZUV4dGVuc2lvblNsb3RcIjtcblxuZXhwb3J0IGludGVyZmFjZSBFeHRlbnNpb25TbG90QmFzZVByb3BzIHtcbiAgbmFtZTogc3RyaW5nO1xuICAvKiogQGRlcHJlY2F0ZWQgVXNlIGBuYW1lYCAqL1xuICBleHRlbnNpb25TbG90TmFtZT86IHN0cmluZztcbiAgc2VsZWN0PzogKGV4dGVuc2lvbnM6IEFycmF5PENvbm5lY3RlZEV4dGVuc2lvbj4pID0+IEFycmF5PENvbm5lY3RlZEV4dGVuc2lvbj47XG4gIHN0YXRlPzogUmVjb3JkPHN0cmluZywgYW55Pjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBPbGRFeHRlbnNpb25TbG90QmFzZVByb3BzIHtcbiAgbmFtZT86IHN0cmluZztcbiAgLyoqIEBkZXByZWNhdGVkIFVzZSBgbmFtZWAgKi9cbiAgZXh0ZW5zaW9uU2xvdE5hbWU6IHN0cmluZztcbiAgc2VsZWN0PzogKGV4dGVuc2lvbnM6IEFycmF5PENvbm5lY3RlZEV4dGVuc2lvbj4pID0+IEFycmF5PENvbm5lY3RlZEV4dGVuc2lvbj47XG4gIHN0YXRlPzogUmVjb3JkPHN0cmluZywgYW55Pjtcbn1cblxuZXhwb3J0IHR5cGUgRXh0ZW5zaW9uU2xvdFByb3BzID0gKFxuICB8IE9sZEV4dGVuc2lvblNsb3RCYXNlUHJvcHNcbiAgfCBFeHRlbnNpb25TbG90QmFzZVByb3BzXG4pICZcbiAgT21pdDxSZWFjdC5IVE1MQXR0cmlidXRlczxIVE1MRGl2RWxlbWVudD4sIFwiY2hpbGRyZW5cIj4gJiB7XG4gICAgY2hpbGRyZW4/OlxuICAgICAgfCBSZWFjdC5SZWFjdE5vZGVcbiAgICAgIHwgKChleHRlbnNpb246IENvbm5lY3RlZEV4dGVuc2lvbikgPT4gUmVhY3QuUmVhY3ROb2RlKTtcbiAgfTtcblxuZnVuY3Rpb24gZGVmYXVsdFNlbGVjdChleHRlbnNpb25zOiBBcnJheTxDb25uZWN0ZWRFeHRlbnNpb24+KSB7XG4gIHJldHVybiBleHRlbnNpb25zO1xufVxuXG4vKipcbiAqIEFuIFtleHRlbnNpb24gc2xvdF0oaHR0cHM6Ly9vMy1kZXYuZG9jcy5vcGVubXJzLm9yZy8jL21haW4vZXh0ZW5zaW9ucykuXG4gKiBBIHBsYWNlIHdpdGggYSBuYW1lLiBFeHRlbnNpb25zIHRoYXQgZ2V0IGNvbm5lY3RlZCB0byB0aGF0IG5hbWVcbiAqIHdpbGwgYmUgcmVuZGVyZWQgaW50byB0aGlzLlxuICpcbiAqIEBwYXJhbSBwcm9wcy5uYW1lIFRoZSBuYW1lIG9mIHRoZSBleHRlbnNpb24gc2xvdFxuICogQHBhcmFtIHByb3BzLnNlbGVjdCBBbiBvcHRpb25hbCBmdW5jdGlvbiBmb3IgZmlsdGVyaW5nIG9yIG90aGVyd2lzZSBtb2RpZnlpbmdcbiAqICAgdGhlIGxpc3Qgb2YgZXh0ZW5zaW9ucyB0aGF0IHdpbGwgYmUgcmVuZGVyZWQuXG4gKiBAcGFyYW0gcHJvcHMuc3RhdGUgKk9ubHkgd29ya3MgaWYgbm8gY2hpbGRyZW4gYXJlIHByb3ZpZGVkKi4gUGFzc2VzIGRhdGFcbiAqICAgdGhyb3VnaCBhcyBwcm9wcyB0byB0aGUgZXh0ZW5zaW9ucyB0aGF0IGFyZSBtb3VudGVkIGhlcmUuIElmIGBFeHRlbnNpb25TbG90YFxuICogICBoYXMgY2hpbGRyZW4sIHlvdSBtdXN0IHBhc3MgdGhlIHN0YXRlIHRocm91Z2ggdGhlIGBzdGF0ZWAgcGFyYW0gb2YgdGhlXG4gKiAgIGBFeHRlbnNpb25gIGNvbXBvbmVudC5cbiAqIEBwYXJhbSBwcm9wcy5jaGlsZHJlbiBUaGVyZSBhcmUgdHdvIGRpZmZlcmVudCB3YXlzIHRvIHVzZSBgRXh0ZW5zaW9uU2xvdGBcbiAqICAgY2hpbGRyZW4uXG4gKiAgLSBQYXNzaW5nIGEgYFJlYWN0Tm9kZWAsIHRoZSBcIm5vcm1hbFwiIHdheS4gVGhlIGNoaWxkIG11c3QgY29udGFpbiB0aGUgY29tcG9uZW50XG4gKiAgICAgYEV4dGVuc2lvbmAuIFdoYXRldmVyIGlzIHBhc3NlZCBhcyB0aGUgY2hpbGQgd2lsbCBiZSByZW5kZXJlZCBvbmNlIHBlciBleHRlbnNpb24uXG4gKiAgICAgU2VlIHRoZSBmaXJzdCBleGFtcGxlIGJlbG93LlxuICogIC0gUGFzc2luZyBhIGZ1bmN0aW9uLCB0aGUgXCJyZW5kZXIgcHJvcHNcIiB3YXkuIFRoZSBjaGlsZCBtdXN0IGJlIGEgZnVuY3Rpb25cbiAqICAgICB3aGljaCB0YWtlcyBhIFtbQ29ubmVjdGVkRXh0ZW5zaW9uXV0gYXMgYXJndW1lbnQgYW5kIHJldHVybnMgYSBgUmVhY3ROb2RlYC5cbiAqICAgICB0aGUgcmVzdWx0aW5nIHJlYWN0IG5vZGUgbXVzdCBjb250YWluIHRoZSBjb21wb25lbnQgYEV4dGVuc2lvbmAuIEl0IHdpbGxcbiAqICAgICBiZSBydW4gZm9yIGVhY2ggZXh0ZW5zaW9uLiBTZWUgdGhlIHNlY29uZCBleGFtcGxlIGJlbG93LlxuICpcbiAqIEBleGFtcGxlXG4gKiBQYXNzaW5nIGEgcmVhY3Qgbm9kZSBhcyBjaGlsZHJlblxuICpcbiAqIGBgYHRzeFxuICogPEV4dGVuc2lvblNsb3QgbmFtZT1cIkZvb1wiPlxuICogICA8ZGl2IHN0eWxlPXt7IHdpZHRoOiAxMHJlbSB9fT5cbiAqICAgICA8RXh0ZW5zaW9uIC8+XG4gKiAgIDwvZGl2PlxuICogPC9FeHRlbnNpb25TbG90PlxuICogYGBgXG4gKlxuICogQGV4YW1wbGVcbiAqIFBhc3NpbmcgYSBmdW5jdGlvbiBhcyBjaGlsZHJlblxuICpcbiAqIGBgYHRzeFxuICogPEV4dGVuc2lvblNsb3QgbmFtZT1cIkJhclwiPlxuICogICB7KGV4dGVuc2lvbikgPT4gKFxuICogICAgIDxoMT57ZXh0ZW5zaW9uLm5hbWV9PC9oMT5cbiAqICAgICA8ZGl2IHN0eWxlPXt7IGNvbG9yOiBleHRlbnNpb24ubWV0YS5jb2xvciB9fT5cbiAqICAgICAgIDxFeHRlbnNpb24gLz5cbiAqICAgICA8L2Rpdj5cbiAqICAgKX1cbiAqIDwvRXh0ZW5zaW9uU2xvdD5cbiAqIGBgYFxuICpcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIEV4dGVuc2lvblNsb3Qoe1xuICBuYW1lOiBleHRlbnNpb25TbG90TmFtZSxcbiAgZXh0ZW5zaW9uU2xvdE5hbWU6IGxlZ2FjeUV4dGVuc2lvblNsb3ROYW1lLFxuICBzZWxlY3QgPSBkZWZhdWx0U2VsZWN0LFxuICBjaGlsZHJlbixcbiAgc3RhdGUsXG4gIHN0eWxlLFxuICAuLi5kaXZQcm9wc1xufTogRXh0ZW5zaW9uU2xvdFByb3BzKSB7XG4gIGlmIChjaGlsZHJlbiAmJiBzdGF0ZSkge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgIFwiQm90aCBjaGlsZHJlbiBhbmQgc3RhdGUgaGF2ZSBiZWVuIHByb3ZpZGVkLiBJZiBjaGlsZHJlbiBhcmUgcHJvdmlkZWQsIHRoZSBzdGF0ZSBtdXN0IGJlIHBhc3NlZCBhcyBhIHByb3AgdG8gdGhlIGBFeHRlbnNpb25gIGNvbXBvbmVudC5cIlxuICAgICk7XG4gIH1cblxuICBjb25zdCBuYW1lID0gKGV4dGVuc2lvblNsb3ROYW1lID8/IGxlZ2FjeUV4dGVuc2lvblNsb3ROYW1lKSBhcyBzdHJpbmc7XG4gIGNvbnN0IHNsb3RSZWYgPSB1c2VSZWYobnVsbCk7XG4gIGNvbnN0IHsgZXh0ZW5zaW9ucywgZXh0ZW5zaW9uU2xvdE1vZHVsZU5hbWUgfSA9IHVzZUV4dGVuc2lvblNsb3QobmFtZSk7XG5cbiAgY29uc3QgZXh0ZW5zaW9uc1RvUmVuZGVyID0gdXNlTWVtbyhcbiAgICAoKSA9PiBzZWxlY3QoZXh0ZW5zaW9ucyksXG4gICAgW3NlbGVjdCwgZXh0ZW5zaW9uc11cbiAgKTtcblxuICBjb25zdCBleHRlbnNpb25zRnJvbUNoaWxkcmVuRnVuY3Rpb24gPSB1c2VNZW1vKCgpID0+IHtcbiAgICBpZiAodHlwZW9mIGNoaWxkcmVuID09IFwiZnVuY3Rpb25cIiAmJiAhUmVhY3QuaXNWYWxpZEVsZW1lbnQoY2hpbGRyZW4pKSB7XG4gICAgICByZXR1cm4gZXh0ZW5zaW9uc1RvUmVuZGVyLm1hcCgoZXh0ZW5zaW9uKSA9PiBjaGlsZHJlbihleHRlbnNpb24pKTtcbiAgICB9XG4gIH0sIFtjaGlsZHJlbiwgZXh0ZW5zaW9uc1RvUmVuZGVyXSk7XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2XG4gICAgICByZWY9e3Nsb3RSZWZ9XG4gICAgICBkYXRhLWV4dGVuc2lvbi1zbG90LW5hbWU9e25hbWV9XG4gICAgICBkYXRhLWV4dGVuc2lvbi1zbG90LW1vZHVsZS1uYW1lPXtleHRlbnNpb25TbG90TW9kdWxlTmFtZX1cbiAgICAgIHN0eWxlPXt7IC4uLnN0eWxlLCBwb3NpdGlvbjogXCJyZWxhdGl2ZVwiIH19XG4gICAgICB7Li4uZGl2UHJvcHN9XG4gICAgPlxuICAgICAge25hbWUgJiZcbiAgICAgICAgZXh0ZW5zaW9uc1RvUmVuZGVyLm1hcCgoZXh0ZW5zaW9uLCBpKSA9PiAoXG4gICAgICAgICAgPENvbXBvbmVudENvbnRleHQuUHJvdmlkZXJcbiAgICAgICAgICAgIGtleT17ZXh0ZW5zaW9uLmlkfVxuICAgICAgICAgICAgdmFsdWU9e3tcbiAgICAgICAgICAgICAgbW9kdWxlTmFtZTogZXh0ZW5zaW9uU2xvdE1vZHVsZU5hbWUsIC8vIG1vZHVsZU5hbWUgaXMgbm90IHVzZWQgYnkgdGhlIHJlY2VpdmluZyBFeHRlbnNpb25cbiAgICAgICAgICAgICAgZXh0ZW5zaW9uOiB7XG4gICAgICAgICAgICAgICAgZXh0ZW5zaW9uSWQ6IGV4dGVuc2lvbi5pZCxcbiAgICAgICAgICAgICAgICBleHRlbnNpb25TbG90TmFtZTogbmFtZSxcbiAgICAgICAgICAgICAgICBleHRlbnNpb25TbG90TW9kdWxlTmFtZSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgPlxuICAgICAgICAgICAge2V4dGVuc2lvbnNGcm9tQ2hpbGRyZW5GdW5jdGlvbj8uW2ldID8/XG4gICAgICAgICAgICAgICh0eXBlb2YgY2hpbGRyZW4gIT0gXCJmdW5jdGlvblwiID8gY2hpbGRyZW4gOiBudWxsKSA/PyAoXG4gICAgICAgICAgICAgICAgPEV4dGVuc2lvbiBzdGF0ZT17c3RhdGV9IC8+XG4gICAgICAgICAgICAgICl9XG4gICAgICAgICAgPC9Db21wb25lbnRDb250ZXh0LlByb3ZpZGVyPlxuICAgICAgICApKX1cbiAgICA8L2Rpdj5cbiAgKTtcbn1cbiJdLCJuYW1lcyI6WyJSZWFjdCIsInVzZVJlZiIsInVzZU1lbW8iLCJDb21wb25lbnRDb250ZXh0IiwiRXh0ZW5zaW9uIiwidXNlRXh0ZW5zaW9uU2xvdCIsImRlZmF1bHRTZWxlY3QiLCJleHRlbnNpb25zIiwiRXh0ZW5zaW9uU2xvdCIsIm5hbWUiLCJleHRlbnNpb25TbG90TmFtZSIsImxlZ2FjeUV4dGVuc2lvblNsb3ROYW1lIiwic2VsZWN0IiwiY2hpbGRyZW4iLCJzdGF0ZSIsInN0eWxlIiwiZGl2UHJvcHMiLCJFcnJvciIsInNsb3RSZWYiLCJleHRlbnNpb25TbG90TW9kdWxlTmFtZSIsImV4dGVuc2lvbnNUb1JlbmRlciIsImV4dGVuc2lvbnNGcm9tQ2hpbGRyZW5GdW5jdGlvbiIsImlzVmFsaWRFbGVtZW50IiwibWFwIiwiZXh0ZW5zaW9uIiwiZGl2IiwicmVmIiwiZGF0YS1leHRlbnNpb24tc2xvdC1uYW1lIiwiZGF0YS1leHRlbnNpb24tc2xvdC1tb2R1bGUtbmFtZSIsInBvc2l0aW9uIiwiaSIsIlByb3ZpZGVyIiwia2V5IiwiaWQiLCJ2YWx1ZSIsIm1vZHVsZU5hbWUiLCJleHRlbnNpb25JZCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../framework/esm-react-utils/src/ExtensionSlot.tsx\n");
7075
7064
 
7076
7065
  /***/ }),
7077
7066
 
@@ -7093,7 +7082,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
7093
7082
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
7094
7083
 
7095
7084
  "use strict";
7096
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"createUseStore\": () => (/* binding */ createUseStore)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"webpack/sharing/consume/default/react/react\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/** @module @category Store */ function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];\n return arr2;\n}\nfunction _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nfunction _iterableToArrayLimit(arr, i) {\n var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"];\n if (_i == null) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n var _s, _e;\n try {\n for(_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true){\n _arr.push(_s.value);\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally{\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally{\n if (_d) throw _e;\n }\n }\n return _arr;\n}\nfunction _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nfunction _objectSpread(target) {\n for(var i = 1; i < arguments.length; i++){\n var source = arguments[i] != null ? arguments[i] : {};\n var ownKeys = Object.keys(source);\n if (typeof Object.getOwnPropertySymbols === \"function\") {\n ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {\n return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n }));\n }\n ownKeys.forEach(function(key) {\n _defineProperty(target, key, source[key]);\n });\n }\n return target;\n}\nfunction _slicedToArray(arr, i) {\n return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();\n}\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(n);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\n\nfunction bindActions(store, actions) {\n if (typeof actions == \"function\") {\n actions = actions(store);\n }\n var bound = {};\n for(var i in actions){\n bound[i] = store.action(actions[i]);\n }\n return bound;\n}\n/** Avoid this; generally prefer to have clients use `useStore(yourStore)` */ function createUseStore(store) {\n var useStore = function useStore(actions) {\n var ref = _slicedToArray((0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(store.getState()), 2), state = ref[0], set = ref[1];\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(function() {\n return store.subscribe(function(state) {\n return set(state);\n });\n }, []);\n var boundActions = {};\n if (actions) {\n boundActions = (0,react__WEBPACK_IMPORTED_MODULE_0__.useMemo)(function() {\n return bindActions(store, actions);\n }, [\n store,\n actions\n ]);\n }\n return _objectSpread({}, state, boundActions);\n };\n return useStore;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vZnJhbWV3b3JrL2VzbS1yZWFjdC11dGlscy9zcmMvY3JlYXRlVXNlU3RvcmUudHMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsNEJBQTRCLEdBQzVCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFxRDtBQU1yRCxTQUFTRyxZQUFlQyxLQUFlLEVBQUVDLE9BQWdCLEVBQUU7SUFDekQsSUFBSSxPQUFPQSxXQUFXLFlBQVk7UUFDaENBLFVBQVVBLFFBQVFEO0lBQ3BCLENBQUM7SUFFRCxJQUFNRSxRQUFRLENBQUM7SUFFZixJQUFLLElBQUlDLEtBQUtGLFFBQVM7UUFDckJDLEtBQUssQ0FBQ0MsRUFBRSxHQUFHSCxNQUFNSSxNQUFNLENBQUNILE9BQU8sQ0FBQ0UsRUFBRTtJQUNwQztJQUVBLE9BQU9EO0FBQ1Q7QUFFQSwyRUFBMkUsR0FDcEUsU0FBU0csZUFBa0JMLEtBQWUsRUFBRTtRQUl4Q00sV0FBVCxTQUFTQSxTQUFTTCxPQUFpQixFQUFFO1FBQ25DLElBQXFCSCxxQkFBQUEsK0NBQVFBLENBQUNFLE1BQU1PLFFBQVEsU0FBckNDLFFBQWNWLFFBQVBXLE1BQU9YO1FBQ3JCRixnREFBU0EsQ0FBQzttQkFBTUksTUFBTVUsU0FBUyxDQUFDLFNBQUNGO3VCQUFVQyxJQUFJRDs7V0FBUyxFQUFFO1FBQzFELElBQUlHLGVBQTZCLENBQUM7UUFFbEMsSUFBSVYsU0FBUztZQUNYVSxlQUFlZCw4Q0FBT0EsQ0FDcEI7dUJBQU1FLFlBQVlDLE9BQU9DO2VBQ3pCO2dCQUFDRDtnQkFBT0M7YUFBUTtRQUVwQixDQUFDO1FBRUQsT0FBTyxrQkFBS08sT0FBVUc7SUFDeEI7SUFFQSxPQUFPTDtBQUNULENBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Ab3Blbm1ycy9lc20tYXBwLXNoZWxsLy4uLy4uL2ZyYW1ld29yay9lc20tcmVhY3QtdXRpbHMvc3JjL2NyZWF0ZVVzZVN0b3JlLnRzP2UyNzUiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqIEBtb2R1bGUgQGNhdGVnb3J5IFN0b3JlICovXG5pbXBvcnQgeyB1c2VFZmZlY3QsIHVzZU1lbW8sIHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyBTdG9yZSwgQm91bmRBY3Rpb24gfSBmcm9tIFwidW5pc3RvcmVcIjtcblxuZXhwb3J0IHR5cGUgQWN0aW9ucyA9IEZ1bmN0aW9uIHwgeyBba2V5OiBzdHJpbmddOiBGdW5jdGlvbiB9O1xuZXhwb3J0IHR5cGUgQm91bmRBY3Rpb25zID0geyBba2V5OiBzdHJpbmddOiBCb3VuZEFjdGlvbiB9O1xuXG5mdW5jdGlvbiBiaW5kQWN0aW9uczxUPihzdG9yZTogU3RvcmU8VD4sIGFjdGlvbnM6IEFjdGlvbnMpIHtcbiAgaWYgKHR5cGVvZiBhY3Rpb25zID09IFwiZnVuY3Rpb25cIikge1xuICAgIGFjdGlvbnMgPSBhY3Rpb25zKHN0b3JlKTtcbiAgfVxuXG4gIGNvbnN0IGJvdW5kID0ge307XG5cbiAgZm9yIChsZXQgaSBpbiBhY3Rpb25zKSB7XG4gICAgYm91bmRbaV0gPSBzdG9yZS5hY3Rpb24oYWN0aW9uc1tpXSk7XG4gIH1cblxuICByZXR1cm4gYm91bmQ7XG59XG5cbi8qKiBBdm9pZCB0aGlzOyBnZW5lcmFsbHkgcHJlZmVyIHRvIGhhdmUgY2xpZW50cyB1c2UgYHVzZVN0b3JlKHlvdXJTdG9yZSlgICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlVXNlU3RvcmU8VD4oc3RvcmU6IFN0b3JlPFQ+KSB7XG4gIGZ1bmN0aW9uIHVzZVN0b3JlKCk6IFQ7XG4gIGZ1bmN0aW9uIHVzZVN0b3JlKGFjdGlvbnM6IEFjdGlvbnMpOiBUICYgQm91bmRBY3Rpb25zO1xuICBmdW5jdGlvbiB1c2VTdG9yZShhY3Rpb25zPzogQWN0aW9ucyk6IFQgJiBCb3VuZEFjdGlvbnM7XG4gIGZ1bmN0aW9uIHVzZVN0b3JlKGFjdGlvbnM/OiBBY3Rpb25zKSB7XG4gICAgY29uc3QgW3N0YXRlLCBzZXRdID0gdXNlU3RhdGUoc3RvcmUuZ2V0U3RhdGUoKSk7XG4gICAgdXNlRWZmZWN0KCgpID0+IHN0b3JlLnN1YnNjcmliZSgoc3RhdGUpID0+IHNldChzdGF0ZSkpLCBbXSk7XG4gICAgbGV0IGJvdW5kQWN0aW9uczogQm91bmRBY3Rpb25zID0ge307XG5cbiAgICBpZiAoYWN0aW9ucykge1xuICAgICAgYm91bmRBY3Rpb25zID0gdXNlTWVtbyhcbiAgICAgICAgKCkgPT4gYmluZEFjdGlvbnMoc3RvcmUsIGFjdGlvbnMpLFxuICAgICAgICBbc3RvcmUsIGFjdGlvbnNdXG4gICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiB7IC4uLnN0YXRlLCAuLi5ib3VuZEFjdGlvbnMgfTtcbiAgfVxuXG4gIHJldHVybiB1c2VTdG9yZTtcbn1cbiJdLCJuYW1lcyI6WyJ1c2VFZmZlY3QiLCJ1c2VNZW1vIiwidXNlU3RhdGUiLCJiaW5kQWN0aW9ucyIsInN0b3JlIiwiYWN0aW9ucyIsImJvdW5kIiwiaSIsImFjdGlvbiIsImNyZWF0ZVVzZVN0b3JlIiwidXNlU3RvcmUiLCJnZXRTdGF0ZSIsInN0YXRlIiwic2V0Iiwic3Vic2NyaWJlIiwiYm91bmRBY3Rpb25zIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../framework/esm-react-utils/src/createUseStore.ts\n");
7085
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"createUseStore\": () => (/* binding */ createUseStore)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"webpack/sharing/consume/default/react/react\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/** @module @category Store */ function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];\n return arr2;\n}\nfunction _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nfunction _iterableToArrayLimit(arr, i) {\n var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"];\n if (_i == null) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n var _s, _e;\n try {\n for(_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true){\n _arr.push(_s.value);\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally{\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally{\n if (_d) throw _e;\n }\n }\n return _arr;\n}\nfunction _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nfunction _objectSpread(target) {\n for(var i = 1; i < arguments.length; i++){\n var source = arguments[i] != null ? arguments[i] : {};\n var ownKeys = Object.keys(source);\n if (typeof Object.getOwnPropertySymbols === \"function\") {\n ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {\n return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n }));\n }\n ownKeys.forEach(function(key) {\n _defineProperty(target, key, source[key]);\n });\n }\n return target;\n}\nfunction _slicedToArray(arr, i) {\n return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();\n}\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(n);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\n\nfunction bindActions(store, actions) {\n var _loop = function(i) {\n bound[i] = function() {\n var args = _arguments;\n store.setState(function(state) {\n var _args = [\n state\n ];\n for(var i1 = 0; i1 < args.length; i1++){\n _args.push(args[i1]);\n }\n return actions[i](_args);\n });\n };\n };\n var _arguments = arguments;\n if (typeof actions == \"function\") {\n actions = actions(store);\n }\n var bound = {};\n for(var i in actions)_loop(i);\n return bound;\n}\n/** Avoid this; generally prefer to have clients use `useStore(yourStore)` */ function createUseStore(store) {\n var useStore = function useStore(actions) {\n var ref = _slicedToArray((0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(store.getState()), 2), state = ref[0], set = ref[1];\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(function() {\n return store.subscribe(function(state) {\n return set(state);\n });\n }, []);\n var boundActions = (0,react__WEBPACK_IMPORTED_MODULE_0__.useMemo)(function() {\n return actions ? bindActions(store, actions) : {};\n }, [\n actions\n ]);\n return _objectSpread({}, state, boundActions);\n };\n return useStore;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vZnJhbWV3b3JrL2VzbS1yZWFjdC11dGlscy9zcmMvY3JlYXRlVXNlU3RvcmUudHMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsNEJBQTRCLEdBQzVCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFxRDtBQU1yRCxTQUFTRyxZQUFlQyxLQUFrQixFQUFFQyxPQUFnQixFQUFnQjs0QkFPbkQ7UUFDckJDLEtBQUssQ0FBQ0MsRUFBRSxHQUFHLFdBQU07WUFDZixJQUFNQztZQUNOSixNQUFNSyxRQUFRLENBQUMsU0FBQ0MsT0FBVTtnQkFDeEIsSUFBSUMsUUFBUTtvQkFBQ0Q7aUJBQU07Z0JBQ25CLElBQUssSUFBSUgsS0FBSSxHQUFHQSxLQUFJQyxLQUFLSSxNQUFNLEVBQUVMLEtBQUs7b0JBQ3BDSSxNQUFNRSxJQUFJLENBQUNMLElBQUksQ0FBQ0QsR0FBRTtnQkFDcEI7Z0JBRUEsT0FBT0YsT0FBTyxDQUFDRSxFQUFFLENBQUNJO1lBQ3BCO1FBQ0Y7SUFDRjs7SUFsQkEsSUFBSSxPQUFPTixXQUFXLFlBQVk7UUFDaENBLFVBQVVBLFFBQVFEO0lBQ3BCLENBQUM7SUFFRCxJQUFNRSxRQUFRLENBQUM7SUFFZixJQUFLLElBQUlDLEtBQUtGO0lBY2QsT0FBT0M7QUFDVDtBQUVBLDJFQUEyRSxHQUNwRSxTQUFTUSxlQUFrQlYsS0FBa0IsRUFBRTtRQUkzQ1csV0FBVCxTQUFTQSxTQUFTVixPQUFpQixFQUFFO1FBQ25DLElBQXFCSCxxQkFBQUEsK0NBQVFBLENBQUNFLE1BQU1ZLFFBQVEsU0FBckNOLFFBQWNSLFFBQVBlLE1BQU9mO1FBQ3JCRixnREFBU0EsQ0FBQzttQkFBTUksTUFBTWMsU0FBUyxDQUFDLFNBQUNSO3VCQUFVTyxJQUFJUDs7V0FBUyxFQUFFO1FBQzFELElBQUlTLGVBQTZCbEIsOENBQU9BLENBQ3RDO21CQUFPSSxVQUFVRixZQUFZQyxPQUFPQyxXQUFXLENBQUMsQ0FBQztXQUNqRDtZQUFDQTtTQUFRO1FBR1gsT0FBTyxrQkFBS0ssT0FBVVM7SUFDeEI7SUFFQSxPQUFPSjtBQUNULENBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Ab3Blbm1ycy9lc20tYXBwLXNoZWxsLy4uLy4uL2ZyYW1ld29yay9lc20tcmVhY3QtdXRpbHMvc3JjL2NyZWF0ZVVzZVN0b3JlLnRzP2UyNzUiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqIEBtb2R1bGUgQGNhdGVnb3J5IFN0b3JlICovXG5pbXBvcnQgeyB1c2VFZmZlY3QsIHVzZU1lbW8sIHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgdHlwZSB7IFN0b3JlQXBpIH0gZnJvbSBcInp1c3RhbmRcIjtcblxuZXhwb3J0IHR5cGUgQWN0aW9ucyA9IEZ1bmN0aW9uIHwgeyBba2V5OiBzdHJpbmddOiBGdW5jdGlvbiB9O1xuZXhwb3J0IHR5cGUgQm91bmRBY3Rpb25zID0geyBba2V5OiBzdHJpbmddOiAoLi4uYXJnczogYW55W10pID0+IHZvaWQgfTtcblxuZnVuY3Rpb24gYmluZEFjdGlvbnM8VD4oc3RvcmU6IFN0b3JlQXBpPFQ+LCBhY3Rpb25zOiBBY3Rpb25zKTogQm91bmRBY3Rpb25zIHtcbiAgaWYgKHR5cGVvZiBhY3Rpb25zID09IFwiZnVuY3Rpb25cIikge1xuICAgIGFjdGlvbnMgPSBhY3Rpb25zKHN0b3JlKTtcbiAgfVxuXG4gIGNvbnN0IGJvdW5kID0ge307XG5cbiAgZm9yIChsZXQgaSBpbiBhY3Rpb25zKSB7XG4gICAgYm91bmRbaV0gPSAoKSA9PiB7XG4gICAgICBjb25zdCBhcmdzID0gYXJndW1lbnRzO1xuICAgICAgc3RvcmUuc2V0U3RhdGUoKHN0YXRlKSA9PiB7XG4gICAgICAgIGxldCBfYXJncyA9IFtzdGF0ZV07XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYXJncy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgIF9hcmdzLnB1c2goYXJnc1tpXSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gYWN0aW9uc1tpXShfYXJncyk7XG4gICAgICB9KTtcbiAgICB9O1xuICB9XG5cbiAgcmV0dXJuIGJvdW5kO1xufVxuXG4vKiogQXZvaWQgdGhpczsgZ2VuZXJhbGx5IHByZWZlciB0byBoYXZlIGNsaWVudHMgdXNlIGB1c2VTdG9yZSh5b3VyU3RvcmUpYCAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVVzZVN0b3JlPFQ+KHN0b3JlOiBTdG9yZUFwaTxUPikge1xuICBmdW5jdGlvbiB1c2VTdG9yZSgpOiBUO1xuICBmdW5jdGlvbiB1c2VTdG9yZShhY3Rpb25zOiBBY3Rpb25zKTogVCAmIEJvdW5kQWN0aW9ucztcbiAgZnVuY3Rpb24gdXNlU3RvcmUoYWN0aW9ucz86IEFjdGlvbnMpOiBUICYgQm91bmRBY3Rpb25zO1xuICBmdW5jdGlvbiB1c2VTdG9yZShhY3Rpb25zPzogQWN0aW9ucykge1xuICAgIGNvbnN0IFtzdGF0ZSwgc2V0XSA9IHVzZVN0YXRlKHN0b3JlLmdldFN0YXRlKCkpO1xuICAgIHVzZUVmZmVjdCgoKSA9PiBzdG9yZS5zdWJzY3JpYmUoKHN0YXRlKSA9PiBzZXQoc3RhdGUpKSwgW10pO1xuICAgIGxldCBib3VuZEFjdGlvbnM6IEJvdW5kQWN0aW9ucyA9IHVzZU1lbW8oXG4gICAgICAoKSA9PiAoYWN0aW9ucyA/IGJpbmRBY3Rpb25zKHN0b3JlLCBhY3Rpb25zKSA6IHt9KSxcbiAgICAgIFthY3Rpb25zXVxuICAgICk7XG5cbiAgICByZXR1cm4geyAuLi5zdGF0ZSwgLi4uYm91bmRBY3Rpb25zIH07XG4gIH1cblxuICByZXR1cm4gdXNlU3RvcmU7XG59XG4iXSwibmFtZXMiOlsidXNlRWZmZWN0IiwidXNlTWVtbyIsInVzZVN0YXRlIiwiYmluZEFjdGlvbnMiLCJzdG9yZSIsImFjdGlvbnMiLCJib3VuZCIsImkiLCJhcmdzIiwic2V0U3RhdGUiLCJzdGF0ZSIsIl9hcmdzIiwibGVuZ3RoIiwicHVzaCIsImNyZWF0ZVVzZVN0b3JlIiwidXNlU3RvcmUiLCJnZXRTdGF0ZSIsInNldCIsInN1YnNjcmliZSIsImJvdW5kQWN0aW9ucyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../framework/esm-react-utils/src/createUseStore.ts\n");
7097
7086
 
7098
7087
  /***/ }),
7099
7088
 
@@ -7181,7 +7170,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
7181
7170
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
7182
7171
 
7183
7172
  "use strict";
7184
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"useConfig\": () => (/* binding */ useConfig)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"webpack/sharing/consume/default/react/react\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _openmrs_esm_config__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @openmrs/esm-config */ \"../../framework/esm-config/src/index.ts\");\n/* harmony import */ var _ComponentContext__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./ComponentContext */ \"../../framework/esm-react-utils/src/ComponentContext.ts\");\n/* harmony import */ var lodash_es_isEqual__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! lodash-es/isEqual */ \"../../../node_modules/lodash-es/isEqual.js\");\n/** @module @category Config */ function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];\n return arr2;\n}\nfunction _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nfunction _iterableToArrayLimit(arr, i) {\n var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"];\n if (_i == null) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n var _s, _e;\n try {\n for(_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true){\n _arr.push(_s.value);\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally{\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally{\n if (_d) throw _e;\n }\n }\n return _arr;\n}\nfunction _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nfunction _objectSpread(target) {\n for(var i = 1; i < arguments.length; i++){\n var source = arguments[i] != null ? arguments[i] : {};\n var ownKeys = Object.keys(source);\n if (typeof Object.getOwnPropertySymbols === \"function\") {\n ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {\n return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n }));\n }\n ownKeys.forEach(function(key) {\n _defineProperty(target, key, source[key]);\n });\n }\n return target;\n}\nfunction _slicedToArray(arr, i) {\n return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();\n}\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(n);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\n\n\n\n\nvar promises = {};\nvar errorMessage = 'No ComponentContext has been provided. This should come from \"openmrsComponentDecorator\".\\nUsually this is already applied when using \"getAsyncLifecycle\" or \"getSyncLifecycle\".';\nfunction readInitialConfig(store) {\n return function() {\n var state = store.getState();\n if (state.loaded && state.config) {\n return state.config;\n }\n return null;\n };\n}\nfunction readInitialExtensionConfig(store, extension) {\n if (extension) {\n return function() {\n var state = store.getState();\n var extConfig = (0,_openmrs_esm_config__WEBPACK_IMPORTED_MODULE_1__.getExtensionConfigFromStore)(state, extension.extensionSlotName, extension.extensionId);\n if (extConfig.loaded && extConfig.config) {\n return extConfig.config;\n }\n };\n }\n return null;\n}\nfunction createConfigPromise(store) {\n return new Promise(function(resolve) {\n var unsubscribe = store.subscribe(function(state) {\n if (state.loaded && state.config) {\n resolve(state.config);\n unsubscribe();\n }\n });\n });\n}\nfunction createExtensionConfigPromise(store, extension) {\n return new Promise(function(resolve) {\n var unsubscribe = store.subscribe(function(state) {\n var extConfig = (0,_openmrs_esm_config__WEBPACK_IMPORTED_MODULE_1__.getExtensionConfigFromStore)(state, extension.extensionSlotName, extension.extensionId);\n if (extConfig.loaded && extConfig.config) {\n resolve(extConfig.config);\n unsubscribe();\n }\n });\n });\n}\nfunction useConfigStore(store) {\n var ref = _slicedToArray((0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(readInitialConfig(store)), 2), state = ref[0], setState = ref[1];\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(function() {\n return store === null || store === void 0 ? void 0 : store.subscribe(function(state) {\n if (state.loaded && state.config) {\n setState(state.config);\n }\n });\n }, [\n store\n ]);\n return state;\n}\nfunction useExtensionConfigStore(store, extension) {\n var ref = _slicedToArray((0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(readInitialExtensionConfig(store, extension)), 2), config = ref[0], setConfig = ref[1];\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(function() {\n if (extension) {\n return store.subscribe(function(state) {\n var extConfig = (0,_openmrs_esm_config__WEBPACK_IMPORTED_MODULE_1__.getExtensionConfigFromStore)(state, extension.extensionSlotName, extension.extensionId);\n if (extConfig.loaded && extConfig.config && !(0,lodash_es_isEqual__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(extConfig.config, config)) {\n setConfig(extConfig.config);\n }\n });\n }\n }, [\n store,\n extension,\n config\n ]);\n return config;\n}\nfunction useExtensionConfig(extension) {\n var store = (0,react__WEBPACK_IMPORTED_MODULE_0__.useMemo)(_openmrs_esm_config__WEBPACK_IMPORTED_MODULE_1__.getExtensionsConfigStore, []);\n var state = useExtensionConfigStore(store, extension);\n if (!state && extension) {\n var cacheId = \"\".concat(extension.extensionSlotName, \"-\").concat(extension.extensionId);\n if (!promises[cacheId] && store) {\n promises[cacheId] = createExtensionConfigPromise(store, extension);\n }\n // React will prevent the client component from rendering until the promise resolves\n throw promises[cacheId];\n }\n return state || {};\n}\nfunction useNormalConfig(moduleName) {\n var store = (0,react__WEBPACK_IMPORTED_MODULE_0__.useMemo)(function() {\n return (0,_openmrs_esm_config__WEBPACK_IMPORTED_MODULE_1__.getConfigStore)(moduleName);\n }, [\n moduleName\n ]);\n var cacheId = moduleName;\n var state = useConfigStore(store);\n if (!state) {\n if (!promises[cacheId]) {\n promises[cacheId] = createConfigPromise(store);\n }\n // React will prevent the client component from rendering until the promise resolves\n throw promises[cacheId];\n }\n return state;\n}\n/**\n * Use this React Hook to obtain your module's configuration.\n */ function useConfig() {\n // This hook uses the config of the MF defining the component.\n // If the component is used in an extension slot then the slot\n // may override (part of) its configuration.\n var ref = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(_ComponentContext__WEBPACK_IMPORTED_MODULE_2__.ComponentContext), moduleName = ref.moduleName, extension = ref.extension;\n if (!moduleName && !extension) {\n throw Error(errorMessage);\n }\n var normalConfig = useNormalConfig(moduleName);\n var extensionConfig = useExtensionConfig(extension);\n var config = (0,react__WEBPACK_IMPORTED_MODULE_0__.useMemo)(function() {\n return _objectSpread({}, normalConfig, extensionConfig);\n }, [\n normalConfig,\n extensionConfig\n ]);\n return config;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vZnJhbWV3b3JrL2VzbS1yZWFjdC11dGlscy9zcmMvdXNlQ29uZmlnLnRzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBLDZCQUE2QixHQUM3Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBaUU7QUFRcEM7QUFDd0M7QUFFN0I7QUFFeEMsSUFBTVMsV0FBa0QsQ0FBQztBQUN6RCxJQUFNQyxlQUFnQjtBQUd0QixTQUFTQyxrQkFBa0JDLEtBQXlCLEVBQUU7SUFDcEQsT0FBTyxXQUFNO1FBQ1gsSUFBTUMsUUFBUUQsTUFBTUUsUUFBUTtRQUU1QixJQUFJRCxNQUFNRSxNQUFNLElBQUlGLE1BQU1HLE1BQU0sRUFBRTtZQUNoQyxPQUFPSCxNQUFNRyxNQUFNO1FBQ3JCLENBQUM7UUFFRCxPQUFPLElBQUk7SUFDYjtBQUNGO0FBRUEsU0FBU0MsMkJBQ1BMLEtBQW1DLEVBQ25DTSxTQUFvQyxFQUNwQztJQUNBLElBQUlBLFdBQVc7UUFDYixPQUFPLFdBQU07WUFDWCxJQUFNTCxRQUFRRCxNQUFNRSxRQUFRO1lBQzVCLElBQU1LLFlBQVliLGdGQUEyQkEsQ0FDM0NPLE9BQ0FLLFVBQVVFLGlCQUFpQixFQUMzQkYsVUFBVUcsV0FBVztZQUV2QixJQUFJRixVQUFVSixNQUFNLElBQUlJLFVBQVVILE1BQU0sRUFBRTtnQkFDeEMsT0FBT0csVUFBVUgsTUFBTTtZQUN6QixDQUFDO1FBQ0g7SUFDRixDQUFDO0lBQ0QsT0FBTyxJQUFJO0FBQ2I7QUFFQSxTQUFTTSxvQkFBb0JWLEtBQXlCLEVBQUU7SUFDdEQsT0FBTyxJQUFJVyxRQUFzQixTQUFDQyxTQUFZO1FBQzVDLElBQU1DLGNBQWNiLE1BQU1jLFNBQVMsQ0FBQyxTQUFDYixPQUFVO1lBQzdDLElBQUlBLE1BQU1FLE1BQU0sSUFBSUYsTUFBTUcsTUFBTSxFQUFFO2dCQUNoQ1EsUUFBUVgsTUFBTUcsTUFBTTtnQkFD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Q0FBQztJQUVELE9BQU9wQjtBQUNUO0FBRUE7O0NBRUMsR0FDTSxTQUFTdUIsWUFFWjtJQUNGLDhEQUE4RDtJQUM5RCw4REFBOEQ7SUFDOUQsNENBQTRDO0lBQzVDLElBQWtDcEMsTUFBQUEsaURBQVVBLENBQUNPLCtEQUFnQkEsR0FBckQ0QixhQUEwQm5DLElBQTFCbUMsWUFBWWpCLFlBQWNsQixJQUFka0I7SUFFcEIsSUFBSSxDQUFDaUIsY0FBYyxDQUFDakIsV0FBVztRQUM3QixNQUFNbUIsTUFBTTNCLGNBQWM7SUFDNUIsQ0FBQztJQUVELElBQU00QixlQUFlSixnQkFBZ0JDO0lBQ3JDLElBQU1JLGtCQUFrQlAsbUJBQW1CZDtJQUMzQyxJQUFNRixTQUFTZCw4Q0FBT0EsQ0FDcEI7ZUFBTyxrQkFDRm9DLGNBQ0FDO09BRUw7UUFBQ0Q7UUFBY0M7S0FBZ0I7SUFHakMsT0FBT3ZCO0FBQ1QsQ0FBQyIsInNvdXJjZXMiOlsid2VicGFjazovL0BvcGVubXJzL2VzbS1hcHAtc2hlbGwvLi4vLi4vZnJhbWV3b3JrL2VzbS1yZWFjdC11dGlscy9zcmMvdXNlQ29uZmlnLnRzPzFkMWYiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqIEBtb2R1bGUgQGNhdGVnb3J5IENvbmZpZyAqL1xuaW1wb3J0IHsgdXNlQ29udGV4dCwgdXNlRWZmZWN0LCB1c2VNZW1vLCB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHtcbiAgZ2V0Q29uZmlnU3RvcmUsXG4gIGdldEV4dGVuc2lvbnNDb25maWdTdG9yZSxcbiAgQ29uZmlnU3RvcmUsXG4gIENvbmZpZ09iamVjdCxcbiAgRXh0ZW5zaW9uc0NvbmZpZ1N0b3JlLFxuICBnZXRFeHRlbnNpb25Db25maWdGcm9tU3RvcmUsXG59IGZyb20gXCJAb3Blbm1ycy9lc20tY29uZmlnXCI7XG5pbXBvcnQgeyBDb21wb25lbnRDb250ZXh0LCBFeHRlbnNpb25EYXRhIH0gZnJvbSBcIi4vQ29tcG9uZW50Q29udGV4dFwiO1xuaW1wb3J0IHsgU3RvcmUgfSBmcm9tIFwidW5pc3RvcmVcIjtcbmltcG9ydCBpc0VxdWFsIGZyb20gXCJsb2Rhc2gtZXMvaXNFcXVhbFwiO1xuXG5jb25zdCBwcm9taXNlczogUmVjb3JkPHN0cmluZywgUHJvbWlzZTxDb25maWdPYmplY3Q+PiA9IHt9O1xuY29uc3QgZXJyb3JNZXNzYWdlID0gYE5vIENvbXBvbmVudENvbnRleHQgaGFzIGJlZW4gcHJvdmlkZWQuIFRoaXMgc2hvdWxkIGNvbWUgZnJvbSBcIm9wZW5tcnNDb21wb25lbnREZWNvcmF0b3JcIi5cblVzdWFsbHkgdGhpcyBpcyBhbHJlYWR5IGFwcGxpZWQgd2hlbiB1c2luZyBcImdldEFzeW5jTGlmZWN5Y2xlXCIgb3IgXCJnZXRTeW5jTGlmZWN5Y2xlXCIuYDtcblxuZnVuY3Rpb24gcmVhZEluaXRpYWxDb25maWcoc3RvcmU6IFN0b3JlPENvbmZpZ1N0b3JlPikge1xuICByZXR1cm4gKCkgPT4ge1xuICAgIGNvbnN0IHN0YXRlID0gc3RvcmUuZ2V0U3RhdGUoKTtcblxuICAgIGlmIChzdGF0ZS5sb2FkZWQgJiYgc3RhdGUuY29uZmlnKSB7XG4gICAgICByZXR1cm4gc3RhdGUuY29uZmlnO1xuICAgIH1cblxuICAgIHJldHVybiBudWxsO1xuICB9O1xufVxuXG5mdW5jdGlvbiByZWFkSW5pdGlhbEV4dGVuc2lvbkNvbmZpZyhcbiAgc3RvcmU6IFN0b3JlPEV4dGVuc2lvbnNDb25maWdTdG9yZT4sXG4gIGV4dGVuc2lvbjogRXh0ZW5zaW9uRGF0YSB8IHVuZGVmaW5lZFxuKSB7XG4gIGlmIChleHRlbnNpb24pIHtcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgY29uc3Qgc3RhdGUgPSBzdG9yZS5nZXRTdGF0ZSgpO1xuICAgICAgY29uc3QgZXh0Q29uZmlnID0gZ2V0RXh0ZW5zaW9uQ29uZmlnRnJvbVN0b3JlKFxuICAgICAgICBzdGF0ZSxcbiAgICAgICAgZXh0ZW5zaW9uLmV4dGVuc2lvblNsb3ROYW1lLFxuICAgICAgICBleHRlbnNpb24uZXh0ZW5zaW9uSWRcbiAgICAgICk7XG4gICAgICBpZiAoZXh0Q29uZmlnLmxvYWRlZCAmJiBleHRDb25maWcuY29uZmlnKSB7XG4gICAgICAgIHJldHVybiBleHRDb25maWcuY29uZmlnO1xuICAgICAgfVxuICAgIH07XG4gIH1cbiAgcmV0dXJuIG51bGw7XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZUNvbmZpZ1Byb21pc2Uoc3RvcmU6IFN0b3JlPENvbmZpZ1N0b3JlPikge1xuICByZXR1cm4gbmV3IFByb21pc2U8Q29uZmlnT2JqZWN0PigocmVzb2x2ZSkgPT4ge1xuICAgIGNvbnN0IHVuc3Vic2NyaWJlID0gc3RvcmUuc3Vic2NyaWJlKChzdGF0ZSkgPT4ge1xuICAgICAgaWYgKHN0YXRlLmxvYWRlZCAmJiBzdGF0ZS5jb25maWcpIHtcbiAgICAgICAgcmVzb2x2ZShzdGF0ZS5jb25maWcpO1xuICAgICAgICB1bnN1YnNjcmliZSgpO1xuICAgICAgfVxuICAgIH0pO1xuICB9KTtcbn1cblxuZnVuY3Rpb24gY3JlYXRlRXh0ZW5zaW9uQ29uZmlnUHJvbWlzZShcbiAgc3RvcmU6IFN0b3JlPEV4dGVuc2lvbnNDb25maWdTdG9yZT4sXG4gIGV4dGVuc2lvbjogRXh0ZW5zaW9uRGF0YVxuKSB7XG4gIHJldHVybiBuZXcgUHJvbWlzZTxDb25maWdPYmplY3Q+KChyZXNvbHZlKSA9PiB7XG4gICAgY29uc3QgdW5zdWJzY3JpYmUgPSBzdG9yZS5zdWJzY3JpYmUoKHN0YXRlKSA9PiB7XG4gICAgICBjb25zdCBleHRDb25maWcgPSBnZXRFeHRlbnNpb25Db25maWdGcm9tU3RvcmUoXG4gICAgICAgIHN0YXRlLFxuICAgICAgICBleHRlbnNpb24uZXh0ZW5zaW9uU2xvdE5hbWUsXG4gICAgICAgIGV4dGVuc2lvbi5leHRlbnNpb25JZFxuICAgICAgKTtcbiAgICAgIGlmIChleHRDb25maWcubG9hZGVkICYmIGV4dENvbmZpZy5jb25maWcpIHtcbiAgICAgICAgcmVzb2x2ZShleHRDb25maWcuY29uZmlnKTtcbiAgICAgICAgdW5zdWJzY3JpYmUoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIHVzZUNvbmZpZ1N0b3JlKHN0b3JlOiBTdG9yZTxDb25maWdTdG9yZT4pIHtcbiAgY29uc3QgW3N0YXRlLCBzZXRTdGF0ZV0gPSB1c2VTdGF0ZShyZWFkSW5pdGlhbENvbmZpZyhzdG9yZSkpO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgcmV0dXJuIHN0b3JlPy5zdWJzY3JpYmUoKHN0YXRlKSA9PiB7XG4gICAgICBpZiAoc3RhdGUubG9hZGVkICYmIHN0YXRlLmNvbmZpZykge1xuICAgICAgICBzZXRTdGF0ZShzdGF0ZS5jb25maWcpO1xuICAgICAgfVxuICAgIH0pO1xuICB9LCBbc3RvcmVdKTtcblxuICByZXR1cm4gc3RhdGU7XG59XG5cbmZ1bmN0aW9uIHVzZUV4dGVuc2lvbkNvbmZpZ1N0b3JlKFxuICBzdG9yZTogU3RvcmU8RXh0ZW5zaW9uc0NvbmZpZ1N0b3JlPixcbiAgZXh0ZW5zaW9uOiBFeHRlbnNpb25EYXRhIHwgdW5kZWZpbmVkXG4pIHtcbiAgY29uc3QgW2NvbmZpZywgc2V0Q29uZmlnXSA9IHVzZVN0YXRlPENvbmZpZ09iamVjdCB8IG51bGw+KFxuICAgIHJlYWRJbml0aWFsRXh0ZW5zaW9uQ29uZmlnKHN0b3JlLCBleHRlbnNpb24pXG4gICk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoZXh0ZW5zaW9uKSB7XG4gICAgICByZXR1cm4gc3RvcmUuc3Vic2NyaWJlKChzdGF0ZSkgPT4ge1xuICAgICAgICBjb25zdCBleHRDb25maWcgPSBnZXRFeHRlbnNpb25Db25maWdGcm9tU3RvcmUoXG4gICAgICAgICAgc3RhdGUsXG4gICAgICAgICAgZXh0ZW5zaW9uLmV4dGVuc2lvblNsb3ROYW1lLFxuICAgICAgICAgIGV4dGVuc2lvbi5leHRlbnNpb25JZFxuICAgICAgICApO1xuICAgICAgICBpZiAoXG4gICAgICAgICAgZXh0Q29uZmlnLmxvYWRlZCAmJlxuICAgICAgICAgIGV4dENvbmZpZy5jb25maWcgJiZcbiAgICAgICAgICAhaXNFcXVhbChleHRDb25maWcuY29uZmlnLCBjb25maWcpXG4gICAgICAgICkge1xuICAgICAgICAgIHNldENvbmZpZyhleHRDb25maWcuY29uZmlnKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9LCBbc3RvcmUsIGV4dGVuc2lvbiwgY29uZmlnXSk7XG5cbiAgcmV0dXJuIGNvbmZpZztcbn1cblxuZnVuY3Rpb24gdXNlRXh0ZW5zaW9uQ29uZmlnKGV4dGVuc2lvbjogRXh0ZW5zaW9uRGF0YSB8IHVuZGVmaW5lZCkge1xuICBjb25zdCBzdG9yZSA9IHVzZU1lbW8oZ2V0RXh0ZW5zaW9uc0NvbmZpZ1N0b3JlLCBbXSk7XG4gIGNvbnN0IHN0YXRlID0gdXNlRXh0ZW5zaW9uQ29uZmlnU3RvcmUoc3RvcmUsIGV4dGVuc2lvbik7XG5cbiAgaWYgKCFzdGF0ZSAmJiBleHRlbnNpb24pIHtcbiAgICBjb25zdCBjYWNoZUlkID0gYCR7ZXh0ZW5zaW9uLmV4dGVuc2lvblNsb3ROYW1lfS0ke2V4dGVuc2lvbi5leHRlbnNpb25JZH1gO1xuXG4gICAgaWYgKCFwcm9taXNlc1tjYWNoZUlkXSAmJiBzdG9yZSkge1xuICAgICAgcHJvbWlzZXNbY2FjaGVJZF0gPSBjcmVhdGVFeHRlbnNpb25Db25maWdQcm9taXNlKHN0b3JlLCBleHRlbnNpb24pO1xuICAgIH1cblxuICAgIC8vIFJlYWN0IHdpbGwgcHJldmVudCB0aGUgY2xpZW50IGNvbXBvbmVudCBmcm9tIHJlbmRlcmluZyB1bnRpbCB0aGUgcHJvbWlzZSByZXNvbHZlc1xuICAgIHRocm93IHByb21pc2VzW2NhY2hlSWRdO1xuICB9XG5cbiAgcmV0dXJuIHN0YXRlIHx8IHt9O1xufVxuXG5mdW5jdGlvbiB1c2VOb3JtYWxDb25maWcobW9kdWxlTmFtZTogc3RyaW5nKSB7XG4gIGNvbnN0IHN0b3JlID0gdXNlTWVtbygoKSA9PiBnZXRDb25maWdTdG9yZShtb2R1bGVOYW1lKSwgW21vZHVsZU5hbWVdKTtcbiAgY29uc3QgY2FjaGVJZCA9IG1vZHVsZU5hbWU7XG4gIGNvbnN0IHN0YXRlID0gdXNlQ29uZmlnU3RvcmUoc3RvcmUpO1xuXG4gIGlmICghc3RhdGUpIHtcbiAgICBpZiAoIXByb21pc2VzW2NhY2hlSWRdKSB7XG4gICAgICBwcm9taXNlc1tjYWNoZUlkXSA9IGNyZWF0ZUNvbmZpZ1Byb21pc2Uoc3RvcmUpO1xuICAgIH1cblxuICAgIC8vIFJlYWN0IHdpbGwgcHJldmVudCB0aGUgY2xpZW50IGNvbXBvbmVudCBmcm9tIHJlbmRlcmluZyB1bnRpbCB0aGUgcHJvbWlzZSByZXNvbHZlc1xuICAgIHRocm93IHByb21pc2VzW2NhY2hlSWRdO1xuICB9XG5cbiAgcmV0dXJuIHN0YXRlO1xufVxuXG4vKipcbiAqIFVzZSB0aGlzIFJlYWN0IEhvb2sgdG8gb2J0YWluIHlvdXIgbW9kdWxlJ3MgY29uZmlndXJhdGlvbi5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVzZUNvbmZpZzxcbiAgVCA9IE9taXQ8Q29uZmlnT2JqZWN0LCBcIkRpc3BsYXkgY29uZGl0aW9uc1wiIHwgXCJUcmFuc2xhdGlvbiBvdmVycmlkZXNcIj5cbj4oKSB7XG4gIC8vIFRoaXMgaG9vayB1c2VzIHRoZSBjb25maWcgb2YgdGhlIE1GIGRlZmluaW5nIHRoZSBjb21wb25lbnQuXG4gIC8vIElmIHRoZSBjb21wb25lbnQgaXMgdXNlZCBpbiBhbiBleHRlbnNpb24gc2xvdCB0aGVuIHRoZSBzbG90XG4gIC8vIG1heSBvdmVycmlkZSAocGFydCBvZikgaXRzIGNvbmZpZ3VyYXRpb24uXG4gIGNvbnN0IHsgbW9kdWxlTmFtZSwgZXh0ZW5zaW9uIH0gPSB1c2VDb250ZXh0KENvbXBvbmVudENvbnRleHQpO1xuXG4gIGlmICghbW9kdWxlTmFtZSAmJiAhZXh0ZW5zaW9uKSB7XG4gICAgdGhyb3cgRXJyb3IoZXJyb3JNZXNzYWdlKTtcbiAgfVxuXG4gIGNvbnN0IG5vcm1hbENvbmZpZyA9IHVzZU5vcm1hbENvbmZpZyhtb2R1bGVOYW1lKTtcbiAgY29uc3QgZXh0ZW5zaW9uQ29uZmlnID0gdXNlRXh0ZW5zaW9uQ29uZmlnKGV4dGVuc2lvbik7XG4gIGNvbnN0IGNvbmZpZyA9IHVzZU1lbW8oXG4gICAgKCkgPT4gKHtcbiAgICAgIC4uLm5vcm1hbENvbmZpZyxcbiAgICAgIC4uLmV4dGVuc2lvbkNvbmZpZyxcbiAgICB9KSxcbiAgICBbbm9ybWFsQ29uZmlnLCBleHRlbnNpb25Db25maWddXG4gICk7XG5cbiAgcmV0dXJuIGNvbmZpZyBhcyBUO1xufVxuIl0sIm5hbWVzIjpbInVzZUNvbnRleHQiLCJ1c2VFZmZlY3QiLCJ1c2VNZW1vIiwidXNlU3RhdGUiLCJnZXRDb25maWdTdG9yZSIsImdldEV4dGVuc2lvbnNDb25maWdTdG9yZSIsImdldEV4dGVuc2lvbkNvbmZpZ0Zyb21TdG9yZSIsIkNvbXBvbmVudENvbnRleHQiLCJpc0VxdWFsIiwicHJvbWlzZXMiLCJlcnJvck1lc3NhZ2UiLCJyZWFkSW5pdGlhbENvbmZpZyIsInN0b3JlIiwic3RhdGUiLCJnZXRTdGF0ZSIsImxvYWRlZCIsImNvbmZpZyIsInJlYWRJbml0aWFsRXh0ZW5zaW9uQ29uZmlnIiwiZXh0ZW5zaW9uIiwiZXh0Q29uZmlnIiwiZXh0ZW5zaW9uU2xvdE5hbWUiLCJleHRlbnNpb25JZCIsImNyZWF0ZUNvbmZpZ1Byb21pc2UiLCJQcm9taXNlIiwicmVzb2x2ZSIsInVuc3Vic2NyaWJlIiwic3Vic2NyaWJlIiwiY3JlYXRlRXh0ZW5zaW9uQ29uZmlnUHJvbWlzZSIsInVzZUNvbmZpZ1N0b3JlIiwic2V0U3RhdGUiLCJ1c2VFeHRlbnNpb25Db25maWdTdG9yZSIsInNldENvbmZpZyIsInVzZUV4dGVuc2lvbkNvbmZpZyIsImNhY2hlSWQiLCJ1c2VOb3JtYWxDb25maWciLCJtb2R1bGVOYW1lIiwidXNlQ29uZmlnIiwiRXJyb3IiLCJub3JtYWxDb25maWciLCJleHRlbnNpb25Db25maWciXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../framework/esm-react-utils/src/useConfig.ts\n");
7173
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"useConfig\": () => (/* binding */ useConfig)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"webpack/sharing/consume/default/react/react\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _openmrs_esm_config__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @openmrs/esm-config */ \"../../framework/esm-config/src/index.ts\");\n/* harmony import */ var lodash_es_isEqual__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! lodash-es/isEqual */ \"../../../node_modules/lodash-es/isEqual.js\");\n/* harmony import */ var _ComponentContext__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./ComponentContext */ \"../../framework/esm-react-utils/src/ComponentContext.ts\");\n/** @module @category Config */ function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];\n return arr2;\n}\nfunction _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nfunction _iterableToArrayLimit(arr, i) {\n var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"];\n if (_i == null) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n var _s, _e;\n try {\n for(_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true){\n _arr.push(_s.value);\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally{\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally{\n if (_d) throw _e;\n }\n }\n return _arr;\n}\nfunction _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nfunction _objectSpread(target) {\n for(var i = 1; i < arguments.length; i++){\n var source = arguments[i] != null ? arguments[i] : {};\n var ownKeys = Object.keys(source);\n if (typeof Object.getOwnPropertySymbols === \"function\") {\n ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {\n return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n }));\n }\n ownKeys.forEach(function(key) {\n _defineProperty(target, key, source[key]);\n });\n }\n return target;\n}\nfunction _slicedToArray(arr, i) {\n return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();\n}\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(n);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\n\n\n\n\nvar promises = {};\nvar errorMessage = 'No ComponentContext has been provided. This should come from \"openmrsComponentDecorator\".\\nUsually this is already applied when using \"getAsyncLifecycle\" or \"getSyncLifecycle\".';\nfunction readInitialConfig(store) {\n return function() {\n var state = store.getState();\n if (state.loaded && state.config) {\n return state.config;\n }\n return null;\n };\n}\nfunction readInitialExtensionConfig(store, extension) {\n if (extension) {\n return function() {\n var state = store.getState();\n var extConfig = (0,_openmrs_esm_config__WEBPACK_IMPORTED_MODULE_1__.getExtensionConfigFromStore)(state, extension.extensionSlotName, extension.extensionId);\n if (extConfig.loaded && extConfig.config) {\n return extConfig.config;\n }\n };\n }\n return null;\n}\nfunction createConfigPromise(store) {\n return new Promise(function(resolve) {\n var unsubscribe = store.subscribe(function(state) {\n if (state.loaded && state.config) {\n resolve(state.config);\n unsubscribe();\n }\n });\n });\n}\nfunction createExtensionConfigPromise(store, extension) {\n return new Promise(function(resolve) {\n var unsubscribe = store.subscribe(function(state) {\n var extConfig = (0,_openmrs_esm_config__WEBPACK_IMPORTED_MODULE_1__.getExtensionConfigFromStore)(state, extension.extensionSlotName, extension.extensionId);\n if (extConfig.loaded && extConfig.config) {\n resolve(extConfig.config);\n unsubscribe();\n }\n });\n });\n}\nfunction useConfigStore(store) {\n var ref = _slicedToArray((0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(readInitialConfig(store)), 2), state = ref[0], setState = ref[1];\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(function() {\n return store === null || store === void 0 ? void 0 : store.subscribe(function(state) {\n if (state.loaded && state.config) {\n setState(state.config);\n }\n });\n }, [\n store\n ]);\n return state;\n}\nfunction useExtensionConfigStore(store, extension) {\n var ref = _slicedToArray((0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(readInitialExtensionConfig(store, extension)), 2), config = ref[0], setConfig = ref[1];\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(function() {\n if (extension) {\n return store.subscribe(function(state) {\n var extConfig = (0,_openmrs_esm_config__WEBPACK_IMPORTED_MODULE_1__.getExtensionConfigFromStore)(state, extension.extensionSlotName, extension.extensionId);\n if (extConfig.loaded && extConfig.config && !(0,lodash_es_isEqual__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(extConfig.config, config)) {\n setConfig(extConfig.config);\n }\n });\n }\n }, [\n store,\n extension,\n config\n ]);\n return config;\n}\nfunction useExtensionConfig(extension) {\n var store = (0,react__WEBPACK_IMPORTED_MODULE_0__.useMemo)(_openmrs_esm_config__WEBPACK_IMPORTED_MODULE_1__.getExtensionsConfigStore, []);\n var state = useExtensionConfigStore(store, extension);\n if (!state && extension) {\n var cacheId = \"\".concat(extension.extensionSlotName, \"-\").concat(extension.extensionId);\n if (!promises[cacheId] && store) {\n promises[cacheId] = createExtensionConfigPromise(store, extension);\n }\n // React will prevent the client component from rendering until the promise resolves\n throw promises[cacheId];\n }\n return state || {};\n}\nfunction useNormalConfig(moduleName) {\n var store = (0,react__WEBPACK_IMPORTED_MODULE_0__.useMemo)(function() {\n return (0,_openmrs_esm_config__WEBPACK_IMPORTED_MODULE_1__.getConfigStore)(moduleName);\n }, [\n moduleName\n ]);\n var cacheId = moduleName;\n var state = useConfigStore(store);\n if (!state) {\n if (!promises[cacheId]) {\n promises[cacheId] = createConfigPromise(store);\n }\n // React will prevent the client component from rendering until the promise resolves\n throw promises[cacheId];\n }\n return state;\n}\n/**\n * Use this React Hook to obtain your module's configuration.\n */ function useConfig() {\n // This hook uses the config of the MF defining the component.\n // If the component is used in an extension slot then the slot\n // may override (part of) its configuration.\n var ref = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(_ComponentContext__WEBPACK_IMPORTED_MODULE_2__.ComponentContext), moduleName = ref.moduleName, extension = ref.extension;\n if (!moduleName && !extension) {\n throw Error(errorMessage);\n }\n var normalConfig = useNormalConfig(moduleName);\n var extensionConfig = useExtensionConfig(extension);\n var config = (0,react__WEBPACK_IMPORTED_MODULE_0__.useMemo)(function() {\n return _objectSpread({}, normalConfig, extensionConfig);\n }, [\n normalConfig,\n extensionConfig\n ]);\n return config;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vZnJhbWV3b3JrL2VzbS1yZWFjdC11dGlscy9zcmMvdXNlQ29uZmlnLnRzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBLDZCQUE2QixHQUM3Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBaUU7QUFRcEM7QUFFVztBQUM2QjtBQUVyRSxJQUFNUyxXQUFrRCxDQUFDO0FBQ3pELElBQU1DLGVBQWdCO0FBR3RCLFNBQVNDLGtCQUFrQkMsS0FBNEIsRUFBRTtJQUN2RCxPQUFPLFdBQU07UUFDWCxJQUFNQyxRQUFRRCxNQUFNRSxRQUFRO1FBRTVCLElBQUlELE1BQU1FLE1BQU0sSUFBSUYsTUFBTUcsTUFBTSxFQUFFO1lBQ2hDLE9BQU9ILE1BQU1HLE1BQU07UUFDckIsQ0FBQztRQUVELE9BQU8sSUFBSTtJQUNiO0FBQ0Y7QUFFQSxTQUFTQywyQkFDUEwsS0FBc0MsRUFDdENNLFNBQW9DLEVBQ3BDO0lBQ0EsSUFBSUEsV0FBVztRQUNiLE9BQU8sV0FBTTtZQUNYLElBQU1MLFFBQVFELE1BQU1FLFFBQVE7WUFDNUIsSUFBTUssWUFBWWIsZ0ZBQTJCQSxDQUMzQ08sT0FDQUssVUFBVUUsaUJBQWlCLEVBQzNCRixVQUFVRyxXQUFXO1lBRXZCLElBQUlGLFVBQVVKLE1BQU0sSUFBSUksVUFBVUgsTUFBTSxFQUFFO2dCQUN4QyxPQUFPRyxVQUFVSCxNQUFNO1lBQ3pCLENBQUM7UUFDSDtJQUNGLENBQUM7SUFDRCxPQUFPLElBQUk7QUFDYjtBQUVBLFNBQVNNLG9CQUFvQlYsS0FBNEIsRUFBRTtJQUN6RCxPQUFPLElBQUlXLFFBQXNCLFNBQUNDLFNBQVk7UUFDNUMsSUFBTUMsY0FBY2IsTUFBTWMsU0FBUyxDQUFDLFNBQUNiLE9BQVU7WUFDN0MsSUFBSUEsTUFBTUUsTUFBTSxJQUFJRixNQUFNRyxNQUFNLEVBQUU7Z0JBQ2hDUSxRQUFRWCxNQUFNRyxNQUFNO2dCQUNw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QUFDO0lBRUQsT0FBT3BCO0FBQ1Q7QUFFQTs7Q0FFQyxHQUNNLFNBQVN1QixZQUVaO0lBQ0YsOERBQThEO0lBQzlELDhEQUE4RDtJQUM5RCw0Q0FBNEM7SUFDNUMsSUFBa0NwQyxNQUFBQSxpREFBVUEsQ0FBQ1EsK0RBQWdCQSxHQUFyRDJCLGFBQTBCbkMsSUFBMUJtQyxZQUFZakIsWUFBY2xCLElBQWRrQjtJQUVwQixJQUFJLENBQUNpQixjQUFjLENBQUNqQixXQUFXO1FBQzdCLE1BQU1tQixNQUFNM0IsY0FBYztJQUM1QixDQUFDO0lBRUQsSUFBTTRCLGVBQWVKLGdCQUFnQkM7SUFDckMsSUFBTUksa0JBQWtCUCxtQkFBbUJkO0lBQzNDLElBQU1GLFNBQVNkLDhDQUFPQSxDQUNwQjtlQUFPLGtCQUNGb0MsY0FDQUM7T0FFTDtRQUFDRDtRQUFjQztLQUFnQjtJQUdqQyxPQUFPdkI7QUFDVCxDQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vQG9wZW5tcnMvZXNtLWFwcC1zaGVsbC8uLi8uLi9mcmFtZXdvcmsvZXNtLXJlYWN0LXV0aWxzL3NyYy91c2VDb25maWcudHM/MWQxZiJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiogQG1vZHVsZSBAY2F0ZWdvcnkgQ29uZmlnICovXG5pbXBvcnQgeyB1c2VDb250ZXh0LCB1c2VFZmZlY3QsIHVzZU1lbW8sIHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQge1xuICBnZXRDb25maWdTdG9yZSxcbiAgZ2V0RXh0ZW5zaW9uc0NvbmZpZ1N0b3JlLFxuICBDb25maWdTdG9yZSxcbiAgQ29uZmlnT2JqZWN0LFxuICBFeHRlbnNpb25zQ29uZmlnU3RvcmUsXG4gIGdldEV4dGVuc2lvbkNvbmZpZ0Zyb21TdG9yZSxcbn0gZnJvbSBcIkBvcGVubXJzL2VzbS1jb25maWdcIjtcbmltcG9ydCB0eXBlIHsgU3RvcmVBcGkgfSBmcm9tIFwienVzdGFuZFwiO1xuaW1wb3J0IGlzRXF1YWwgZnJvbSBcImxvZGFzaC1lcy9pc0VxdWFsXCI7XG5pbXBvcnQgeyBDb21wb25lbnRDb250ZXh0LCBFeHRlbnNpb25EYXRhIH0gZnJvbSBcIi4vQ29tcG9uZW50Q29udGV4dFwiO1xuXG5jb25zdCBwcm9taXNlczogUmVjb3JkPHN0cmluZywgUHJvbWlzZTxDb25maWdPYmplY3Q+PiA9IHt9O1xuY29uc3QgZXJyb3JNZXNzYWdlID0gYE5vIENvbXBvbmVudENvbnRleHQgaGFzIGJlZW4gcHJvdmlkZWQuIFRoaXMgc2hvdWxkIGNvbWUgZnJvbSBcIm9wZW5tcnNDb21wb25lbnREZWNvcmF0b3JcIi5cblVzdWFsbHkgdGhpcyBpcyBhbHJlYWR5IGFwcGxpZWQgd2hlbiB1c2luZyBcImdldEFzeW5jTGlmZWN5Y2xlXCIgb3IgXCJnZXRTeW5jTGlmZWN5Y2xlXCIuYDtcblxuZnVuY3Rpb24gcmVhZEluaXRpYWxDb25maWcoc3RvcmU6IFN0b3JlQXBpPENvbmZpZ1N0b3JlPikge1xuICByZXR1cm4gKCkgPT4ge1xuICAgIGNvbnN0IHN0YXRlID0gc3RvcmUuZ2V0U3RhdGUoKTtcblxuICAgIGlmIChzdGF0ZS5sb2FkZWQgJiYgc3RhdGUuY29uZmlnKSB7XG4gICAgICByZXR1cm4gc3RhdGUuY29uZmlnO1xuICAgIH1cblxuICAgIHJldHVybiBudWxsO1xuICB9O1xufVxuXG5mdW5jdGlvbiByZWFkSW5pdGlhbEV4dGVuc2lvbkNvbmZpZyhcbiAgc3RvcmU6IFN0b3JlQXBpPEV4dGVuc2lvbnNDb25maWdTdG9yZT4sXG4gIGV4dGVuc2lvbjogRXh0ZW5zaW9uRGF0YSB8IHVuZGVmaW5lZFxuKSB7XG4gIGlmIChleHRlbnNpb24pIHtcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgY29uc3Qgc3RhdGUgPSBzdG9yZS5nZXRTdGF0ZSgpO1xuICAgICAgY29uc3QgZXh0Q29uZmlnID0gZ2V0RXh0ZW5zaW9uQ29uZmlnRnJvbVN0b3JlKFxuICAgICAgICBzdGF0ZSxcbiAgICAgICAgZXh0ZW5zaW9uLmV4dGVuc2lvblNsb3ROYW1lLFxuICAgICAgICBleHRlbnNpb24uZXh0ZW5zaW9uSWRcbiAgICAgICk7XG4gICAgICBpZiAoZXh0Q29uZmlnLmxvYWRlZCAmJiBleHRDb25maWcuY29uZmlnKSB7XG4gICAgICAgIHJldHVybiBleHRDb25maWcuY29uZmlnO1xuICAgICAgfVxuICAgIH07XG4gIH1cbiAgcmV0dXJuIG51bGw7XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZUNvbmZpZ1Byb21pc2Uoc3RvcmU6IFN0b3JlQXBpPENvbmZpZ1N0b3JlPikge1xuICByZXR1cm4gbmV3IFByb21pc2U8Q29uZmlnT2JqZWN0PigocmVzb2x2ZSkgPT4ge1xuICAgIGNvbnN0IHVuc3Vic2NyaWJlID0gc3RvcmUuc3Vic2NyaWJlKChzdGF0ZSkgPT4ge1xuICAgICAgaWYgKHN0YXRlLmxvYWRlZCAmJiBzdGF0ZS5jb25maWcpIHtcbiAgICAgICAgcmVzb2x2ZShzdGF0ZS5jb25maWcpO1xuICAgICAgICB1bnN1YnNjcmliZSgpO1xuICAgICAgfVxuICAgIH0pO1xuICB9KTtcbn1cblxuZnVuY3Rpb24gY3JlYXRlRXh0ZW5zaW9uQ29uZmlnUHJvbWlzZShcbiAgc3RvcmU6IFN0b3JlQXBpPEV4dGVuc2lvbnNDb25maWdTdG9yZT4sXG4gIGV4dGVuc2lvbjogRXh0ZW5zaW9uRGF0YVxuKSB7XG4gIHJldHVybiBuZXcgUHJvbWlzZTxDb25maWdPYmplY3Q+KChyZXNvbHZlKSA9PiB7XG4gICAgY29uc3QgdW5zdWJzY3JpYmUgPSBzdG9yZS5zdWJzY3JpYmUoKHN0YXRlKSA9PiB7XG4gICAgICBjb25zdCBleHRDb25maWcgPSBnZXRFeHRlbnNpb25Db25maWdGcm9tU3RvcmUoXG4gICAgICAgIHN0YXRlLFxuICAgICAgICBleHRlbnNpb24uZXh0ZW5zaW9uU2xvdE5hbWUsXG4gICAgICAgIGV4dGVuc2lvbi5leHRlbnNpb25JZFxuICAgICAgKTtcbiAgICAgIGlmIChleHRDb25maWcubG9hZGVkICYmIGV4dENvbmZpZy5jb25maWcpIHtcbiAgICAgICAgcmVzb2x2ZShleHRDb25maWcuY29uZmlnKTtcbiAgICAgICAgdW5zdWJzY3JpYmUoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIHVzZUNvbmZpZ1N0b3JlKHN0b3JlOiBTdG9yZUFwaTxDb25maWdTdG9yZT4pIHtcbiAgY29uc3QgW3N0YXRlLCBzZXRTdGF0ZV0gPSB1c2VTdGF0ZShyZWFkSW5pdGlhbENvbmZpZyhzdG9yZSkpO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgcmV0dXJuIHN0b3JlPy5zdWJzY3JpYmUoKHN0YXRlKSA9PiB7XG4gICAgICBpZiAoc3RhdGUubG9hZGVkICYmIHN0YXRlLmNvbmZpZykge1xuICAgICAgICBzZXRTdGF0ZShzdGF0ZS5jb25maWcpO1xuICAgICAgfVxuICAgIH0pO1xuICB9LCBbc3RvcmVdKTtcblxuICByZXR1cm4gc3RhdGU7XG59XG5cbmZ1bmN0aW9uIHVzZUV4dGVuc2lvbkNvbmZpZ1N0b3JlKFxuICBzdG9yZTogU3RvcmVBcGk8RXh0ZW5zaW9uc0NvbmZpZ1N0b3JlPixcbiAgZXh0ZW5zaW9uOiBFeHRlbnNpb25EYXRhIHwgdW5kZWZpbmVkXG4pIHtcbiAgY29uc3QgW2NvbmZpZywgc2V0Q29uZmlnXSA9IHVzZVN0YXRlPENvbmZpZ09iamVjdCB8IG51bGw+KFxuICAgIHJlYWRJbml0aWFsRXh0ZW5zaW9uQ29uZmlnKHN0b3JlLCBleHRlbnNpb24pXG4gICk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoZXh0ZW5zaW9uKSB7XG4gICAgICByZXR1cm4gc3RvcmUuc3Vic2NyaWJlKChzdGF0ZSkgPT4ge1xuICAgICAgICBjb25zdCBleHRDb25maWcgPSBnZXRFeHRlbnNpb25Db25maWdGcm9tU3RvcmUoXG4gICAgICAgICAgc3RhdGUsXG4gICAgICAgICAgZXh0ZW5zaW9uLmV4dGVuc2lvblNsb3ROYW1lLFxuICAgICAgICAgIGV4dGVuc2lvbi5leHRlbnNpb25JZFxuICAgICAgICApO1xuICAgICAgICBpZiAoXG4gICAgICAgICAgZXh0Q29uZmlnLmxvYWRlZCAmJlxuICAgICAgICAgIGV4dENvbmZpZy5jb25maWcgJiZcbiAgICAgICAgICAhaXNFcXVhbChleHRDb25maWcuY29uZmlnLCBjb25maWcpXG4gICAgICAgICkge1xuICAgICAgICAgIHNldENvbmZpZyhleHRDb25maWcuY29uZmlnKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9LCBbc3RvcmUsIGV4dGVuc2lvbiwgY29uZmlnXSk7XG5cbiAgcmV0dXJuIGNvbmZpZztcbn1cblxuZnVuY3Rpb24gdXNlRXh0ZW5zaW9uQ29uZmlnKGV4dGVuc2lvbjogRXh0ZW5zaW9uRGF0YSB8IHVuZGVmaW5lZCkge1xuICBjb25zdCBzdG9yZSA9IHVzZU1lbW8oZ2V0RXh0ZW5zaW9uc0NvbmZpZ1N0b3JlLCBbXSk7XG4gIGNvbnN0IHN0YXRlID0gdXNlRXh0ZW5zaW9uQ29uZmlnU3RvcmUoc3RvcmUsIGV4dGVuc2lvbik7XG5cbiAgaWYgKCFzdGF0ZSAmJiBleHRlbnNpb24pIHtcbiAgICBjb25zdCBjYWNoZUlkID0gYCR7ZXh0ZW5zaW9uLmV4dGVuc2lvblNsb3ROYW1lfS0ke2V4dGVuc2lvbi5leHRlbnNpb25JZH1gO1xuXG4gICAgaWYgKCFwcm9taXNlc1tjYWNoZUlkXSAmJiBzdG9yZSkge1xuICAgICAgcHJvbWlzZXNbY2FjaGVJZF0gPSBjcmVhdGVFeHRlbnNpb25Db25maWdQcm9taXNlKHN0b3JlLCBleHRlbnNpb24pO1xuICAgIH1cblxuICAgIC8vIFJlYWN0IHdpbGwgcHJldmVudCB0aGUgY2xpZW50IGNvbXBvbmVudCBmcm9tIHJlbmRlcmluZyB1bnRpbCB0aGUgcHJvbWlzZSByZXNvbHZlc1xuICAgIHRocm93IHByb21pc2VzW2NhY2hlSWRdO1xuICB9XG5cbiAgcmV0dXJuIHN0YXRlIHx8IHt9O1xufVxuXG5mdW5jdGlvbiB1c2VOb3JtYWxDb25maWcobW9kdWxlTmFtZTogc3RyaW5nKSB7XG4gIGNvbnN0IHN0b3JlID0gdXNlTWVtbygoKSA9PiBnZXRDb25maWdTdG9yZShtb2R1bGVOYW1lKSwgW21vZHVsZU5hbWVdKTtcbiAgY29uc3QgY2FjaGVJZCA9IG1vZHVsZU5hbWU7XG4gIGNvbnN0IHN0YXRlID0gdXNlQ29uZmlnU3RvcmUoc3RvcmUpO1xuXG4gIGlmICghc3RhdGUpIHtcbiAgICBpZiAoIXByb21pc2VzW2NhY2hlSWRdKSB7XG4gICAgICBwcm9taXNlc1tjYWNoZUlkXSA9IGNyZWF0ZUNvbmZpZ1Byb21pc2Uoc3RvcmUpO1xuICAgIH1cblxuICAgIC8vIFJlYWN0IHdpbGwgcHJldmVudCB0aGUgY2xpZW50IGNvbXBvbmVudCBmcm9tIHJlbmRlcmluZyB1bnRpbCB0aGUgcHJvbWlzZSByZXNvbHZlc1xuICAgIHRocm93IHByb21pc2VzW2NhY2hlSWRdO1xuICB9XG5cbiAgcmV0dXJuIHN0YXRlO1xufVxuXG4vKipcbiAqIFVzZSB0aGlzIFJlYWN0IEhvb2sgdG8gb2J0YWluIHlvdXIgbW9kdWxlJ3MgY29uZmlndXJhdGlvbi5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVzZUNvbmZpZzxcbiAgVCA9IE9taXQ8Q29uZmlnT2JqZWN0LCBcIkRpc3BsYXkgY29uZGl0aW9uc1wiIHwgXCJUcmFuc2xhdGlvbiBvdmVycmlkZXNcIj5cbj4oKSB7XG4gIC8vIFRoaXMgaG9vayB1c2VzIHRoZSBjb25maWcgb2YgdGhlIE1GIGRlZmluaW5nIHRoZSBjb21wb25lbnQuXG4gIC8vIElmIHRoZSBjb21wb25lbnQgaXMgdXNlZCBpbiBhbiBleHRlbnNpb24gc2xvdCB0aGVuIHRoZSBzbG90XG4gIC8vIG1heSBvdmVycmlkZSAocGFydCBvZikgaXRzIGNvbmZpZ3VyYXRpb24uXG4gIGNvbnN0IHsgbW9kdWxlTmFtZSwgZXh0ZW5zaW9uIH0gPSB1c2VDb250ZXh0KENvbXBvbmVudENvbnRleHQpO1xuXG4gIGlmICghbW9kdWxlTmFtZSAmJiAhZXh0ZW5zaW9uKSB7XG4gICAgdGhyb3cgRXJyb3IoZXJyb3JNZXNzYWdlKTtcbiAgfVxuXG4gIGNvbnN0IG5vcm1hbENvbmZpZyA9IHVzZU5vcm1hbENvbmZpZyhtb2R1bGVOYW1lKTtcbiAgY29uc3QgZXh0ZW5zaW9uQ29uZmlnID0gdXNlRXh0ZW5zaW9uQ29uZmlnKGV4dGVuc2lvbik7XG4gIGNvbnN0IGNvbmZpZyA9IHVzZU1lbW8oXG4gICAgKCkgPT4gKHtcbiAgICAgIC4uLm5vcm1hbENvbmZpZyxcbiAgICAgIC4uLmV4dGVuc2lvbkNvbmZpZyxcbiAgICB9KSxcbiAgICBbbm9ybWFsQ29uZmlnLCBleHRlbnNpb25Db25maWddXG4gICk7XG5cbiAgcmV0dXJuIGNvbmZpZyBhcyBUO1xufVxuIl0sIm5hbWVzIjpbInVzZUNvbnRleHQiLCJ1c2VFZmZlY3QiLCJ1c2VNZW1vIiwidXNlU3RhdGUiLCJnZXRDb25maWdTdG9yZSIsImdldEV4dGVuc2lvbnNDb25maWdTdG9yZSIsImdldEV4dGVuc2lvbkNvbmZpZ0Zyb21TdG9yZSIsImlzRXF1YWwiLCJDb21wb25lbnRDb250ZXh0IiwicHJvbWlzZXMiLCJlcnJvck1lc3NhZ2UiLCJyZWFkSW5pdGlhbENvbmZpZyIsInN0b3JlIiwic3RhdGUiLCJnZXRTdGF0ZSIsImxvYWRlZCIsImNvbmZpZyIsInJlYWRJbml0aWFsRXh0ZW5zaW9uQ29uZmlnIiwiZXh0ZW5zaW9uIiwiZXh0Q29uZmlnIiwiZXh0ZW5zaW9uU2xvdE5hbWUiLCJleHRlbnNpb25JZCIsImNyZWF0ZUNvbmZpZ1Byb21pc2UiLCJQcm9taXNlIiwicmVzb2x2ZSIsInVuc3Vic2NyaWJlIiwic3Vic2NyaWJlIiwiY3JlYXRlRXh0ZW5zaW9uQ29uZmlnUHJvbWlzZSIsInVzZUNvbmZpZ1N0b3JlIiwic2V0U3RhdGUiLCJ1c2VFeHRlbnNpb25Db25maWdTdG9yZSIsInNldENvbmZpZyIsInVzZUV4dGVuc2lvbkNvbmZpZyIsImNhY2hlSWQiLCJ1c2VOb3JtYWxDb25maWciLCJtb2R1bGVOYW1lIiwidXNlQ29uZmlnIiwiRXJyb3IiLCJub3JtYWxDb25maWciLCJleHRlbnNpb25Db25maWciXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../framework/esm-react-utils/src/useConfig.ts\n");
7185
7174
 
7186
7175
  /***/ }),
7187
7176
 
@@ -7335,7 +7324,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
7335
7324
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
7336
7325
 
7337
7326
  "use strict";
7338
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"useStore\": () => (/* binding */ useStore),\n/* harmony export */ \"useStoreWithActions\": () => (/* binding */ useStoreWithActions)\n/* harmony export */ });\n/* harmony import */ var _openmrs_esm_state__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @openmrs/esm-state */ \"../../framework/esm-state/src/index.ts\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"webpack/sharing/consume/default/react/react\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/** @module @category Store */ function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];\n return arr2;\n}\nfunction _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nfunction _iterableToArrayLimit(arr, i) {\n var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"];\n if (_i == null) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n var _s, _e;\n try {\n for(_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true){\n _arr.push(_s.value);\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally{\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally{\n if (_d) throw _e;\n }\n }\n return _arr;\n}\nfunction _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nfunction _objectSpread(target) {\n for(var i = 1; i < arguments.length; i++){\n var source = arguments[i] != null ? arguments[i] : {};\n var ownKeys = Object.keys(source);\n if (typeof Object.getOwnPropertySymbols === \"function\") {\n ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {\n return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n }));\n }\n ownKeys.forEach(function(key) {\n _defineProperty(target, key, source[key]);\n });\n }\n return target;\n}\nfunction _slicedToArray(arr, i) {\n return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();\n}\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(n);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\n\n\nfunction bindActions(store, actions) {\n if (typeof actions == \"function\") {\n actions = actions(store);\n }\n var bound = {};\n for(var i in actions){\n bound[i] = store.action(actions[i]);\n }\n return bound;\n}\nvar defaultSelectFunction = function(x) {\n return x;\n};\nfunction useStore(store) {\n var select = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : defaultSelectFunction, actions = arguments.length > 2 ? arguments[2] : void 0;\n var ref = _slicedToArray((0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(function() {\n return select(store.getState());\n }), 2), state = ref[0], setState = ref[1];\n (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(function() {\n return (0,_openmrs_esm_state__WEBPACK_IMPORTED_MODULE_0__.subscribeTo)(store, select, setState);\n }, [\n store,\n select\n ]);\n var boundActions = {};\n if (actions) {\n boundActions = (0,react__WEBPACK_IMPORTED_MODULE_1__.useMemo)(function() {\n return bindActions(store, actions);\n }, [\n store,\n actions\n ]);\n }\n return _objectSpread({}, state, boundActions);\n}\nfunction useStoreWithActions(store, actions) {\n return useStore(store, defaultSelectFunction, actions);\n}\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vZnJhbWV3b3JrL2VzbS1yZWFjdC11dGlscy9zcmMvdXNlU3RvcmUudHMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQSw0QkFBNEIsR0FDNUI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQWlEO0FBQ0k7QUFJckQsU0FBU0ksWUFBZUMsS0FBZSxFQUFFQyxPQUFnQixFQUFFO0lBQ3pELElBQUksT0FBT0EsV0FBVyxZQUFZO1FBQ2hDQSxVQUFVQSxRQUFRRDtJQUNwQixDQUFDO0lBRUQsSUFBTUUsUUFBUSxDQUFDO0lBRWYsSUFBSyxJQUFJQyxLQUFLRixRQUFTO1FBQ3JCQyxLQUFLLENBQUNDLEVBQUUsR0FBR0gsTUFBTUksTUFBTSxDQUFDSCxPQUFPLENBQUNFLEVBQUU7SUFDcEM7SUFFQSxPQUFPRDtBQUNUO0FBRUEsSUFBTUcsd0JBQXdCLFNBQUNDO1dBQU1BOztBQWNyQyxTQUFTQyxTQUNQUCxLQUFlLEVBR2Y7UUFGQVEsU0FBQUEsaUVBQTBCSCxxQkFBcUIsRUFDL0NKO0lBRUEsSUFBMEJILHFCQUFBQSwrQ0FBUUEsQ0FBSTtlQUFNVSxPQUFPUixNQUFNUyxRQUFRO1lBQTFEQyxRQUFtQlosUUFBWmEsV0FBWWI7SUFDMUJGLGdEQUFTQSxDQUFDO2VBQU1ELCtEQUFXQSxDQUFDSyxPQUFPUSxRQUFRRztPQUFXO1FBQUNYO1FBQU9RO0tBQU87SUFFckUsSUFBSUksZUFBNkIsQ0FBQztJQUVsQyxJQUFJWCxTQUFTO1FBQ1hXLGVBQWVmLDhDQUFPQSxDQUFDO21CQUFNRSxZQUFZQyxPQUFPQztXQUFVO1lBQUNEO1lBQU9DO1NBQVE7SUFDNUUsQ0FBQztJQUVELE9BQU8sa0JBQUtTLE9BQVVFO0FBQ3hCO0FBRUEsU0FBU0Msb0JBQ1BiLEtBQWUsRUFDZkMsT0FBZ0IsRUFDRTtJQUNsQixPQUFPTSxTQUFTUCxPQUFPSyx1QkFBdUJKO0FBQ2hEO0FBRXlDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vQG9wZW5tcnMvZXNtLWFwcC1zaGVsbC8uLi8uLi9mcmFtZXdvcmsvZXNtLXJlYWN0LXV0aWxzL3NyYy91c2VTdG9yZS50cz85NjQ0Il0sInNvdXJjZXNDb250ZW50IjpbIi8qKiBAbW9kdWxlIEBjYXRlZ29yeSBTdG9yZSAqL1xuaW1wb3J0IHsgc3Vic2NyaWJlVG8gfSBmcm9tIFwiQG9wZW5tcnMvZXNtLXN0YXRlXCI7XG5pbXBvcnQgeyB1c2VFZmZlY3QsIHVzZU1lbW8sIHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyBTdG9yZSB9IGZyb20gXCJ1bmlzdG9yZVwiO1xuaW1wb3J0IHsgQWN0aW9ucywgQm91bmRBY3Rpb25zIH0gZnJvbSBcIi4vY3JlYXRlVXNlU3RvcmVcIjtcblxuZnVuY3Rpb24gYmluZEFjdGlvbnM8VD4oc3RvcmU6IFN0b3JlPFQ+LCBhY3Rpb25zOiBBY3Rpb25zKSB7XG4gIGlmICh0eXBlb2YgYWN0aW9ucyA9PSBcImZ1bmN0aW9uXCIpIHtcbiAgICBhY3Rpb25zID0gYWN0aW9ucyhzdG9yZSk7XG4gIH1cblxuICBjb25zdCBib3VuZCA9IHt9O1xuXG4gIGZvciAobGV0IGkgaW4gYWN0aW9ucykge1xuICAgIGJvdW5kW2ldID0gc3RvcmUuYWN0aW9uKGFjdGlvbnNbaV0pO1xuICB9XG5cbiAgcmV0dXJuIGJvdW5kO1xufVxuXG5jb25zdCBkZWZhdWx0U2VsZWN0RnVuY3Rpb24gPSAoeCkgPT4geDtcblxuZnVuY3Rpb24gdXNlU3RvcmU8VCwgVT4oc3RvcmU6IFN0b3JlPFQ+KTogVDtcbmZ1bmN0aW9uIHVzZVN0b3JlPFQsIFU+KHN0b3JlOiBTdG9yZTxUPiwgc2VsZWN0OiAoc3RhdGU6IFQpID0+IFUpOiBVO1xuZnVuY3Rpb24gdXNlU3RvcmU8VCwgVT4oXG4gIHN0b3JlOiBTdG9yZTxUPixcbiAgc2VsZWN0OiB1bmRlZmluZWQsXG4gIGFjdGlvbnM6IEFjdGlvbnNcbik6IFQgJiBCb3VuZEFjdGlvbnM7XG5mdW5jdGlvbiB1c2VTdG9yZTxULCBVPihcbiAgc3RvcmU6IFN0b3JlPFQ+LFxuICBzZWxlY3Q6IChzdGF0ZTogVCkgPT4gVSxcbiAgYWN0aW9uczogQWN0aW9uc1xuKTogVSAmIEJvdW5kQWN0aW9ucztcbmZ1bmN0aW9uIHVzZVN0b3JlPFQsIFU+KFxuICBzdG9yZTogU3RvcmU8VD4sXG4gIHNlbGVjdDogKHN0YXRlOiBUKSA9PiBVID0gZGVmYXVsdFNlbGVjdEZ1bmN0aW9uLFxuICBhY3Rpb25zPzogQWN0aW9uc1xuKSB7XG4gIGNvbnN0IFtzdGF0ZSwgc2V0U3RhdGVdID0gdXNlU3RhdGU8VT4oKCkgPT4gc2VsZWN0KHN0b3JlLmdldFN0YXRlKCkpKTtcbiAgdXNlRWZmZWN0KCgpID0+IHN1YnNjcmliZVRvKHN0b3JlLCBzZWxlY3QsIHNldFN0YXRlKSwgW3N0b3JlLCBzZWxlY3RdKTtcblxuICBsZXQgYm91bmRBY3Rpb25zOiBCb3VuZEFjdGlvbnMgPSB7fTtcblxuICBpZiAoYWN0aW9ucykge1xuICAgIGJvdW5kQWN0aW9ucyA9IHVzZU1lbW8oKCkgPT4gYmluZEFjdGlvbnMoc3RvcmUsIGFjdGlvbnMpLCBbc3RvcmUsIGFjdGlvbnNdKTtcbiAgfVxuXG4gIHJldHVybiB7IC4uLnN0YXRlLCAuLi5ib3VuZEFjdGlvbnMgfTtcbn1cblxuZnVuY3Rpb24gdXNlU3RvcmVXaXRoQWN0aW9uczxUPihcbiAgc3RvcmU6IFN0b3JlPFQ+LFxuICBhY3Rpb25zOiBBY3Rpb25zXG4pOiBUICYgQm91bmRBY3Rpb25zIHtcbiAgcmV0dXJuIHVzZVN0b3JlKHN0b3JlLCBkZWZhdWx0U2VsZWN0RnVuY3Rpb24sIGFjdGlvbnMpO1xufVxuXG5leHBvcnQgeyB1c2VTdG9yZSwgdXNlU3RvcmVXaXRoQWN0aW9ucyB9O1xuIl0sIm5hbWVzIjpbInN1YnNjcmliZVRvIiwidXNlRWZmZWN0IiwidXNlTWVtbyIsInVzZVN0YXRlIiwiYmluZEFjdGlvbnMiLCJzdG9yZSIsImFjdGlvbnMiLCJib3VuZCIsImkiLCJhY3Rpb24iLCJkZWZhdWx0U2VsZWN0RnVuY3Rpb24iLCJ4IiwidXNlU3RvcmUiLCJzZWxlY3QiLCJnZXRTdGF0ZSIsInN0YXRlIiwic2V0U3RhdGUiLCJib3VuZEFjdGlvbnMiLCJ1c2VTdG9yZVdpdGhBY3Rpb25zIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../framework/esm-react-utils/src/useStore.ts\n");
7327
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"useStore\": () => (/* binding */ useStore),\n/* harmony export */ \"useStoreWithActions\": () => (/* binding */ useStoreWithActions)\n/* harmony export */ });\n/* harmony import */ var _openmrs_esm_state__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @openmrs/esm-state */ \"../../framework/esm-state/src/index.ts\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"webpack/sharing/consume/default/react/react\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/** @module @category Store */ function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];\n return arr2;\n}\nfunction _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nfunction _iterableToArrayLimit(arr, i) {\n var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"];\n if (_i == null) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n var _s, _e;\n try {\n for(_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true){\n _arr.push(_s.value);\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally{\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally{\n if (_d) throw _e;\n }\n }\n return _arr;\n}\nfunction _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nfunction _objectSpread(target) {\n for(var i = 1; i < arguments.length; i++){\n var source = arguments[i] != null ? arguments[i] : {};\n var ownKeys = Object.keys(source);\n if (typeof Object.getOwnPropertySymbols === \"function\") {\n ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {\n return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n }));\n }\n ownKeys.forEach(function(key) {\n _defineProperty(target, key, source[key]);\n });\n }\n return target;\n}\nfunction _slicedToArray(arr, i) {\n return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();\n}\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(n);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\n\n\nfunction bindActions(store, actions) {\n var _loop = function(i) {\n bound[i] = function() {\n var args = _arguments;\n store.setState(function(state) {\n var _args = [\n state\n ];\n for(var i1 = 0; i1 < args.length; i1++){\n _args.push(args[i1]);\n }\n return actions[i](_args);\n });\n };\n };\n var _arguments = arguments;\n if (typeof actions == \"function\") {\n actions = actions(store);\n }\n var bound = {};\n for(var i in actions)_loop(i);\n return bound;\n}\nvar defaultSelectFunction = function(x) {\n return x;\n};\nfunction useStore(store) {\n var select = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : defaultSelectFunction, actions = arguments.length > 2 ? arguments[2] : void 0;\n var ref = _slicedToArray((0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(function() {\n return select(store.getState());\n }), 2), state = ref[0], setState = ref[1];\n (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(function() {\n return (0,_openmrs_esm_state__WEBPACK_IMPORTED_MODULE_0__.subscribeTo)(store, select, setState);\n }, [\n store,\n select\n ]);\n var boundActions = (0,react__WEBPACK_IMPORTED_MODULE_1__.useMemo)(function() {\n return actions ? bindActions(store, actions) : {};\n }, [\n store,\n actions\n ]);\n return _objectSpread({}, state, boundActions);\n}\nfunction useStoreWithActions(store, actions) {\n return useStore(store, defaultSelectFunction, actions);\n}\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vZnJhbWV3b3JrL2VzbS1yZWFjdC11dGlscy9zcmMvdXNlU3RvcmUudHMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQSw0QkFBNEIsR0FDNUI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQWlEO0FBQ0k7QUFJckQsU0FBU0ksWUFBZUMsS0FBa0IsRUFBRUMsT0FBZ0IsRUFBZ0I7NEJBT25EO1FBQ3JCQyxLQUFLLENBQUNDLEVBQUUsR0FBRyxXQUFNO1lBQ2YsSUFBTUM7WUFDTkosTUFBTUssUUFBUSxDQUFDLFNBQUNDLE9BQVU7Z0JBQ3hCLElBQUlDLFFBQVE7b0JBQUNEO2lCQUFNO2dCQUNuQixJQUFLLElBQUlILEtBQUksR0FBR0EsS0FBSUMsS0FBS0ksTUFBTSxFQUFFTCxLQUFLO29CQUNwQ0ksTUFBTUUsSUFBSSxDQUFDTCxJQUFJLENBQUNELEdBQUU7Z0JBQ3BCO2dCQUVBLE9BQU9GLE9BQU8sQ0FBQ0UsRUFBRSxDQUFDSTtZQUNwQjtRQUNGO0lBQ0Y7O0lBbEJBLElBQUksT0FBT04sV0FBVyxZQUFZO1FBQ2hDQSxVQUFVQSxRQUFRRDtJQUNwQixDQUFDO0lBRUQsSUFBTUUsUUFBUSxDQUFDO0lBRWYsSUFBSyxJQUFJQyxLQUFLRjtJQWNkLE9BQU9DO0FBQ1Q7QUFFQSxJQUFNUSx3QkFBd0IsU0FBQ0M7V0FBTUE7O0FBY3JDLFNBQVNDLFNBQ1BaLEtBQWtCLEVBR2xCO1FBRkFhLFNBQUFBLGlFQUEwQkgscUJBQXFCLEVBQy9DVDtJQUVBLElBQTBCSCxxQkFBQUEsK0NBQVFBLENBQUk7ZUFBTWUsT0FBT2IsTUFBTWMsUUFBUTtZQUExRFIsUUFBbUJSLFFBQVpPLFdBQVlQO0lBQzFCRixnREFBU0EsQ0FBQztlQUFNRCwrREFBV0EsQ0FBQ0ssT0FBT2EsUUFBUVI7T0FBVztRQUFDTDtRQUFPYTtLQUFPO0lBRXJFLElBQUlFLGVBQTZCbEIsOENBQU9BLENBQ3RDO2VBQU9JLFVBQVVGLFlBQVlDLE9BQU9DLFdBQVcsQ0FBQyxDQUFDO09BQ2pEO1FBQUNEO1FBQU9DO0tBQVE7SUFHbEIsT0FBTyxrQkFBS0ssT0FBVVM7QUFDeEI7QUFFQSxTQUFTQyxvQkFDUGhCLEtBQWtCLEVBQ2xCQyxPQUFnQixFQUNFO0lBQ2xCLE9BQU9XLFNBQVNaLE9BQU9VLHVCQUF1QlQ7QUFDaEQ7QUFFeUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Ab3Blbm1ycy9lc20tYXBwLXNoZWxsLy4uLy4uL2ZyYW1ld29yay9lc20tcmVhY3QtdXRpbHMvc3JjL3VzZVN0b3JlLnRzPzk2NDQiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqIEBtb2R1bGUgQGNhdGVnb3J5IFN0b3JlICovXG5pbXBvcnQgeyBzdWJzY3JpYmVUbyB9IGZyb20gXCJAb3Blbm1ycy9lc20tc3RhdGVcIjtcbmltcG9ydCB7IHVzZUVmZmVjdCwgdXNlTWVtbywgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB0eXBlIHsgU3RvcmVBcGkgfSBmcm9tIFwienVzdGFuZFwiO1xuaW1wb3J0IHR5cGUgeyBBY3Rpb25zLCBCb3VuZEFjdGlvbnMgfSBmcm9tIFwiLi9jcmVhdGVVc2VTdG9yZVwiO1xuXG5mdW5jdGlvbiBiaW5kQWN0aW9uczxUPihzdG9yZTogU3RvcmVBcGk8VD4sIGFjdGlvbnM6IEFjdGlvbnMpOiBCb3VuZEFjdGlvbnMge1xuICBpZiAodHlwZW9mIGFjdGlvbnMgPT0gXCJmdW5jdGlvblwiKSB7XG4gICAgYWN0aW9ucyA9IGFjdGlvbnMoc3RvcmUpO1xuICB9XG5cbiAgY29uc3QgYm91bmQgPSB7fTtcblxuICBmb3IgKGxldCBpIGluIGFjdGlvbnMpIHtcbiAgICBib3VuZFtpXSA9ICgpID0+IHtcbiAgICAgIGNvbnN0IGFyZ3MgPSBhcmd1bWVudHM7XG4gICAgICBzdG9yZS5zZXRTdGF0ZSgoc3RhdGUpID0+IHtcbiAgICAgICAgbGV0IF9hcmdzID0gW3N0YXRlXTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhcmdzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgX2FyZ3MucHVzaChhcmdzW2ldKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBhY3Rpb25zW2ldKF9hcmdzKTtcbiAgICAgIH0pO1xuICAgIH07XG4gIH1cblxuICByZXR1cm4gYm91bmQ7XG59XG5cbmNvbnN0IGRlZmF1bHRTZWxlY3RGdW5jdGlvbiA9ICh4KSA9PiB4O1xuXG5mdW5jdGlvbiB1c2VTdG9yZTxULCBVPihzdG9yZTogU3RvcmVBcGk8VD4pOiBUO1xuZnVuY3Rpb24gdXNlU3RvcmU8VCwgVT4oc3RvcmU6IFN0b3JlQXBpPFQ+LCBzZWxlY3Q6IChzdGF0ZTogVCkgPT4gVSk6IFU7XG5mdW5jdGlvbiB1c2VTdG9yZTxULCBVPihcbiAgc3RvcmU6IFN0b3JlQXBpPFQ+LFxuICBzZWxlY3Q6IHVuZGVmaW5lZCxcbiAgYWN0aW9uczogQWN0aW9uc1xuKTogVCAmIEJvdW5kQWN0aW9ucztcbmZ1bmN0aW9uIHVzZVN0b3JlPFQsIFU+KFxuICBzdG9yZTogU3RvcmVBcGk8VD4sXG4gIHNlbGVjdDogKHN0YXRlOiBUKSA9PiBVLFxuICBhY3Rpb25zOiBBY3Rpb25zXG4pOiBVICYgQm91bmRBY3Rpb25zO1xuZnVuY3Rpb24gdXNlU3RvcmU8VCwgVT4oXG4gIHN0b3JlOiBTdG9yZUFwaTxUPixcbiAgc2VsZWN0OiAoc3RhdGU6IFQpID0+IFUgPSBkZWZhdWx0U2VsZWN0RnVuY3Rpb24sXG4gIGFjdGlvbnM/OiBBY3Rpb25zXG4pIHtcbiAgY29uc3QgW3N0YXRlLCBzZXRTdGF0ZV0gPSB1c2VTdGF0ZTxVPigoKSA9PiBzZWxlY3Qoc3RvcmUuZ2V0U3RhdGUoKSkpO1xuICB1c2VFZmZlY3QoKCkgPT4gc3Vic2NyaWJlVG8oc3RvcmUsIHNlbGVjdCwgc2V0U3RhdGUpLCBbc3RvcmUsIHNlbGVjdF0pO1xuXG4gIGxldCBib3VuZEFjdGlvbnM6IEJvdW5kQWN0aW9ucyA9IHVzZU1lbW8oXG4gICAgKCkgPT4gKGFjdGlvbnMgPyBiaW5kQWN0aW9ucyhzdG9yZSwgYWN0aW9ucykgOiB7fSksXG4gICAgW3N0b3JlLCBhY3Rpb25zXVxuICApO1xuXG4gIHJldHVybiB7IC4uLnN0YXRlLCAuLi5ib3VuZEFjdGlvbnMgfTtcbn1cblxuZnVuY3Rpb24gdXNlU3RvcmVXaXRoQWN0aW9uczxUPihcbiAgc3RvcmU6IFN0b3JlQXBpPFQ+LFxuICBhY3Rpb25zOiBBY3Rpb25zXG4pOiBUICYgQm91bmRBY3Rpb25zIHtcbiAgcmV0dXJuIHVzZVN0b3JlKHN0b3JlLCBkZWZhdWx0U2VsZWN0RnVuY3Rpb24sIGFjdGlvbnMpO1xufVxuXG5leHBvcnQgeyB1c2VTdG9yZSwgdXNlU3RvcmVXaXRoQWN0aW9ucyB9O1xuIl0sIm5hbWVzIjpbInN1YnNjcmliZVRvIiwidXNlRWZmZWN0IiwidXNlTWVtbyIsInVzZVN0YXRlIiwiYmluZEFjdGlvbnMiLCJzdG9yZSIsImFjdGlvbnMiLCJib3VuZCIsImkiLCJhcmdzIiwic2V0U3RhdGUiLCJzdGF0ZSIsIl9hcmdzIiwibGVuZ3RoIiwicHVzaCIsImRlZmF1bHRTZWxlY3RGdW5jdGlvbiIsIngiLCJ1c2VTdG9yZSIsInNlbGVjdCIsImdldFN0YXRlIiwiYm91bmRBY3Rpb25zIiwidXNlU3RvcmVXaXRoQWN0aW9ucyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../framework/esm-react-utils/src/useStore.ts\n");
7339
7328
 
7340
7329
  /***/ }),
7341
7330
 
@@ -7390,7 +7379,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
7390
7379
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
7391
7380
 
7392
7381
  "use strict";
7393
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"createAppState\": () => (/* binding */ createAppState),\n/* harmony export */ \"createGlobalStore\": () => (/* binding */ createGlobalStore),\n/* harmony export */ \"getAppState\": () => (/* binding */ getAppState),\n/* harmony export */ \"getGlobalStore\": () => (/* binding */ getGlobalStore),\n/* harmony export */ \"subscribeTo\": () => (/* binding */ subscribeTo)\n/* harmony export */ });\n/* harmony import */ var unistore__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! unistore */ \"../../../node_modules/unistore/dist/unistore.es.js\");\n/** @module @category Store */ \nvar availableStores = {};\n/**\n * Creates a Unistore [store](https://github.com/developit/unistore#store).\n *\n * @param name A name by which the store can be looked up later.\n * Must be unique across the entire application.\n * @param initialState An object which will be the initial state of the store.\n * @returns The newly created store.\n */ function createGlobalStore(name, initialState) {\n var available = availableStores[name];\n if (available) {\n if (available.active) {\n console.error(\"Cannot override an existing store. Make sure that stores are only created once.\");\n } else {\n available.value.setState(initialState, true);\n }\n available.active = true;\n return available.value;\n } else {\n var store = (0,unistore__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(initialState);\n availableStores[name] = {\n value: store,\n active: true\n };\n return store;\n }\n}\n/**\n * Returns the existing [store](https://github.com/developit/unistore#store) named `name`,\n * or creates a new store named `name` if none exists.\n *\n * @param name The name of the store to look up.\n * @param fallbackState The initial value of the new store if no store named `name` exists.\n * @returns The found or newly created store.\n */ function getGlobalStore(name, fallbackState) {\n var available = availableStores[name];\n if (!available) {\n var store = (0,unistore__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(fallbackState);\n availableStores[name] = {\n value: store,\n active: false\n };\n return store;\n }\n return available.value;\n}\n/**\n * @internal\n */ function createAppState(initialState) {\n return createGlobalStore(\"app\", initialState);\n}\n/**\n * @returns The [store](https://github.com/developit/unistore#store) named `app`.\n */ function getAppState() {\n return getGlobalStore(\"app\", {});\n}\nfunction subscribeTo(store, select, handle) {\n var previous = select(store.getState());\n return store.subscribe(function(state) {\n var current = select(state);\n if (current !== previous) {\n previous = current;\n handle(current);\n }\n });\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vZnJhbWV3b3JrL2VzbS1zdGF0ZS9zcmMvc3RhdGUudHMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUEsNEJBQTRCLEdBQ2tCO0FBTzlDLElBQU1DLGtCQUErQyxDQUFDO0FBRXREOzs7Ozs7O0NBT0MsR0FDTSxTQUFTQyxrQkFDZEMsSUFBWSxFQUNaQyxZQUFvQixFQUNMO0lBQ2YsSUFBTUMsWUFBWUosZUFBZSxDQUFDRSxLQUFLO0lBRXZDLElBQUlFLFdBQVc7UUFDYixJQUFJQSxVQUFVQyxNQUFNLEVBQUU7WUFDcEJDLFFBQVFDLEtBQUssQ0FDWDtRQUVKLE9BQU87WUFDTEgsVUFBVUksS0FBSyxDQUFDQyxRQUFRLENBQUNOLGNBQWMsSUFBSTtRQUM3QyxDQUFDO1FBRURDLFVBQVVDLE1BQU0sR0FBRyxJQUFJO1FBQ3ZCLE9BQU9ELFVBQVVJLEtBQUs7SUFDeEIsT0FBTztRQUNMLElBQU1FLFFBQVFYLG9EQUFXQSxDQUFDSTtRQUUxQkgsZUFBZSxDQUFDRSxLQUFLLEdBQUc7WUFDdEJNLE9BQU9FO1lBQ1BMLFFBQVEsSUFBSTtRQUNkO1FBRUEsT0FBT0s7SUFDVCxDQUFDO0FBQ0gsQ0FBQztBQUVEOzs7Ozs7O0NBT0MsR0FDTSxTQUFTQyxlQUNkVCxJQUFZLEVBQ1pVLGFBQXNCLEVBQ1A7SUFDZixJQUFNUixZQUFZSixlQUFlLENBQUNFLEtBQUs7SUFFdkMsSUFBSSxDQUFDRSxXQUFXO1FBQ2QsSUFBTU0sUUFBUVgsb0RBQVdBLENBQUNhO1FBQzFCWixlQUFlLENBQUNFLEtBQUssR0FBRztZQUN0Qk0sT0FBT0U7WUFDUEwsUUFBUSxLQUFLO1FBQ2Y7UUFDQSxPQUFPSztJQUNULENBQUM7SUFFRCxPQUFPTixVQUFVSSxLQUFLO0FBQ3hCLENBQUM7QUFJRDs7Q0FFQyxHQUNNLFNBQVNLLGVBQWVWLFlBQXNCLEVBQUU7SUFDckQsT0FBT0Ysa0JBQWtCLE9BQU9FO0FBQ2xDLENBQUM7QUFFRDs7Q0FFQyxHQUNNLFNBQVNXLGNBQWM7SUFDNUIsT0FBT0gsZUFBeUIsT0FBTyxDQUFDO0FBQzFDLENBQUM7QUFFTSxTQUFTSSxZQUNkTCxLQUFlLEVBQ2ZNLE1BQXVCLEVBQ3ZCQyxNQUE2QixFQUM3QjtJQUNBLElBQUlDLFdBQVdGLE9BQU9OLE1BQU1TLFFBQVE7SUFFcEMsT0FBT1QsTUFBTVUsU0FBUyxDQUFDLFNBQUNDLE9BQVU7UUFDaEMsSUFBTUMsVUFBVU4sT0FBT0s7UUFFdkIsSUFBSUMsWUFBWUosVUFBVTtZQUN4QkEsV0FBV0k7WUFDWEwsT0FBT0s7UUFDVCxDQUFDO0lBQ0g7QUFDRixDQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vQG9wZW5tcnMvZXNtLWFwcC1zaGVsbC8uLi8uLi9mcmFtZXdvcmsvZXNtLXN0YXRlL3NyYy9zdGF0ZS50cz9lOTJmIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKiBAbW9kdWxlIEBjYXRlZ29yeSBTdG9yZSAqL1xuaW1wb3J0IGNyZWF0ZVN0b3JlLCB7IFN0b3JlIH0gZnJvbSBcInVuaXN0b3JlXCI7XG5cbmludGVyZmFjZSBTdG9yZUVudGl0eSB7XG4gIHZhbHVlOiBTdG9yZTxhbnk+O1xuICBhY3RpdmU6IGJvb2xlYW47XG59XG5cbmNvbnN0IGF2YWlsYWJsZVN0b3JlczogUmVjb3JkPHN0cmluZywgU3RvcmVFbnRpdHk+ID0ge307XG5cbi8qKlxuICogQ3JlYXRlcyBhIFVuaXN0b3JlIFtzdG9yZV0oaHR0cHM6Ly9naXRodWIuY29tL2RldmVsb3BpdC91bmlzdG9yZSNzdG9yZSkuXG4gKlxuICogQHBhcmFtIG5hbWUgQSBuYW1lIGJ5IHdoaWNoIHRoZSBzdG9yZSBjYW4gYmUgbG9va2VkIHVwIGxhdGVyLlxuICogICAgTXVzdCBiZSB1bmlxdWUgYWNyb3NzIHRoZSBlbnRpcmUgYXBwbGljYXRpb24uXG4gKiBAcGFyYW0gaW5pdGlhbFN0YXRlIEFuIG9iamVjdCB3aGljaCB3aWxsIGJlIHRoZSBpbml0aWFsIHN0YXRlIG9mIHRoZSBzdG9yZS5cbiAqIEByZXR1cm5zIFRoZSBuZXdseSBjcmVhdGVkIHN0b3JlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlR2xvYmFsU3RvcmU8VFN0YXRlPihcbiAgbmFtZTogc3RyaW5nLFxuICBpbml0aWFsU3RhdGU6IFRTdGF0ZVxuKTogU3RvcmU8VFN0YXRlPiB7XG4gIGNvbnN0IGF2YWlsYWJsZSA9IGF2YWlsYWJsZVN0b3Jlc1tuYW1lXTtcblxuICBpZiAoYXZhaWxhYmxlKSB7XG4gICAgaWYgKGF2YWlsYWJsZS5hY3RpdmUpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICAgIFwiQ2Fubm90IG92ZXJyaWRlIGFuIGV4aXN0aW5nIHN0b3JlLiBNYWtlIHN1cmUgdGhhdCBzdG9yZXMgYXJlIG9ubHkgY3JlYXRlZCBvbmNlLlwiXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICBhdmFpbGFibGUudmFsdWUuc2V0U3RhdGUoaW5pdGlhbFN0YXRlLCB0cnVlKTtcbiAgICB9XG5cbiAgICBhdmFpbGFibGUuYWN0aXZlID0gdHJ1ZTtcbiAgICByZXR1cm4gYXZhaWxhYmxlLnZhbHVlO1xuICB9IGVsc2Uge1xuICAgIGNvbnN0IHN0b3JlID0gY3JlYXRlU3RvcmUoaW5pdGlhbFN0YXRlKTtcblxuICAgIGF2YWlsYWJsZVN0b3Jlc1tuYW1lXSA9IHtcbiAgICAgIHZhbHVlOiBzdG9yZSxcbiAgICAgIGFjdGl2ZTogdHJ1ZSxcbiAgICB9O1xuXG4gICAgcmV0dXJuIHN0b3JlO1xuICB9XG59XG5cbi8qKlxuICogUmV0dXJucyB0aGUgZXhpc3RpbmcgW3N0b3JlXShodHRwczovL2dpdGh1Yi5jb20vZGV2ZWxvcGl0L3VuaXN0b3JlI3N0b3JlKSBuYW1lZCBgbmFtZWAsXG4gKiBvciBjcmVhdGVzIGEgbmV3IHN0b3JlIG5hbWVkIGBuYW1lYCBpZiBub25lIGV4aXN0cy5cbiAqXG4gKiBAcGFyYW0gbmFtZSBUaGUgbmFtZSBvZiB0aGUgc3RvcmUgdG8gbG9vayB1cC5cbiAqIEBwYXJhbSBmYWxsYmFja1N0YXRlIFRoZSBpbml0aWFsIHZhbHVlIG9mIHRoZSBuZXcgc3RvcmUgaWYgbm8gc3RvcmUgbmFtZWQgYG5hbWVgIGV4aXN0cy5cbiAqIEByZXR1cm5zIFRoZSBmb3VuZCBvciBuZXdseSBjcmVhdGVkIHN0b3JlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0R2xvYmFsU3RvcmU8VFN0YXRlID0gYW55PihcbiAgbmFtZTogc3RyaW5nLFxuICBmYWxsYmFja1N0YXRlPzogVFN0YXRlXG4pOiBTdG9yZTxUU3RhdGU+IHtcbiAgY29uc3QgYXZhaWxhYmxlID0gYXZhaWxhYmxlU3RvcmVzW25hbWVdO1xuXG4gIGlmICghYXZhaWxhYmxlKSB7XG4gICAgY29uc3Qgc3RvcmUgPSBjcmVhdGVTdG9yZShmYWxsYmFja1N0YXRlKTtcbiAgICBhdmFpbGFibGVTdG9yZXNbbmFtZV0gPSB7XG4gICAgICB2YWx1ZTogc3RvcmUsXG4gICAgICBhY3RpdmU6IGZhbHNlLFxuICAgIH07XG4gICAgcmV0dXJuIHN0b3JlO1xuICB9XG5cbiAgcmV0dXJuIGF2YWlsYWJsZS52YWx1ZTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBcHBTdGF0ZSB7fVxuXG4vKipcbiAqIEBpbnRlcm5hbFxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlQXBwU3RhdGUoaW5pdGlhbFN0YXRlOiBBcHBTdGF0ZSkge1xuICByZXR1cm4gY3JlYXRlR2xvYmFsU3RvcmUoXCJhcHBcIiwgaW5pdGlhbFN0YXRlKTtcbn1cblxuLyoqXG4gKiBAcmV0dXJucyBUaGUgW3N0b3JlXShodHRwczovL2dpdGh1Yi5jb20vZGV2ZWxvcGl0L3VuaXN0b3JlI3N0b3JlKSBuYW1lZCBgYXBwYC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEFwcFN0YXRlKCkge1xuICByZXR1cm4gZ2V0R2xvYmFsU3RvcmU8QXBwU3RhdGU+KFwiYXBwXCIsIHt9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHN1YnNjcmliZVRvPFQsIFU+KFxuICBzdG9yZTogU3RvcmU8VD4sXG4gIHNlbGVjdDogKHN0YXRlOiBUKSA9PiBVLFxuICBoYW5kbGU6IChzdWJTdGF0ZTogVSkgPT4gdm9pZFxuKSB7XG4gIGxldCBwcmV2aW91cyA9IHNlbGVjdChzdG9yZS5nZXRTdGF0ZSgpKTtcblxuICByZXR1cm4gc3RvcmUuc3Vic2NyaWJlKChzdGF0ZSkgPT4ge1xuICAgIGNvbnN0IGN1cnJlbnQgPSBzZWxlY3Qoc3RhdGUpO1xuXG4gICAgaWYgKGN1cnJlbnQgIT09IHByZXZpb3VzKSB7XG4gICAgICBwcmV2aW91cyA9IGN1cnJlbnQ7XG4gICAgICBoYW5kbGUoY3VycmVudCk7XG4gICAgfVxuICB9KTtcbn1cbiJdLCJuYW1lcyI6WyJjcmVhdGVTdG9yZSIsImF2YWlsYWJsZVN0b3JlcyIsImNyZWF0ZUdsb2JhbFN0b3JlIiwibmFtZSIsImluaXRpYWxTdGF0ZSIsImF2YWlsYWJsZSIsImFjdGl2ZSIsImNvbnNvbGUiLCJlcnJvciIsInZhbHVlIiwic2V0U3RhdGUiLCJzdG9yZSIsImdldEdsb2JhbFN0b3JlIiwiZmFsbGJhY2tTdGF0ZSIsImNyZWF0ZUFwcFN0YXRlIiwiZ2V0QXBwU3RhdGUiLCJzdWJzY3JpYmVUbyIsInNlbGVjdCIsImhhbmRsZSIsInByZXZpb3VzIiwiZ2V0U3RhdGUiLCJzdWJzY3JpYmUiLCJzdGF0ZSIsImN1cnJlbnQiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../framework/esm-state/src/state.ts\n");
7382
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"createAppState\": () => (/* binding */ createAppState),\n/* harmony export */ \"createGlobalStore\": () => (/* binding */ createGlobalStore),\n/* harmony export */ \"getAppState\": () => (/* binding */ getAppState),\n/* harmony export */ \"getGlobalStore\": () => (/* binding */ getGlobalStore),\n/* harmony export */ \"subscribeTo\": () => (/* binding */ subscribeTo)\n/* harmony export */ });\n/* harmony import */ var zustand_vanilla__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! zustand/vanilla */ \"../../../node_modules/zustand/esm/vanilla.mjs\");\n/** @module @category Store */ \nvar availableStores = {};\n/**\n * Creates a Zustand store.\n *\n * @param name A name by which the store can be looked up later.\n * Must be unique across the entire application.\n * @param initialState An object which will be the initial state of the store.\n * @returns The newly created store.\n */ function createGlobalStore(name, initialState) {\n var available = availableStores[name];\n if (available) {\n if (available.active) {\n console.error(\"Cannot override an existing store. Make sure that stores are only created once.\");\n } else {\n available.value.setState(initialState, true);\n }\n available.active = true;\n return available.value;\n } else {\n var store = (0,zustand_vanilla__WEBPACK_IMPORTED_MODULE_0__.createStore)()(function() {\n return initialState;\n });\n availableStores[name] = {\n value: store,\n active: true\n };\n return store;\n }\n}\n/**\n * Returns the existing store named `name`,\n * or creates a new store named `name` if none exists.\n *\n * @param name The name of the store to look up.\n * @param fallbackState The initial value of the new store if no store named `name` exists.\n * @returns The found or newly created store.\n */ function getGlobalStore(name, fallbackState) {\n var available = availableStores[name];\n if (!available) {\n var store = (0,zustand_vanilla__WEBPACK_IMPORTED_MODULE_0__.createStore)()(function() {\n return fallbackState !== null && fallbackState !== void 0 ? fallbackState : {};\n });\n availableStores[name] = {\n value: store,\n active: false\n };\n return store;\n }\n return available.value;\n}\n/**\n * @internal\n */ function createAppState(initialState) {\n return createGlobalStore(\"app\", initialState);\n}\n/**\n * @returns The [store](https://github.com/developit/unistore#store) named `app`.\n */ function getAppState() {\n return getGlobalStore(\"app\", {});\n}\nfunction subscribeTo(store, select, handle) {\n var previous = select(store.getState());\n return store.subscribe(function(state) {\n var current = select(state);\n if (current !== previous) {\n previous = current;\n handle(current);\n }\n });\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vZnJhbWV3b3JrL2VzbS1zdGF0ZS9zcmMvc3RhdGUudHMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUEsNEJBQTRCLEdBQzRCO0FBT3hELElBQU1DLGtCQUErQyxDQUFDO0FBRXREOzs7Ozs7O0NBT0MsR0FDTSxTQUFTQyxrQkFDZEMsSUFBWSxFQUNaQyxZQUFlLEVBQ0Y7SUFDYixJQUFNQyxZQUFZSixlQUFlLENBQUNFLEtBQUs7SUFFdkMsSUFBSUUsV0FBVztRQUNiLElBQUlBLFVBQVVDLE1BQU0sRUFBRTtZQUNwQkMsUUFBUUMsS0FBSyxDQUNYO1FBRUosT0FBTztZQUNMSCxVQUFVSSxLQUFLLENBQUNDLFFBQVEsQ0FBQ04sY0FBYyxJQUFJO1FBQzdDLENBQUM7UUFFREMsVUFBVUMsTUFBTSxHQUFHLElBQUk7UUFDdkIsT0FBT0QsVUFBVUksS0FBSztJQUN4QixPQUFPO1FBQ0wsSUFBTUUsUUFBUVgsNERBQVdBLEdBQU07bUJBQU1JOztRQUVyQ0gsZUFBZSxDQUFDRSxLQUFLLEdBQUc7WUFDdEJNLE9BQU9FO1lBQ1BMLFFBQVEsSUFBSTtRQUNkO1FBRUEsT0FBT0s7SUFDVCxDQUFDO0FBQ0gsQ0FBQztBQUVEOzs7Ozs7O0NBT0MsR0FDTSxTQUFTQyxlQUNkVCxJQUFZLEVBQ1pVLGFBQWlCLEVBQ0o7SUFDYixJQUFNUixZQUFZSixlQUFlLENBQUNFLEtBQUs7SUFFdkMsSUFBSSxDQUFDRSxXQUFXO1FBQ2QsSUFBTU0sUUFBUVgsNERBQVdBLEdBQU07bUJBQU1hLDBCQUFBQSwyQkFBQUEsZ0JBQWtCLENBQUMsQ0FBa0I7O1FBQzFFWixlQUFlLENBQUNFLEtBQUssR0FBRztZQUN0Qk0sT0FBT0U7WUFDUEwsUUFBUSxLQUFLO1FBQ2Y7UUFDQSxPQUFPSztJQUNULENBQUM7SUFFRCxPQUFPTixVQUFVSSxLQUFLO0FBQ3hCLENBQUM7QUFJRDs7Q0FFQyxHQUNNLFNBQVNLLGVBQWVWLFlBQXNCLEVBQUU7SUFDckQsT0FBT0Ysa0JBQWtCLE9BQU9FO0FBQ2xDLENBQUM7QUFFRDs7Q0FFQyxHQUNNLFNBQVNXLGNBQWM7SUFDNUIsT0FBT0gsZUFBeUIsT0FBTyxDQUFDO0FBQzFDLENBQUM7QUFFTSxTQUFTSSxZQUNkTCxLQUFrQixFQUNsQk0sTUFBdUIsRUFDdkJDLE1BQTZCLEVBQzdCO0lBQ0EsSUFBSUMsV0FBV0YsT0FBT04sTUFBTVMsUUFBUTtJQUVwQyxPQUFPVCxNQUFNVSxTQUFTLENBQUMsU0FBQ0MsT0FBVTtRQUNoQyxJQUFNQyxVQUFVTixPQUFPSztRQUV2QixJQUFJQyxZQUFZSixVQUFVO1lBQ3hCQSxXQUFXSTtZQUNYTCxPQUFPSztRQUNULENBQUM7SUFDSDtBQUNGLENBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Ab3Blbm1ycy9lc20tYXBwLXNoZWxsLy4uLy4uL2ZyYW1ld29yay9lc20tc3RhdGUvc3JjL3N0YXRlLnRzP2U5MmYiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqIEBtb2R1bGUgQGNhdGVnb3J5IFN0b3JlICovXG5pbXBvcnQgeyBjcmVhdGVTdG9yZSwgU3RvcmVBcGkgfSBmcm9tIFwienVzdGFuZC92YW5pbGxhXCI7XG5cbmludGVyZmFjZSBTdG9yZUVudGl0eSB7XG4gIHZhbHVlOiBTdG9yZUFwaTx1bmtub3duPjtcbiAgYWN0aXZlOiBib29sZWFuO1xufVxuXG5jb25zdCBhdmFpbGFibGVTdG9yZXM6IFJlY29yZDxzdHJpbmcsIFN0b3JlRW50aXR5PiA9IHt9O1xuXG4vKipcbiAqIENyZWF0ZXMgYSBadXN0YW5kIHN0b3JlLlxuICpcbiAqIEBwYXJhbSBuYW1lIEEgbmFtZSBieSB3aGljaCB0aGUgc3RvcmUgY2FuIGJlIGxvb2tlZCB1cCBsYXRlci5cbiAqICAgIE11c3QgYmUgdW5pcXVlIGFjcm9zcyB0aGUgZW50aXJlIGFwcGxpY2F0aW9uLlxuICogQHBhcmFtIGluaXRpYWxTdGF0ZSBBbiBvYmplY3Qgd2hpY2ggd2lsbCBiZSB0aGUgaW5pdGlhbCBzdGF0ZSBvZiB0aGUgc3RvcmUuXG4gKiBAcmV0dXJucyBUaGUgbmV3bHkgY3JlYXRlZCBzdG9yZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUdsb2JhbFN0b3JlPFQ+KFxuICBuYW1lOiBzdHJpbmcsXG4gIGluaXRpYWxTdGF0ZTogVFxuKTogU3RvcmVBcGk8VD4ge1xuICBjb25zdCBhdmFpbGFibGUgPSBhdmFpbGFibGVTdG9yZXNbbmFtZV07XG5cbiAgaWYgKGF2YWlsYWJsZSkge1xuICAgIGlmIChhdmFpbGFibGUuYWN0aXZlKSB7XG4gICAgICBjb25zb2xlLmVycm9yKFxuICAgICAgICBcIkNhbm5vdCBvdmVycmlkZSBhbiBleGlzdGluZyBzdG9yZS4gTWFrZSBzdXJlIHRoYXQgc3RvcmVzIGFyZSBvbmx5IGNyZWF0ZWQgb25jZS5cIlxuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgYXZhaWxhYmxlLnZhbHVlLnNldFN0YXRlKGluaXRpYWxTdGF0ZSwgdHJ1ZSk7XG4gICAgfVxuXG4gICAgYXZhaWxhYmxlLmFjdGl2ZSA9IHRydWU7XG4gICAgcmV0dXJuIGF2YWlsYWJsZS52YWx1ZSBhcyBTdG9yZUFwaTxUPjtcbiAgfSBlbHNlIHtcbiAgICBjb25zdCBzdG9yZSA9IGNyZWF0ZVN0b3JlPFQ+KCkoKCkgPT4gaW5pdGlhbFN0YXRlKTtcblxuICAgIGF2YWlsYWJsZVN0b3Jlc1tuYW1lXSA9IHtcbiAgICAgIHZhbHVlOiBzdG9yZSxcbiAgICAgIGFjdGl2ZTogdHJ1ZSxcbiAgICB9O1xuXG4gICAgcmV0dXJuIHN0b3JlO1xuICB9XG59XG5cbi8qKlxuICogUmV0dXJucyB0aGUgZXhpc3Rpbmcgc3RvcmUgbmFtZWQgYG5hbWVgLFxuICogb3IgY3JlYXRlcyBhIG5ldyBzdG9yZSBuYW1lZCBgbmFtZWAgaWYgbm9uZSBleGlzdHMuXG4gKlxuICogQHBhcmFtIG5hbWUgVGhlIG5hbWUgb2YgdGhlIHN0b3JlIHRvIGxvb2sgdXAuXG4gKiBAcGFyYW0gZmFsbGJhY2tTdGF0ZSBUaGUgaW5pdGlhbCB2YWx1ZSBvZiB0aGUgbmV3IHN0b3JlIGlmIG5vIHN0b3JlIG5hbWVkIGBuYW1lYCBleGlzdHMuXG4gKiBAcmV0dXJucyBUaGUgZm91bmQgb3IgbmV3bHkgY3JlYXRlZCBzdG9yZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEdsb2JhbFN0b3JlPFQ+KFxuICBuYW1lOiBzdHJpbmcsXG4gIGZhbGxiYWNrU3RhdGU/OiBUXG4pOiBTdG9yZUFwaTxUPiB7XG4gIGNvbnN0IGF2YWlsYWJsZSA9IGF2YWlsYWJsZVN0b3Jlc1tuYW1lXTtcblxuICBpZiAoIWF2YWlsYWJsZSkge1xuICAgIGNvbnN0IHN0b3JlID0gY3JlYXRlU3RvcmU8VD4oKSgoKSA9PiBmYWxsYmFja1N0YXRlID8/ICh7fSBhcyB1bmtub3duIGFzIFQpKTtcbiAgICBhdmFpbGFibGVTdG9yZXNbbmFtZV0gPSB7XG4gICAgICB2YWx1ZTogc3RvcmUsXG4gICAgICBhY3RpdmU6IGZhbHNlLFxuICAgIH07XG4gICAgcmV0dXJuIHN0b3JlO1xuICB9XG5cbiAgcmV0dXJuIGF2YWlsYWJsZS52YWx1ZSBhcyBTdG9yZUFwaTxUPjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBcHBTdGF0ZSB7fVxuXG4vKipcbiAqIEBpbnRlcm5hbFxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlQXBwU3RhdGUoaW5pdGlhbFN0YXRlOiBBcHBTdGF0ZSkge1xuICByZXR1cm4gY3JlYXRlR2xvYmFsU3RvcmUoXCJhcHBcIiwgaW5pdGlhbFN0YXRlKTtcbn1cblxuLyoqXG4gKiBAcmV0dXJucyBUaGUgW3N0b3JlXShodHRwczovL2dpdGh1Yi5jb20vZGV2ZWxvcGl0L3VuaXN0b3JlI3N0b3JlKSBuYW1lZCBgYXBwYC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEFwcFN0YXRlKCkge1xuICByZXR1cm4gZ2V0R2xvYmFsU3RvcmU8QXBwU3RhdGU+KFwiYXBwXCIsIHt9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHN1YnNjcmliZVRvPFQsIFU+KFxuICBzdG9yZTogU3RvcmVBcGk8VD4sXG4gIHNlbGVjdDogKHN0YXRlOiBUKSA9PiBVLFxuICBoYW5kbGU6IChzdWJTdGF0ZTogVSkgPT4gdm9pZFxuKSB7XG4gIGxldCBwcmV2aW91cyA9IHNlbGVjdChzdG9yZS5nZXRTdGF0ZSgpKTtcblxuICByZXR1cm4gc3RvcmUuc3Vic2NyaWJlKChzdGF0ZSkgPT4ge1xuICAgIGNvbnN0IGN1cnJlbnQgPSBzZWxlY3Qoc3RhdGUpO1xuXG4gICAgaWYgKGN1cnJlbnQgIT09IHByZXZpb3VzKSB7XG4gICAgICBwcmV2aW91cyA9IGN1cnJlbnQ7XG4gICAgICBoYW5kbGUoY3VycmVudCk7XG4gICAgfVxuICB9KTtcbn1cbiJdLCJuYW1lcyI6WyJjcmVhdGVTdG9yZSIsImF2YWlsYWJsZVN0b3JlcyIsImNyZWF0ZUdsb2JhbFN0b3JlIiwibmFtZSIsImluaXRpYWxTdGF0ZSIsImF2YWlsYWJsZSIsImFjdGl2ZSIsImNvbnNvbGUiLCJlcnJvciIsInZhbHVlIiwic2V0U3RhdGUiLCJzdG9yZSIsImdldEdsb2JhbFN0b3JlIiwiZmFsbGJhY2tTdGF0ZSIsImNyZWF0ZUFwcFN0YXRlIiwiZ2V0QXBwU3RhdGUiLCJzdWJzY3JpYmVUbyIsInNlbGVjdCIsImhhbmRsZSIsInByZXZpb3VzIiwiZ2V0U3RhdGUiLCJzdWJzY3JpYmUiLCJzdGF0ZSIsImN1cnJlbnQiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../framework/esm-state/src/state.ts\n");
7394
7383
 
7395
7384
  /***/ }),
7396
7385
 
@@ -10099,6 +10088,17 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
10099
10088
 
10100
10089
  /***/ }),
10101
10090
 
10091
+ /***/ "../../../node_modules/zustand/esm/vanilla.mjs":
10092
+ /*!*****************************************************!*\
10093
+ !*** ../../../node_modules/zustand/esm/vanilla.mjs ***!
10094
+ \*****************************************************/
10095
+ /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
10096
+
10097
+ "use strict";
10098
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"createStore\": () => (/* binding */ createStore),\n/* harmony export */ \"default\": () => (/* binding */ vanilla)\n/* harmony export */ });\nconst createStoreImpl = (createState) => {\n let state;\n const listeners = /* @__PURE__ */ new Set();\n const setState = (partial, replace) => {\n const nextState = typeof partial === \"function\" ? partial(state) : partial;\n if (!Object.is(nextState, state)) {\n const previousState = state;\n state = (replace != null ? replace : typeof nextState !== \"object\") ? nextState : Object.assign({}, state, nextState);\n listeners.forEach((listener) => listener(state, previousState));\n }\n };\n const getState = () => state;\n const subscribe = (listener) => {\n listeners.add(listener);\n return () => listeners.delete(listener);\n };\n const destroy = () => {\n if (true) {\n console.warn(\n \"[DEPRECATED] The `destroy` method will be unsupported in a future version. Instead use unsubscribe function returned by subscribe. Everything will be garbage-collected if store is garbage-collected.\"\n );\n }\n listeners.clear();\n };\n const api = { setState, getState, subscribe, destroy };\n state = createState(setState, getState, api);\n return api;\n};\nconst createStore = (createState) => createState ? createStoreImpl(createState) : createStoreImpl;\nvar vanilla = (createState) => {\n if (true) {\n console.warn(\n \"[DEPRECATED] Default export is deprecated. Instead use import { createStore } from 'zustand/vanilla'.\"\n );\n }\n return createStore(createState);\n};\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3p1c3RhbmQvZXNtL3ZhbmlsbGEubWpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3R0FBd0c7QUFDeEc7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUSxJQUEwRDtBQUNsRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0I7QUFDaEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU0sSUFBMEQ7QUFDaEU7QUFDQSx1RUFBdUUsY0FBYztBQUNyRjtBQUNBO0FBQ0E7QUFDQTs7QUFFMkMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Ab3Blbm1ycy9lc20tYXBwLXNoZWxsLy4uLy4uLy4uL25vZGVfbW9kdWxlcy96dXN0YW5kL2VzbS92YW5pbGxhLm1qcz9mNjZkIl0sInNvdXJjZXNDb250ZW50IjpbImNvbnN0IGNyZWF0ZVN0b3JlSW1wbCA9IChjcmVhdGVTdGF0ZSkgPT4ge1xuICBsZXQgc3RhdGU7XG4gIGNvbnN0IGxpc3RlbmVycyA9IC8qIEBfX1BVUkVfXyAqLyBuZXcgU2V0KCk7XG4gIGNvbnN0IHNldFN0YXRlID0gKHBhcnRpYWwsIHJlcGxhY2UpID0+IHtcbiAgICBjb25zdCBuZXh0U3RhdGUgPSB0eXBlb2YgcGFydGlhbCA9PT0gXCJmdW5jdGlvblwiID8gcGFydGlhbChzdGF0ZSkgOiBwYXJ0aWFsO1xuICAgIGlmICghT2JqZWN0LmlzKG5leHRTdGF0ZSwgc3RhdGUpKSB7XG4gICAgICBjb25zdCBwcmV2aW91c1N0YXRlID0gc3RhdGU7XG4gICAgICBzdGF0ZSA9IChyZXBsYWNlICE9IG51bGwgPyByZXBsYWNlIDogdHlwZW9mIG5leHRTdGF0ZSAhPT0gXCJvYmplY3RcIikgPyBuZXh0U3RhdGUgOiBPYmplY3QuYXNzaWduKHt9LCBzdGF0ZSwgbmV4dFN0YXRlKTtcbiAgICAgIGxpc3RlbmVycy5mb3JFYWNoKChsaXN0ZW5lcikgPT4gbGlzdGVuZXIoc3RhdGUsIHByZXZpb3VzU3RhdGUpKTtcbiAgICB9XG4gIH07XG4gIGNvbnN0IGdldFN0YXRlID0gKCkgPT4gc3RhdGU7XG4gIGNvbnN0IHN1YnNjcmliZSA9IChsaXN0ZW5lcikgPT4ge1xuICAgIGxpc3RlbmVycy5hZGQobGlzdGVuZXIpO1xuICAgIHJldHVybiAoKSA9PiBsaXN0ZW5lcnMuZGVsZXRlKGxpc3RlbmVyKTtcbiAgfTtcbiAgY29uc3QgZGVzdHJveSA9ICgpID0+IHtcbiAgICBpZiAoKGltcG9ydC5tZXRhLmVudiAmJiBpbXBvcnQubWV0YS5lbnYuTU9ERSkgIT09IFwicHJvZHVjdGlvblwiKSB7XG4gICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgIFwiW0RFUFJFQ0FURURdIFRoZSBgZGVzdHJveWAgbWV0aG9kIHdpbGwgYmUgdW5zdXBwb3J0ZWQgaW4gYSBmdXR1cmUgdmVyc2lvbi4gSW5zdGVhZCB1c2UgdW5zdWJzY3JpYmUgZnVuY3Rpb24gcmV0dXJuZWQgYnkgc3Vic2NyaWJlLiBFdmVyeXRoaW5nIHdpbGwgYmUgZ2FyYmFnZS1jb2xsZWN0ZWQgaWYgc3RvcmUgaXMgZ2FyYmFnZS1jb2xsZWN0ZWQuXCJcbiAgICAgICk7XG4gICAgfVxuICAgIGxpc3RlbmVycy5jbGVhcigpO1xuICB9O1xuICBjb25zdCBhcGkgPSB7IHNldFN0YXRlLCBnZXRTdGF0ZSwgc3Vic2NyaWJlLCBkZXN0cm95IH07XG4gIHN0YXRlID0gY3JlYXRlU3RhdGUoc2V0U3RhdGUsIGdldFN0YXRlLCBhcGkpO1xuICByZXR1cm4gYXBpO1xufTtcbmNvbnN0IGNyZWF0ZVN0b3JlID0gKGNyZWF0ZVN0YXRlKSA9PiBjcmVhdGVTdGF0ZSA/IGNyZWF0ZVN0b3JlSW1wbChjcmVhdGVTdGF0ZSkgOiBjcmVhdGVTdG9yZUltcGw7XG52YXIgdmFuaWxsYSA9IChjcmVhdGVTdGF0ZSkgPT4ge1xuICBpZiAoKGltcG9ydC5tZXRhLmVudiAmJiBpbXBvcnQubWV0YS5lbnYuTU9ERSkgIT09IFwicHJvZHVjdGlvblwiKSB7XG4gICAgY29uc29sZS53YXJuKFxuICAgICAgXCJbREVQUkVDQVRFRF0gRGVmYXVsdCBleHBvcnQgaXMgZGVwcmVjYXRlZC4gSW5zdGVhZCB1c2UgaW1wb3J0IHsgY3JlYXRlU3RvcmUgfSBmcm9tICd6dXN0YW5kL3ZhbmlsbGEnLlwiXG4gICAgKTtcbiAgfVxuICByZXR1cm4gY3JlYXRlU3RvcmUoY3JlYXRlU3RhdGUpO1xufTtcblxuZXhwb3J0IHsgY3JlYXRlU3RvcmUsIHZhbmlsbGEgYXMgZGVmYXVsdCB9O1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/zustand/esm/vanilla.mjs\n");
10099
+
10100
+ /***/ }),
10101
+
10102
10102
  /***/ "../../../node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js":
10103
10103
  /*!****************************************************************************!*\
10104
10104
  !*** ../../../node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js ***!
@@ -11919,8 +11919,8 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
11919
11919
  /******/ var promises = [];
11920
11920
  /******/ switch(name) {
11921
11921
  /******/ case "default": {
11922
- /******/ register("@openmrs/esm-framework/src/internal", "4.3.2-pre.678", () => (() => (__webpack_require__(/*! ../../framework/esm-framework/src/internal.ts */ "../../framework/esm-framework/src/internal.ts"))), 1);
11923
- /******/ register("@openmrs/esm-framework", "4.3.2-pre.678", () => (() => (__webpack_require__(/*! ../../framework/esm-framework/src/index.ts */ "../../framework/esm-framework/src/index.ts"))), 1);
11922
+ /******/ register("@openmrs/esm-framework/src/internal", "4.3.2-pre.681", () => (() => (__webpack_require__(/*! ../../framework/esm-framework/src/internal.ts */ "../../framework/esm-framework/src/internal.ts"))), 1);
11923
+ /******/ register("@openmrs/esm-framework", "4.3.2-pre.681", () => (() => (__webpack_require__(/*! ../../framework/esm-framework/src/index.ts */ "../../framework/esm-framework/src/index.ts"))), 1);
11924
11924
  /******/ register("dayjs", "1.11.5", () => (() => (__webpack_require__(/*! ../../../node_modules/dayjs/dayjs.min.js */ "../../../node_modules/dayjs/dayjs.min.js"))), 1);
11925
11925
  /******/ register("i18next", "19.9.2", () => (() => (__webpack_require__(/*! ../../../node_modules/i18next/dist/esm/i18next.js */ "../../../node_modules/i18next/dist/esm/i18next.js"))), 1);
11926
11926
  /******/ register("react-dom", "18.2.0", () => (() => (__webpack_require__(/*! ../../../node_modules/react-dom/index.js */ "../../../node_modules/react-dom/index.js"))), 1);
@@ -12082,7 +12082,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
12082
12082
  /******/ "webpack/sharing/consume/default/i18next/i18next": () => (loadSingletonVersionCheckFallback("default", "i18next", [1,19,6,0], () => (() => (__webpack_require__(/*! i18next */ "../../../node_modules/i18next/dist/esm/i18next.js"))))),
12083
12083
  /******/ "webpack/sharing/consume/default/react-i18next/react-i18next": () => (loadSingletonVersionCheckFallback("default", "react-i18next", [1,11,7,0], () => (() => (__webpack_require__(/*! react-i18next */ "../../../node_modules/react-i18next/dist/es/index.js"))))),
12084
12084
  /******/ "webpack/sharing/consume/default/dayjs/dayjs": () => (loadSingletonVersionCheckFallback("default", "dayjs", [1,1,10,4], () => (() => (__webpack_require__(/*! dayjs */ "../../../node_modules/dayjs/dayjs.min.js"))))),
12085
- /******/ "webpack/sharing/consume/default/@openmrs/esm-framework/@openmrs/esm-framework": () => (loadSingletonVersionCheckFallback("default", "@openmrs/esm-framework", [7,4,3,2,,"pre",678], () => (() => (__webpack_require__(/*! @openmrs/esm-framework */ "../../framework/esm-framework/src/index.ts")))))
12085
+ /******/ "webpack/sharing/consume/default/@openmrs/esm-framework/@openmrs/esm-framework": () => (loadSingletonVersionCheckFallback("default", "@openmrs/esm-framework", [7,4,3,2,,"pre",681], () => (() => (__webpack_require__(/*! @openmrs/esm-framework */ "../../framework/esm-framework/src/index.ts")))))
12086
12086
  /******/ };
12087
12087
  /******/ var initialConsumes = ["webpack/sharing/consume/default/@openmrs/esm-framework/src/internal/@openmrs/esm-framework/src/internal","webpack/sharing/consume/default/rxjs/rxjs","webpack/sharing/consume/default/react/react","webpack/sharing/consume/default/react-dom/react-dom","webpack/sharing/consume/default/i18next/i18next","webpack/sharing/consume/default/react-i18next/react-i18next","webpack/sharing/consume/default/dayjs/dayjs","webpack/sharing/consume/default/@openmrs/esm-framework/@openmrs/esm-framework"];
12088
12088
  /******/ initialConsumes.forEach((id) => {