@deephaven/code-studio 0.94.0 → 0.95.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (45) hide show
  1. package/build/assets/{AppRoot-2QqbS1nC.js → AppRoot-BAdlVp-2.js} +4 -4
  2. package/build/assets/AppRoot-BAdlVp-2.js.map +1 -0
  3. package/build/assets/{Chart-Cm7qWO9E.js → Chart-CAbfBNKX.js} +2 -2
  4. package/build/assets/{Chart-Cm7qWO9E.js.map → Chart-CAbfBNKX.js.map} +1 -1
  5. package/build/assets/{ControlType-CckisQF4.js → ControlType-NUmGfTww.js} +4 -4
  6. package/build/assets/{ControlType-CckisQF4.js.map → ControlType-NUmGfTww.js.map} +1 -1
  7. package/build/assets/{FontBootstrap-CvnhQGa5.js → FontBootstrap-Bl6vq41v.js} +2 -2
  8. package/build/assets/{FontBootstrap-CvnhQGa5.js.map → FontBootstrap-Bl6vq41v.js.map} +1 -1
  9. package/build/assets/{FormatterUtils-BAfeV5hG.js → FormatterUtils-iauIVwuu.js} +2 -2
  10. package/build/assets/{FormatterUtils-BAfeV5hG.js.map → FormatterUtils-iauIVwuu.js.map} +1 -1
  11. package/build/assets/{Grid-PyvX8Ljr.js → Grid-CjnujVEX.js} +2 -2
  12. package/build/assets/{Grid-PyvX8Ljr.js.map → Grid-CjnujVEX.js.map} +1 -1
  13. package/build/assets/{IrisGrid-C7qtaa22.js → IrisGrid-BGnzpzYu.js} +2 -2
  14. package/build/assets/{IrisGrid-C7qtaa22.js.map → IrisGrid-BGnzpzYu.js.map} +1 -1
  15. package/build/assets/{IrisGridModel-CCMYIR29.js → IrisGridModel-CAsjFilJ.js} +3 -3
  16. package/build/assets/{IrisGridModel-CCMYIR29.js.map → IrisGridModel-CAsjFilJ.js.map} +1 -1
  17. package/build/assets/{IrisGridShortcuts-B3PQt1Dg.js → IrisGridShortcuts-BwHkgvtW.js} +2 -2
  18. package/build/assets/{IrisGridShortcuts-B3PQt1Dg.js.map → IrisGridShortcuts-BwHkgvtW.js.map} +1 -1
  19. package/build/assets/{IrisGridThemeProvider-Cf0M-Qvb.js → IrisGridThemeProvider-Atqacw7P.js} +2 -2
  20. package/build/assets/{IrisGridThemeProvider-Cf0M-Qvb.js.map → IrisGridThemeProvider-Atqacw7P.js.map} +1 -1
  21. package/build/assets/{LocalWorkspaceStorage-CFBIVjrj.js → LocalWorkspaceStorage-h3-A9jVy.js} +2 -2
  22. package/build/assets/{LocalWorkspaceStorage-CFBIVjrj.js.map → LocalWorkspaceStorage-h3-A9jVy.js.map} +1 -1
  23. package/build/assets/{MarkdownEditor-fe6mc7KC.js → MarkdownEditor-C8u19ocy.js} +2 -2
  24. package/build/assets/{MarkdownEditor-fe6mc7KC.js.map → MarkdownEditor-C8u19ocy.js.map} +1 -1
  25. package/build/assets/{MarkdownNotebook-2wkzDKT_.js → MarkdownNotebook-CEg2045K.js} +2 -2
  26. package/build/assets/{MarkdownNotebook-2wkzDKT_.js.map → MarkdownNotebook-CEg2045K.js.map} +1 -1
  27. package/build/assets/{MissingPartitionError-Dj2Y-FKf.js → MissingPartitionError-yhygxxeZ.js} +2 -2
  28. package/build/assets/{MissingPartitionError-Dj2Y-FKf.js.map → MissingPartitionError-yhygxxeZ.js.map} +1 -1
  29. package/build/assets/{StyleGuideRoot-DWcUvpZo.js → StyleGuideRoot-C-Kz5fEa.js} +2 -2
  30. package/build/assets/StyleGuideRoot-C-Kz5fEa.js.map +1 -0
  31. package/build/assets/{TokenBoxCellRenderer-DfZgvoE0.js → TokenBoxCellRenderer-DH2eZRQH.js} +2 -2
  32. package/build/assets/{TokenBoxCellRenderer-DfZgvoE0.js.map → TokenBoxCellRenderer-DH2eZRQH.js.map} +1 -1
  33. package/build/assets/{index-B0jej1Vv.js → index-B8xrSWbn.js} +5 -5
  34. package/build/assets/index-B8xrSWbn.js.map +1 -0
  35. package/build/assets/index-Bkz3vMXy.css +1 -0
  36. package/build/assets/{index-A37_P9XP.js → index-By1dHjp4.js} +3 -3
  37. package/build/assets/{index-A37_P9XP.js.map → index-By1dHjp4.js.map} +1 -1
  38. package/build/assets/{index-DVqL-niD.js → index-C159LUCr.js} +2 -2
  39. package/build/assets/{index-DVqL-niD.js.map → index-C159LUCr.js.map} +1 -1
  40. package/build/index.html +2 -2
  41. package/package.json +31 -31
  42. package/build/assets/AppRoot-2QqbS1nC.js.map +0 -1
  43. package/build/assets/StyleGuideRoot-DWcUvpZo.js.map +0 -1
  44. package/build/assets/index-B0jej1Vv.js.map +0 -1
  45. package/build/assets/index-DrdNUMrr.css +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"LocalWorkspaceStorage-CFBIVjrj.js","sources":["../../../react-hooks/dist/useResizeObserver.js","../../../components/dist/theme/ThemePicker.js","../../../components/dist/theme/Logo.js","../../../components/dist/spectrum/picker/Picker.js","../../../components/dist/spectrum/Heading.js","../../../components/dist/context-actions/ContextMenu.js","../../../components/dist/context-actions/ContextMenuRoot.js","../../../components/dist/Collapse.js","../../../components/dist/navigation/NavTab.js","../../../components/dist/navigation/NavTabList.js","../../../jsapi-bootstrap/dist/useCreateClient.js","../../../jsapi-bootstrap/dist/ClientBootstrap.js","../../../jsapi-bootstrap/dist/useClient.js","../../../jsapi-utils/dist/MessageUtils.js","../../../jsapi-utils/dist/NoConsolesError.js","../../../jsapi-utils/dist/SessionUtils.js","../../../dashboard/dist/Dashboard.js","../../../dashboard/dist/DashboardEvents.js","../../../dashboard/dist/LazyDashboard.js","../../../plugin/dist/useDashboardPlugins.js","../../../auth-plugins/dist/UserContexts.js","../../../app-utils/dist/components/ConnectionContext.js","../../../app-utils/dist/components/ServerConfigBootstrap.js","../../../app-utils/dist/components/useServerConfig.js","../../../app-utils/dist/components/AppDashboards.js","../../../app-utils/dist/components/useConnection.js","../../../app-utils/dist/components/useUser.js","../../../app-utils/dist/storage/grpc/GrpcFileStorageTable.js","../../../app-utils/dist/storage/grpc/GrpcFileStorage.js","../../../app-utils/dist/storage/grpc/GrpcLayoutStorage.js","../../../app-utils/dist/storage/LayoutStorage.js","../../../app-utils/dist/storage/UserLayoutUtils.js","../../../app-utils/dist/storage/LocalWorkspaceStorage.js"],"sourcesContent":["import { useEffect } from 'react';\n\n/**\n * Listen for resize events on an element using ResizeObserver\n * @param element Element to listen for resizing on\n * @param onResize Callback triggered when the element resizes\n */\nexport function useResizeObserver(element, onResize) {\n useEffect(() => {\n if (element == null) {\n return;\n }\n var resizeObserverInstance = new window.ResizeObserver(onResize);\n resizeObserverInstance.observe(element);\n return () => {\n if (element != null) {\n resizeObserverInstance.unobserve(element);\n }\n };\n }, [element, onResize]);\n}\nexport default useResizeObserver;\n//# sourceMappingURL=useResizeObserver.js.map","import { useCallback } from 'react';\nimport { Item, Picker } from '@adobe/react-spectrum';\nimport useTheme from \"./useTheme.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport function ThemePicker() {\n var {\n selectedThemeKey,\n setSelectedThemeKey,\n themes\n } = useTheme();\n var onSelectionChange = useCallback(key => {\n setSelectedThemeKey(key);\n }, [setSelectedThemeKey]);\n return /*#__PURE__*/_jsx(Picker, {\n label: \"Pick a color scheme\",\n items: themes,\n selectedKey: selectedThemeKey,\n onSelectionChange: onSelectionChange,\n children: item => /*#__PURE__*/_jsx(Item, {\n children: item.name\n }, item.themeKey)\n });\n}\nexport default ThemePicker;\n//# sourceMappingURL=ThemePicker.js.map","import classNames from 'classnames';\nimport \"./Logo.css\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport function Logo(_ref) {\n var {\n className,\n style\n } = _ref;\n return /*#__PURE__*/_jsx(\"div\", {\n className: classNames('dh-logo', className),\n style: style\n });\n}\nexport default Logo;\n//# sourceMappingURL=Logo.js.map","var _excluded = [\"UNSAFE_className\"],\n _excluded2 = [\"defaultSelectedKey\", \"disabledKeys\", \"selectedKey\", \"ref\"];\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport { Picker as SpectrumPicker } from '@adobe/react-spectrum';\nimport cl from 'classnames';\nimport React from 'react';\nimport { useMergeRef } from '@deephaven/react-hooks';\nimport { usePickerProps } from \"./usePickerProps.js\";\n/**\n * Picker component for selecting items from a list of items. Items can be\n * provided via the `children` prop. Each item can be a string,\tnumber, boolean,\n * or a Spectrum <Item> element. The remaining props are just\tpass through props\n * for the Spectrum Picker component.\n * See https://react-spectrum.adobe.com/react-spectrum/Picker.html\n */\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport var Picker = /*#__PURE__*/React.forwardRef(function Picker(_ref, ref) {\n var {\n UNSAFE_className\n } = _ref,\n props = _objectWithoutProperties(_ref, _excluded);\n var _usePickerProps = usePickerProps(props),\n {\n defaultSelectedKey,\n disabledKeys,\n selectedKey,\n ref: scrollRef\n } = _usePickerProps,\n pickerProps = _objectWithoutProperties(_usePickerProps, _excluded2);\n var pickerRef = useMergeRef(ref, scrollRef);\n return /*#__PURE__*/_jsx(SpectrumPicker\n // eslint-disable-next-line react/jsx-props-no-spreading\n , _objectSpread(_objectSpread({}, pickerProps), {}, {\n ref: pickerRef,\n UNSAFE_className: cl('dh-picker', UNSAFE_className)\n // Type assertions are necessary here since Spectrum types don't account\n // for number and boolean key values even though they are valid runtime\n // values.\n ,\n defaultSelectedKey: defaultSelectedKey,\n disabledKeys: disabledKeys,\n selectedKey: selectedKey\n }));\n});\nPicker.displayName = 'Picker';\nexport default Picker;\n//# sourceMappingURL=Picker.js.map","var _excluded = [\"color\", \"UNSAFE_style\"];\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n/* eslint-disable react/jsx-props-no-spreading */\nimport { forwardRef, useMemo } from 'react';\nimport { Heading as SpectrumHeading } from '@adobe/react-spectrum';\nimport { colorValueStyle } from \"../theme/colorUtils.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\n/**\n * A Heading component that re-exports the Spectrum Heading component.\n * It overrides ColorValues to accept CSS color strings and custom\n * variable names from our color paletee and semantic colors.\n *\n * @param props The props for the Heading component\n * @returns The Heading component\n *\n */\n\nexport var Heading = /*#__PURE__*/forwardRef((props, forwardedRef) => {\n var {\n color,\n UNSAFE_style\n } = props,\n rest = _objectWithoutProperties(props, _excluded);\n var style = useMemo(() => _objectSpread(_objectSpread({}, UNSAFE_style), {}, {\n color: colorValueStyle(color)\n }), [color, UNSAFE_style]);\n return /*#__PURE__*/_jsx(SpectrumHeading, _objectSpread(_objectSpread({}, rest), {}, {\n ref: forwardedRef,\n UNSAFE_style: style\n }));\n});\nHeading.displayName = 'Heading';\nexport default Heading;\n//# sourceMappingURL=Heading.js.map","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nimport React, { PureComponent } from 'react';\nimport classNames from 'classnames';\nimport Log from '@deephaven/log';\nimport { PromiseUtils } from '@deephaven/utils';\nimport ContextActionUtils from \"./ContextActionUtils.js\";\nimport ContextMenuItem from \"./ContextMenuItem.js\";\nimport LoadingSpinner from \"../LoadingSpinner.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { Fragment as _Fragment } from \"react/jsx-runtime\";\nvar log = Log.module('ContextMenu');\n/** Do not use this class directly. Use ContextMenuRoot and ContextActions instead. */\nclass ContextMenu extends PureComponent {\n static handleContextMenu(e) {\n if (e.metaKey) {\n return;\n }\n e.stopPropagation();\n e.preventDefault();\n }\n constructor(props) {\n super(props);\n _defineProperty(this, \"container\", void 0);\n _defineProperty(this, \"oldFocus\", void 0);\n _defineProperty(this, \"activeSubMenuRef\", void 0);\n _defineProperty(this, \"subMenuTimer\", void 0);\n _defineProperty(this, \"rAF\", void 0);\n _defineProperty(this, \"initialPosition\", void 0);\n this.handleBlur = this.handleBlur.bind(this);\n this.handleCloseSubMenu = this.handleCloseSubMenu.bind(this);\n this.handleKeyDown = this.handleKeyDown.bind(this);\n this.handleMenuItemClick = this.handleMenuItemClick.bind(this);\n this.handleMenuItemContextMenu = this.handleMenuItemContextMenu.bind(this);\n this.handleMenuItemMouseMove = this.handleMenuItemMouseMove.bind(this);\n this.handleMouseLeave = this.handleMouseLeave.bind(this);\n this.handleWindowResize = this.handleWindowResize.bind(this);\n this.container = /*#__PURE__*/React.createRef();\n this.oldFocus = document.activeElement;\n this.activeSubMenuRef = /*#__PURE__*/React.createRef();\n this.subMenuTimer = 0;\n this.rAF = 0;\n this.initialPosition = {\n top: props.top,\n left: props.left\n };\n this.state = {\n menuItems: [],\n pendingItems: [],\n activeSubMenu: null,\n hasOverflow: false,\n subMenuTop: null,\n subMenuLeft: null,\n subMenuParentWidth: 0,\n subMenuParentHeight: 0,\n keyboardIndex: -1,\n mouseIndex: -1\n };\n }\n componentDidMount() {\n this.initMenu();\n this.verifyPosition();\n window.addEventListener('resize', this.handleWindowResize);\n\n // rAF is needed to wait for a submenus popper to be created before\n // attempting to set focus, however on a quick mount/unmount when\n // mousing past an item, the submenu could be unmounted before the\n // async rAF finishes, so it is cancelled in willUnmount()\n this.rAF = window.requestAnimationFrame(() => {\n var _this$container$curre;\n (_this$container$curre = this.container.current) === null || _this$container$curre === void 0 ? void 0 : _this$container$curre.focus();\n var {\n onMenuOpened\n } = this.props;\n onMenuOpened(this);\n });\n }\n componentDidUpdate(prevProps, prevState) {\n var {\n actions\n } = this.props;\n var {\n activeSubMenu\n } = this.state;\n if (activeSubMenu !== prevState.activeSubMenu) {\n if (activeSubMenu == null) {\n var _this$container$curre2;\n // close sub menu, refocus parent menu\n (_this$container$curre2 = this.container.current) === null || _this$container$curre2 === void 0 ? void 0 : _this$container$curre2.focus();\n } else {\n // open sub menu, set its initial position\n this.setActiveSubMenuPosition();\n }\n }\n if (prevProps.actions !== actions) {\n this.initMenu();\n if (this.container.current == null || !this.container.current.contains(document.activeElement)) {\n var _this$container$curre3;\n (_this$container$curre3 = this.container.current) === null || _this$container$curre3 === void 0 ? void 0 : _this$container$curre3.focus();\n }\n }\n this.verifyPosition();\n }\n componentWillUnmount() {\n this.cancelPromises();\n window.removeEventListener('resize', this.handleWindowResize);\n cancelAnimationFrame(this.rAF);\n }\n getKeyboardIndex() {\n var {\n options\n } = this.props;\n if (options.separateKeyboardMouse !== undefined && options.separateKeyboardMouse) {\n var {\n keyboardIndex\n } = this.state;\n return keyboardIndex;\n }\n return this.getMouseIndex();\n }\n setKeyboardIndex(index) {\n var {\n options\n } = this.props;\n if (options.separateKeyboardMouse !== undefined && options.separateKeyboardMouse) {\n this.setState({\n keyboardIndex: index\n });\n } else {\n this.setMouseIndex(index);\n }\n }\n getMouseIndex() {\n var {\n mouseIndex\n } = this.state;\n return mouseIndex;\n }\n setMouseIndex(index) {\n this.setState({\n mouseIndex: index\n });\n }\n initMenu() {\n // cancel any pending close and promises\n this.cancelPromises();\n cancelAnimationFrame(this.rAF);\n var {\n options\n } = this.props;\n var keyboardIndex = options.initialKeyboardIndex;\n if (keyboardIndex === undefined) {\n keyboardIndex = -1;\n }\n var {\n actions\n } = this.props;\n var menuItems = ContextActionUtils.getMenuItems(actions);\n var nonPromiseItems = [];\n for (var i = menuItems.length - 1; i >= 0; i -= 1) {\n var menuItem = menuItems[i];\n if (menuItem instanceof Promise) {\n this.initMenuPromise(menuItem);\n } else {\n nonPromiseItems.push(menuItem);\n }\n }\n this.setState({\n mouseIndex: -1,\n keyboardIndex,\n activeSubMenu: null,\n menuItems: ContextActionUtils.sortActions(nonPromiseItems)\n });\n }\n initMenuPromise(promise) {\n // make all promises cancellable\n var cancellablePromise = PromiseUtils.makeCancelable(promise);\n this.setState(state => ({\n pendingItems: state.pendingItems.concat(cancellablePromise)\n }));\n cancellablePromise.then(resolvedMenuItems => {\n this.setState(state => {\n var index = state.pendingItems.indexOf(cancellablePromise);\n if (index >= 0) {\n var pendingItems = state.pendingItems.slice();\n pendingItems.splice(index, 1);\n return {\n menuItems: ContextActionUtils.sortActions(state.menuItems.concat(resolvedMenuItems)),\n pendingItems\n };\n }\n // This item is stale, don't update the menu\n return null;\n });\n }, error => {\n if (PromiseUtils.isCanceled(error)) {\n return; // Canceled promise is ignored\n }\n\n // remove failed item from pending list\n this.setState(state => {\n var index = state.pendingItems.indexOf(cancellablePromise);\n if (index >= 0) {\n var pendingItems = state.pendingItems.slice();\n pendingItems.splice(index, 1);\n return {\n pendingItems\n };\n }\n return null;\n });\n\n // Log the error\n log.error(error);\n });\n }\n cancelPromises() {\n var {\n pendingItems\n } = this.state;\n pendingItems.map(item => item.cancel());\n }\n\n /**\n * Sets the unverfied start position of a submenu. Submenu then self-verfies\n * its own position and potentially reports back a new position.\n */\n setActiveSubMenuPosition() {\n if (this.activeSubMenuRef.current === null) return;\n var parentRect = this.activeSubMenuRef.current.getBoundingClientRect();\n\n // intentionally rect.right, we want the sub menu to start at the right edge of the current menu\n this.setState({\n subMenuTop: parentRect.top,\n subMenuLeft: parentRect.right,\n subMenuParentHeight: parentRect.height,\n subMenuParentWidth: parentRect.width\n });\n }\n\n /**\n * Verifies the position of this menu in relation to the parent to make sure it's on screen.\n * Will update the top left state (updatePosition) if necessary (causing a re-render)\n * By default it tries to top-align with parent, at the right side of the parent.\n * Because we aren't a native context menu and can't escape window bounds, we also do\n * somethings to better fit on screen, such as the \"nudge\" offset position, and further\n * allow overflow scrolling for large menus in a small window.\n */\n verifyPosition() {\n var _this$container$curre4, _this$container$curre5, _this$container$curre6, _this$container$curre7;\n var {\n options,\n updatePosition,\n subMenuParentWidth,\n subMenuParentHeight,\n top: oldTop,\n left: oldLeft\n } = this.props;\n if (!this.container.current || options.doNotVerifyPosition != null && options.doNotVerifyPosition) {\n return;\n }\n\n // initial position is used rather than current position,\n // as the number of menu items can change (actions can bubble)\n // and menu should always be positioned relative to spawn point\n var {\n top,\n left\n } = this.initialPosition;\n var {\n width,\n height\n } = (_this$container$curre4 = (_this$container$curre5 = this.container.current) === null || _this$container$curre5 === void 0 ? void 0 : _this$container$curre5.getBoundingClientRect()) !== null && _this$container$curre4 !== void 0 ? _this$container$curre4 : {\n width: 0,\n height: 0\n };\n var hasOverflow = ((_this$container$curre6 = (_this$container$curre7 = this.container.current) === null || _this$container$curre7 === void 0 ? void 0 : _this$container$curre7.scrollHeight) !== null && _this$container$curre6 !== void 0 ? _this$container$curre6 : 0) > window.innerHeight;\n if (height === 0 || width === 0) {\n // We don't have a height or width yet, don't bother doing anything\n return;\n }\n\n // does it fit below?\n if (top + height > window.innerHeight) {\n // can it be flipped to above? include offset if submenu (defaults to 0 if not submenu)\n if (top - height - subMenuParentHeight > 0) {\n // flip like a native menu would\n top -= height - subMenuParentHeight;\n } else {\n // still doesnt fit? okay, position at bottom edge\n top = window.innerHeight - height;\n }\n }\n if (left + width > window.innerWidth) {\n // less picky about left right positioning, just keep it going off to right\n left = left - width - subMenuParentWidth;\n }\n if (oldLeft !== left || oldTop !== top) {\n // parent owns positioning as single source of truth, ask to update props\n this.setState({\n hasOverflow\n });\n updatePosition(top, left);\n }\n }\n\n // since window resize doesn't trigger blur, listen and close the menu\n handleWindowResize() {\n if (!this.container.current) {\n return;\n }\n this.closeMenu(true);\n }\n handleBlur(e) {\n if (!this.container.current) {\n log.warn('Container is null!');\n return;\n }\n if (!this.container.current.contains(e.relatedTarget)) {\n var element = e.relatedTarget;\n var isContextMenuChild = false;\n while (element && !isContextMenuChild) {\n isContextMenuChild = element.hasAttribute('data-dh-context-menu');\n element = element.parentElement;\n }\n if (!isContextMenuChild) {\n // close all submenus on blur\n this.closeMenu(true);\n }\n }\n }\n\n /** Returns whether the specified key should remove the menu. Depends on the side the parent is on. */\n isEscapeKey(key) {\n var {\n left\n } = this.props;\n return key === 'Escape' || left < 0 && key === 'ArrowRight' || key === 'ArrowLeft';\n }\n handleKeyDown(e) {\n var {\n menuItems\n } = this.state;\n var oldFocus = this.getKeyboardIndex();\n var newFocus = oldFocus;\n var openSubMenu = false;\n if (e.key === 'Enter' || e.key === ' ') {\n if (oldFocus >= 0 && oldFocus < menuItems.length) {\n this.handleMenuItemClick(menuItems[oldFocus], e);\n }\n return;\n }\n if (e.key === 'ArrowRight') {\n if (oldFocus >= 0 && oldFocus <= menuItems.length) {\n openSubMenu = true;\n } else {\n newFocus = 0;\n }\n } else if (this.isEscapeKey(e.key)) {\n newFocus = null;\n } else if (e.key === 'ArrowUp' || e.shiftKey && e.key === 'Tab') {\n newFocus = ContextActionUtils.getNextMenuItem(newFocus, -1, menuItems);\n } else if (e.key === 'ArrowDown' || e.key === 'Tab') {\n newFocus = ContextActionUtils.getNextMenuItem(newFocus, 1, menuItems);\n }\n if (openSubMenu) {\n this.openSubMenu(oldFocus);\n e.preventDefault();\n e.stopPropagation();\n return;\n }\n if (oldFocus !== newFocus) {\n if (newFocus !== null) {\n this.setKeyboardIndex(newFocus);\n } else {\n this.closeMenu();\n if (this.oldFocus instanceof HTMLElement) {\n this.oldFocus.focus();\n }\n }\n e.preventDefault();\n e.stopPropagation();\n }\n }\n openSubMenu(index) {\n var {\n menuItems,\n activeSubMenu\n } = this.state;\n var newSubMenu = menuItems[index].actions ? index : null;\n if (activeSubMenu === newSubMenu) return;\n this.setState({\n activeSubMenu: newSubMenu,\n subMenuTop: null,\n subMenuLeft: null\n });\n }\n closeMenu() {\n var closeAll = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n var {\n closeMenu,\n onMenuClosed\n } = this.props;\n cancelAnimationFrame(this.rAF);\n this.rAF = window.requestAnimationFrame(() => {\n closeMenu(closeAll);\n onMenuClosed(this);\n });\n }\n closeSubMenu() {\n this.setState({\n activeSubMenu: null\n });\n }\n handleCloseSubMenu(closeAllMenus) {\n if (closeAllMenus) {\n this.closeMenu(true);\n } else {\n this.closeSubMenu();\n }\n }\n handleMenuItemClick(menuItem, e) {\n e.preventDefault();\n e.stopPropagation();\n var {\n menuItems\n } = this.state;\n if (menuItem != null && (menuItem.disabled === undefined || !menuItem.disabled)) {\n if (menuItem.actions != null) {\n this.openSubMenu(menuItems.indexOf(menuItem));\n } else if (menuItem.action != null) {\n menuItem.action(e.nativeEvent);\n this.closeMenu(true);\n }\n }\n }\n handleMenuItemContextMenu(menuItem, e) {\n if (e.metaKey) {\n return;\n }\n this.handleMenuItemClick(menuItem, e);\n }\n handleMenuItemMouseMove(menuItem) {\n var {\n menuItems\n } = this.state;\n var focusIndex = menuItems.indexOf(menuItem);\n this.setMouseIndex(focusIndex);\n if (focusIndex >= 0 && focusIndex < menuItems.length && (menuItem.disabled === undefined || !menuItem.disabled)) {\n this.openSubMenu(focusIndex);\n }\n }\n handleMouseLeave() {\n this.setMouseIndex(-1);\n }\n render() {\n var menuItemElements = [];\n var {\n top,\n left\n } = this.props;\n var {\n activeSubMenu,\n hasOverflow,\n keyboardIndex,\n menuItems,\n mouseIndex,\n pendingItems,\n subMenuTop,\n subMenuLeft,\n subMenuParentWidth,\n subMenuParentHeight\n } = this.state;\n for (var i = 0; i < menuItems.length; i += 1) {\n var menuItem = menuItems[i];\n if (i > 0 && menuItem.group !== menuItems[i - 1].group) {\n menuItemElements.push( /*#__PURE__*/_jsx(\"hr\", {}, \"\".concat(i, \".separator\")));\n }\n var menuItemElement = /*#__PURE__*/_jsx(ContextMenuItem, {\n ref: activeSubMenu === i ? this.activeSubMenuRef : null,\n isKeyboardSelected: keyboardIndex === i,\n isMouseSelected: mouseIndex === i,\n menuItem: menuItem,\n closeMenu: this.handleCloseSubMenu,\n onMenuItemClick: this.handleMenuItemClick,\n onMenuItemMouseMove: this.handleMenuItemMouseMove,\n onMenuItemContextMenu: this.handleMenuItemContextMenu\n }, i);\n menuItemElements.push(menuItemElement);\n }\n var pendingElement = null;\n if (pendingItems.length > 0) {\n pendingElement = /*#__PURE__*/_jsx(\"div\", {\n className: \"loading\",\n children: /*#__PURE__*/_jsx(LoadingSpinner, {\n className: \"loading-spinner-vertical-align\"\n })\n });\n }\n var {\n menuStyle,\n 'data-testid': dataTestId\n } = this.props;\n\n // don't show submenu until it has an position initialized\n var showSubmenu = activeSubMenu !== null && subMenuTop !== null && subMenuLeft !== null;\n return /*#__PURE__*/_jsxs(_Fragment, {\n children: [/*#__PURE__*/_jsxs(\"div\", {\n className: classNames({\n 'has-overflow': hasOverflow\n }, 'context-menu-container'),\n style: _objectSpread({\n top,\n left\n }, menuStyle),\n ref: this.container,\n \"data-dh-context-menu\": true,\n onBlur: this.handleBlur,\n onKeyDown: this.handleKeyDown,\n onMouseLeave: this.handleMouseLeave,\n onContextMenu: ContextMenu.handleContextMenu,\n role: \"menuitem\",\n tabIndex: 0,\n \"data-testid\": dataTestId,\n children: [menuItemElements, pendingElement]\n }), showSubmenu && activeSubMenu !== null && subMenuTop !== null && subMenuLeft !== null && /*#__PURE__*/_jsx(ContextMenu, {\n actions: menuItems[activeSubMenu].actions || [],\n closeMenu: this.handleCloseSubMenu,\n top: subMenuTop,\n left: subMenuLeft,\n updatePosition: (verifiedTop, verifiedLeft) => {\n this.setState({\n subMenuTop: verifiedTop,\n subMenuLeft: verifiedLeft\n });\n },\n subMenuParentWidth: subMenuParentWidth,\n subMenuParentHeight: subMenuParentHeight\n }, \"sub-\".concat(activeSubMenu))]\n });\n }\n}\n_defineProperty(ContextMenu, \"defaultProps\", {\n subMenuParentWidth: 0,\n subMenuParentHeight: 0,\n closeMenu() {\n // no-op\n },\n onMenuOpened() {\n // no-op\n },\n onMenuClosed() {\n // no-op\n },\n options: {},\n menuStyle: {},\n 'data-testid': undefined\n});\nexport default ContextMenu;\n//# sourceMappingURL=ContextMenu.js.map","function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nimport React, { Component } from 'react';\nimport classNames from 'classnames';\nimport ContextMenu from \"./ContextMenu.js\";\nimport ContextActionUtils from \"./ContextActionUtils.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\n/**\n * Put at your root container, any contextmenu events that are unhandled in the root container will be handled by this\n */\nclass ContextMenuRoot extends Component {\n constructor(props) {\n super(props);\n _defineProperty(this, \"container\", void 0);\n _defineProperty(this, \"openMenu\", void 0);\n this.handleMenuClose = this.handleMenuClose.bind(this);\n this.handleContextMenu = this.handleContextMenu.bind(this);\n this.container = /*#__PURE__*/React.createRef();\n this.openMenu = /*#__PURE__*/React.createRef();\n this.state = {\n actions: null,\n left: 0,\n top: 0\n };\n }\n componentDidMount() {\n var _this$container$curre;\n if ((_this$container$curre = this.container.current) !== null && _this$container$curre !== void 0 && _this$container$curre.parentElement) {\n this.container.current.parentElement.addEventListener('contextmenu', this.handleContextMenu);\n }\n }\n componentWillUnmount() {\n var _this$container$curre2;\n if ((_this$container$curre2 = this.container.current) !== null && _this$container$curre2 !== void 0 && _this$container$curre2.parentElement) {\n this.container.current.parentElement.removeEventListener('contextmenu', this.handleContextMenu);\n }\n }\n handleContextMenu(e) {\n if (!this.container.current) {\n return;\n }\n var parentRect = this.container.current.getBoundingClientRect();\n var top = e.clientY - parentRect.top;\n var left = e.clientX - parentRect.left;\n var {\n actions\n } = this.state;\n\n // Context menu is open and user clicked on the context-root blocking layer\n // Mac and Linux appear to trigger contextmenu events on mousedown vs. mouseup on Windows\n // Mouseup on Windows triggers blur before contextmenu which effectively does what this path does\n if (actions != null && e.target === this.container.current) {\n // re-emit right clicks that hit the context-root blocking layer\n // while we already have a custom context menu open\n e.preventDefault();\n\n // Set actions to null removes the menu\n // That allows a new menu to be opened on a different element so initial position is set properly\n // Otherwise the instance of this menu may be reused\n // A new contextmenu event is triggered on the element at the location the user clicked on the blocking layer\n this.setState({\n actions: null\n }, () => {\n var element = document.elementFromPoint(left, top); // x y\n\n var mouseEvent = new MouseEvent('contextmenu', {\n clientX: e.clientX,\n clientY: e.clientY,\n bubbles: true,\n cancelable: true\n });\n element === null || element === void 0 ? void 0 : element.dispatchEvent(mouseEvent);\n });\n return;\n }\n if (!ContextActionUtils.isContextActionEvent(e)) {\n // Open native menu if no custom context actions\n return;\n }\n if (e.metaKey || e.ctrlKey) {\n // debug escape hatch to native menu\n return;\n }\n var contextActions = ContextActionUtils.getMenuItems(e.contextActions);\n if (contextActions.length === 0) {\n // No actions after filtering. Use native menu\n return;\n }\n\n // new clicks, set actions\n e.preventDefault();\n this.setState({\n actions: contextActions,\n top,\n left\n });\n }\n handleMenuClose(menu) {\n if (menu === this.openMenu.current) {\n this.setState({\n actions: null\n });\n }\n }\n render() {\n var menu = null;\n var {\n 'data-testid': dataTestId\n } = this.props;\n var {\n actions,\n top,\n left\n } = this.state;\n if (actions) {\n menu = /*#__PURE__*/_jsx(ContextMenu, {\n ref: this.openMenu,\n actions: actions,\n onMenuClosed: this.handleMenuClose,\n top: top,\n left: left,\n updatePosition: (verifiedTop, verifiedLeft) => {\n this.setState({\n top: verifiedTop,\n left: verifiedLeft\n });\n },\n \"data-testid\": dataTestId\n });\n }\n return /*#__PURE__*/_jsx(\"div\", {\n className: classNames('context-menu-root', {\n active: actions\n }),\n ref: this.container,\n children: menu\n });\n }\n}\nexport default ContextMenuRoot;\n//# sourceMappingURL=ContextMenuRoot.js.map","function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\n// Port of https://github.com/react-bootstrap/react-bootstrap/blob/master/src/Collapse.js\nimport React, { Component } from 'react';\nimport classNames from 'classnames';\nimport PropTypes from 'prop-types';\nimport { CSSTransition } from 'react-transition-group';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nclass Collapse extends Component {\n static handleEnter(elemParam) {\n var elem = elemParam;\n elem.style.height = '0';\n }\n static handleEntering(elemParam) {\n var elem = elemParam;\n elem.style.height = \"\".concat(Collapse.getHeight(elem), \"px\");\n }\n static handleExiting(elemParam) {\n var elem = elemParam;\n elem.style.height = '0';\n }\n static handleExit(elemParam) {\n var elem = elemParam;\n elem.style.height = \"\".concat(Collapse.getHeight(elem), \"px\");\n }\n static getHeight(elem) {\n var scrollBarWidth = elem.scrollWidth - elem.clientWidth;\n return elem.scrollHeight - scrollBarWidth;\n }\n constructor(props) {\n super(props);\n this.handleEntered = this.handleEntered.bind(this);\n }\n handleEntered(elemParam) {\n var elem = elemParam;\n elem.style.height = '';\n var {\n autoFocusOnShow\n } = this.props;\n if (autoFocusOnShow !== undefined && autoFocusOnShow) {\n var input = elem.querySelector('input, select, textarea');\n if (input != null) {\n input.focus();\n }\n }\n }\n render() {\n var {\n children: _children,\n className,\n in: inTransition,\n 'data-testid': dataTestId\n } = this.props;\n return /*#__PURE__*/_jsx(CSSTransition, {\n in: inTransition,\n classNames: {\n enterActive: 'collapsing',\n enterDone: 'collapse show',\n exitActive: 'collapsing',\n exitDone: 'collapse'\n },\n onEnter: Collapse.handleEnter,\n onEntering: Collapse.handleEntering,\n onEntered: this.handleEntered,\n onExit: Collapse.handleExit,\n onExiting: Collapse.handleExiting,\n timeout: 350,\n children: state => /*#__PURE__*/_jsx(\"div\", {\n className: classNames({\n collapse: state === 'exited'\n }, className),\n \"data-testid\": dataTestId,\n children: _children\n })\n });\n }\n}\n_defineProperty(Collapse, \"propTypes\", {\n className: PropTypes.string,\n in: PropTypes.bool.isRequired,\n children: PropTypes.node.isRequired,\n autoFocusOnShow: PropTypes.bool,\n 'data-testid': PropTypes.string\n});\n_defineProperty(Collapse, \"defaultProps\", {\n className: '',\n autoFocusOnShow: false,\n 'data-testid': undefined\n});\nexport default Collapse;\n//# sourceMappingURL=Collapse.js.map","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nimport React, { memo } from 'react';\nimport classNames from 'classnames';\nimport { Draggable } from 'react-beautiful-dnd';\nimport { vsClose } from '@deephaven/icons';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport Button from \"../Button.js\";\nimport ContextActions from \"../context-actions/ContextActions.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nvar NavTab = /*#__PURE__*/memo(_ref => {\n var {\n tab,\n onClose,\n onSelect,\n isActive,\n activeRef,\n index,\n isDraggable,\n contextActions\n } = _ref;\n var {\n key,\n isClosable = onClose != null,\n title,\n icon\n } = tab;\n var iconElem;\n if (icon != null) {\n iconElem = /*#__PURE__*/React.isValidElement(icon) ? icon : /*#__PURE__*/_jsx(FontAwesomeIcon, {\n icon: icon\n });\n }\n return /*#__PURE__*/_jsx(Draggable, {\n draggableId: key,\n index: index,\n isDragDisabled: !isDraggable,\n children: (provided, snapshot) => /*#__PURE__*/_jsxs(\"div\", {\n className: \"context-menu-wrapper\",\n ref: isActive ? activeRef : null,\n children: [/*#__PURE__*/_jsxs(\"div\", _objectSpread(_objectSpread(_objectSpread({\n ref: provided.innerRef\n // eslint-disable-next-line react/jsx-props-no-spreading\n }, provided.draggableProps), provided.dragHandleProps), {}, {\n className: classNames('btn btn-link btn-nav-tab', {\n active: isActive\n }, {\n dragging: snapshot.isDragging\n }),\n \"data-testid\": \"btn-nav-tab-\".concat(title),\n role: \"tab\",\n tabIndex: 0,\n onAuxClick: e => {\n // Middle mouse button was clicked, and no buttons remain pressed\n if (isClosable && e.button === 1 && e.buttons === 0) {\n onClose === null || onClose === void 0 ? void 0 : onClose(key);\n }\n },\n onClick: e => {\n // have to have seperate check onClick for Safari not supporting AuxClick\n if (isClosable && e.button === 1 && e.buttons === 0) {\n onClose === null || onClose === void 0 ? void 0 : onClose(key);\n return;\n }\n // Left mouse button was clicked, and no buttons remain pressed\n if (e.button === 0 && e.buttons === 0) {\n // focus is normally set on mousedown, but dnd calls preventDefault for drag purposes\n // so we can call focus on the firing of the actual click event manually\n e.target.focus();\n onSelect(key);\n }\n },\n onKeyPress: event => {\n if (event.key === 'Enter') onSelect(key);\n },\n children: [iconElem, title, isClosable && /*#__PURE__*/_jsx(Button, {\n kind: \"ghost\",\n className: \"btn-nav-tab-close\",\n onClick: event => {\n onClose === null || onClose === void 0 ? void 0 : onClose(key);\n event.stopPropagation();\n event.preventDefault();\n },\n icon: vsClose,\n tooltip: \"Close\"\n })]\n })), /*#__PURE__*/_jsx(ContextActions, {\n actions: contextActions\n })]\n })\n }, key);\n});\nNavTab.displayName = 'NavTab';\nexport default NavTab;\n//# sourceMappingURL=NavTab.js.map","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nimport React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport classNames from 'classnames';\nimport clamp from 'lodash.clamp';\nimport { DragDropContext, Droppable } from 'react-beautiful-dnd';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { vsChevronRight, vsChevronLeft } from '@deephaven/icons';\nimport { useResizeObserver } from '@deephaven/react-hooks';\nimport DragUtils from \"../DragUtils.js\";\nimport Button from \"../Button.js\";\nimport NavTab from \"./NavTab.js\";\nimport \"./NavTabList.css\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\n// mouse hold timeout to act as hold instead of click\nvar CLICK_TIMEOUT = 500;\n\n// mouse hold acceleration\nvar START_SPEED = 0.01;\nvar ACCELERATION = 0.0005;\nfunction isScrolledLeft(element) {\n return element.scrollLeft === 0;\n}\nfunction isScrolledRight(element) {\n return element.scrollLeft + element.clientWidth === element.scrollWidth || element.scrollWidth === 0;\n}\nfunction makeBaseContextActions(tab, tabs, onClose) {\n var {\n isClosable = false,\n key\n } = tab;\n var contextActions = [];\n if (isClosable && onClose != null) {\n contextActions.push({\n title: 'Close',\n order: 10,\n group: 20,\n action: () => {\n onClose(key);\n }\n });\n var disabled = true;\n for (var i = tabs.length - 1; i > 0; i -= 1) {\n if (tabs[i].key === tab.key) break;\n if (tabs[i].isClosable === true) {\n disabled = false;\n break;\n }\n }\n contextActions.push({\n title: 'Close to the Right',\n order: 20,\n group: 20,\n action: () => {\n for (var _i = tabs.length - 1; _i > 0; _i -= 1) {\n if (tabs[_i].key === key) break;\n if (tabs[_i].isClosable === true) onClose(tabs[_i].key);\n }\n },\n disabled\n });\n contextActions.push({\n title: 'Close All',\n order: 30,\n group: 20,\n action: () => {\n tabs.forEach(t => {\n if (t.isClosable === true) onClose(t.key);\n });\n }\n });\n }\n return contextActions;\n}\nfunction NavTabList(_ref) {\n var {\n activeKey,\n tabs,\n onSelect,\n onReorder,\n onClose,\n makeContextActions\n } = _ref;\n var containerRef = useRef();\n var [isOverflowing, setIsOverflowing] = useState(true);\n var [disableScrollLeft, setDisableScrollLeft] = useState(true);\n var [disableScrollRight, setDisableScrollRight] = useState(true);\n var handleResize = useCallback(() => {\n if (containerRef.current == null) {\n return;\n }\n if (containerRef.current.clientWidth < containerRef.current.scrollWidth && tabs.length > 0) {\n setIsOverflowing(true);\n } else {\n setIsOverflowing(false);\n }\n setDisableScrollLeft(isScrolledLeft(containerRef.current));\n setDisableScrollRight(isScrolledRight(containerRef.current));\n }, [tabs]);\n useResizeObserver(containerRef.current, handleResize);\n var onDragEnd = useCallback(result => {\n DragUtils.stopDragging();\n\n // dropped outside the list\n if (!result.destination) {\n return;\n }\n onReorder === null || onReorder === void 0 ? void 0 : onReorder(result.source.index, result.destination.index);\n }, [onReorder]);\n var handleScroll = useCallback(() => {\n if (containerRef.current == null) {\n return;\n }\n var shouldDisableScrollLeft = isScrolledLeft(containerRef.current);\n if (shouldDisableScrollLeft !== disableScrollLeft) {\n setDisableScrollLeft(shouldDisableScrollLeft);\n }\n var shouldDisableScrollRight = isScrolledRight(containerRef.current);\n if (shouldDisableScrollRight !== disableScrollRight) {\n setDisableScrollRight(shouldDisableScrollRight);\n }\n }, [disableScrollLeft, disableScrollRight]);\n var continuousScrollRef = useRef({\n cancelClick: false\n });\n var handleLeftClick = useCallback(() => {\n if (containerRef.current == null || continuousScrollRef.current.cancelClick) {\n return;\n }\n var {\n children\n } = containerRef.current;\n for (var i = children.length - 1; i >= 0; i -= 1) {\n var child = children[i];\n // Subtract 5px from left edge to account for rounding of offset values\n if (child.offsetLeft < containerRef.current.scrollLeft - 5) {\n child.scrollIntoView({\n behavior: 'smooth',\n block: 'nearest',\n inline: 'start'\n });\n return;\n }\n }\n }, []);\n var handleRightClick = useCallback(() => {\n if (containerRef.current == null || continuousScrollRef.current.cancelClick) {\n return;\n }\n var {\n children\n } = containerRef.current;\n for (var i = 0; i < children.length; i += 1) {\n var child = children[i];\n // Add 5px to right edge to account for rounding of offset values\n if (child.offsetLeft + 5 > containerRef.current.scrollLeft + containerRef.current.offsetWidth) {\n child.scrollIntoView({\n behavior: 'smooth',\n block: 'nearest',\n inline: 'end'\n });\n return;\n }\n }\n }, []);\n\n /**\n * Recurively called after initial timeout on mousedown. Continuously scroll with acceleration.\n * Cancelled by mouseup handler cancelling the animationFrame.\n * @param direction of scroll, left or right\n * @param startX starting position of scroll\n * @param deltaX delta from intial startX calculated recursively\n * @param prevTimestamp called on subsequent delta frames\n */\n var handleMouseRepeat = useCallback(function (direction, startX) {\n var deltaX = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;\n var prevTimestamp = arguments.length > 3 ? arguments[3] : undefined;\n var container = containerRef.current;\n if (container == null) {\n return;\n }\n continuousScrollRef.current.cancelClick = true;\n if (direction === 'left') {\n // eslint-disable-next-line no-param-reassign\n container.scrollLeft = startX - deltaX;\n } else if (direction === 'right') {\n // eslint-disable-next-line no-param-reassign\n container.scrollLeft = startX + deltaX;\n }\n\n // eslint-disable-next-line no-param-reassign\n continuousScrollRef.current.rAF = requestAnimationFrame(timestamp => {\n var startTime = prevTimestamp !== null && prevTimestamp !== void 0 ? prevTimestamp : timestamp;\n var deltaTime = timestamp - startTime;\n var newDeltaX = START_SPEED * deltaTime + 0.5 * ACCELERATION * deltaTime ** 2;\n newDeltaX = Math.min(newDeltaX, container.scrollWidth);\n // scrollLeft enforces a limit but no point letting delta increment beyond scrollWidth\n\n handleMouseRepeat(direction, startX, newDeltaX, startTime);\n });\n }, []);\n var endContinuousScroll = useCallback(() => {\n var {\n holdTimer,\n rAF\n } = continuousScrollRef.current;\n if (holdTimer != null) {\n clearTimeout(holdTimer);\n continuousScrollRef.current.holdTimer = undefined;\n }\n if (rAF != null) {\n cancelAnimationFrame(rAF);\n continuousScrollRef.current.rAF = undefined;\n }\n window.removeEventListener('mouseup', endContinuousScroll);\n }, []);\n useEffect(() => () => window.removeEventListener('mouseup', endContinuousScroll), [endContinuousScroll]);\n var handleMouseDown = useCallback(direction => {\n if (containerRef.current != null) {\n continuousScrollRef.current.holdTimer = window.setTimeout(handleMouseRepeat, CLICK_TIMEOUT, direction, containerRef.current.scrollLeft);\n }\n continuousScrollRef.current.cancelClick = false;\n window.addEventListener('mouseup', endContinuousScroll);\n }, [endContinuousScroll, handleMouseRepeat]);\n var handleMouseDownLeft = useCallback(() => {\n handleMouseDown('left');\n }, [handleMouseDown]);\n var handleMouseDownRight = useCallback(() => {\n handleMouseDown('right');\n }, [handleMouseDown]);\n\n // React binds to the root as a passive listener for wheel\n // This prevents the wheel event from being canceled\n // Bypass React's event system so we can prevent the default behavior\n // https://github.com/facebook/react/issues/14856\n useEffect(function handleWheel() {\n var _containerRef$current;\n var onWheel = e => {\n e.stopPropagation();\n e.preventDefault();\n var nav = e.currentTarget;\n var delta = Math.abs(e.deltaY) > Math.abs(e.deltaX) ? e.deltaY : e.deltaX;\n\n // Scrolling jumps too far sometimes, so clamp to get a smoother scroll\n nav.scrollLeft += clamp(delta, -30, 30);\n };\n (_containerRef$current = containerRef.current) === null || _containerRef$current === void 0 ? void 0 : _containerRef$current.addEventListener('wheel', onWheel);\n return () => {\n var _containerRef$current2;\n (_containerRef$current2 = containerRef.current) === null || _containerRef$current2 === void 0 ? void 0 : _containerRef$current2.removeEventListener('wheel', onWheel);\n };\n }, []);\n var tabContextActionMap = useMemo(() => {\n var tabContextActions = new Map();\n tabs.forEach(tab => {\n var {\n key\n } = tab;\n var contextActions = [() => makeBaseContextActions(tab, tabs, onClose), () => {\n var _makeContextActions;\n return (_makeContextActions = makeContextActions === null || makeContextActions === void 0 ? void 0 : makeContextActions(tab)) !== null && _makeContextActions !== void 0 ? _makeContextActions : [];\n }];\n tabContextActions.set(key, contextActions);\n });\n return tabContextActions;\n }, [makeContextActions, tabs, onClose]);\n var activeTabRef = useRef(null);\n var activeTab = tabs.find(tab => tab.key === activeKey);\n var navTabs = tabs.map((tab, index) => {\n var {\n key\n } = tab;\n var isActive = tab === activeTab;\n return /*#__PURE__*/_jsx(NavTab, {\n tab: tab,\n index: index,\n isActive: isActive,\n activeRef: activeTabRef,\n onSelect: onSelect,\n onClose: onClose,\n isDraggable: onReorder != null,\n contextActions: tabContextActionMap.get(key)\n }, key);\n });\n useEffect(\n // Needs to be in a useEffect so the ref is updated\n function scrollActiveTabIntoView() {\n if (activeTabRef.current != null) {\n activeTabRef.current.scrollIntoView({\n block: 'nearest',\n inline: 'nearest'\n });\n }\n }, [activeKey]);\n return /*#__PURE__*/_jsxs(\"nav\", {\n className: \"nav-container\",\n children: [isOverflowing && /*#__PURE__*/_jsx(Button, {\n kind: \"ghost\",\n icon: /*#__PURE__*/_jsx(FontAwesomeIcon, {\n icon: vsChevronLeft,\n transform: \"grow-4\"\n }),\n className: \"tab-controls-btn tab-controls-btn-left\",\n tooltip: \"Scroll left\",\n onClick: handleLeftClick,\n onMouseDown: handleMouseDownLeft,\n disabled: disableScrollLeft\n }), /*#__PURE__*/_jsx(DragDropContext, {\n onDragStart: DragUtils.startDragging,\n onDragEnd: onDragEnd,\n children: /*#__PURE__*/_jsx(Droppable, {\n droppableId: \"droppable-tab-navigation\",\n direction: \"horizontal\",\n children: (provided, snapshot) => /*#__PURE__*/_jsxs(\"div\", _objectSpread(_objectSpread({\n ref: r => {\n if (r == null) {\n return;\n }\n containerRef.current = r;\n provided.innerRef(r);\n }\n // eslint-disable-next-line react/jsx-props-no-spreading\n }, provided.droppableProps), {}, {\n className: classNames('nav nav-tabs', {\n dragging: snapshot.draggingFromThisWith\n }),\n role: \"tablist\",\n onScroll: handleScroll,\n children: [navTabs, provided.placeholder]\n }))\n })\n }), isOverflowing && /*#__PURE__*/_jsx(Button, {\n kind: \"ghost\",\n icon: /*#__PURE__*/_jsx(FontAwesomeIcon, {\n icon: vsChevronRight,\n transform: \"grow-4\"\n }),\n className: \"tab-controls-btn tab-controls-btn-right\",\n tooltip: \"Scroll right\",\n onClick: handleRightClick,\n onMouseDown: handleMouseDownRight,\n disabled: disableScrollRight\n })]\n });\n}\nexport default NavTabList;\n//# sourceMappingURL=NavTabList.js.map","import { useEffect, useMemo } from 'react';\nimport useApi from \"./useApi.js\";\nexport function useCreateClient(serverUrl, options) {\n var api = useApi();\n var client = useMemo(() => new api.CoreClient(serverUrl, options), [api, serverUrl, options]);\n useEffect(() => () => {\n client.disconnect();\n }, [client]);\n return client;\n}\nexport default useCreateClient;\n//# sourceMappingURL=useCreateClient.js.map","import React, { createContext } from 'react';\nimport useCreateClient from \"./useCreateClient.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport var ClientContext = /*#__PURE__*/createContext(null);\n/**\n * ClientBootstrap component. Handles creating the client.\n */\nexport function ClientBootstrap(_ref) {\n var {\n serverUrl,\n options,\n children\n } = _ref;\n var client = useCreateClient(serverUrl, options);\n return /*#__PURE__*/_jsx(ClientContext.Provider, {\n value: client,\n children: children\n });\n}\nexport default ClientBootstrap;\n//# sourceMappingURL=ClientBootstrap.js.map","import { useContextOrThrow } from '@deephaven/react-hooks';\nimport { ClientContext } from \"./ClientBootstrap.js\";\nexport function useClient() {\n return useContextOrThrow(ClientContext, 'No Client available in useClient. Was code wrapped in ClientBootstrap or ClientContext.Provider?');\n}\nexport default useClient;\n//# sourceMappingURL=useClient.js.map","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\nimport { nanoid } from 'nanoid';\nimport Log from '@deephaven/log';\nimport { TimeoutError } from '@deephaven/utils';\nvar log = Log.module('MessageUtils');\nexport var LOGIN_OPTIONS_REQUEST = 'io.deephaven.message.LoginOptions.request';\nexport var SESSION_DETAILS_REQUEST = 'io.deephaven.message.SessionDetails.request';\n\n/**\n * Use a BroadcastChannel for sending messages between tabs, such as when the user logs out.\n */\nexport var BROADCAST_CHANNEL_NAME = 'io.deephaven.broadcast';\n\n/**\n * Event emitted when the user has logged in successfully\n */\nexport var BROADCAST_LOGIN_MESSAGE = 'io.deephaven.broadcast.Login';\n\n/**\n * Event emitted when the user has logged out\n */\nexport var BROADCAST_LOGOUT_MESSAGE = 'io.deephaven.broadcast.Logout';\nexport function isMessage(obj) {\n var message = obj;\n return message != null && typeof message.id === 'string' && typeof message.message === 'string';\n}\nexport function isBroadcastLoginMessage(obj) {\n return isMessage(obj) && obj.message === BROADCAST_LOGIN_MESSAGE;\n}\nexport function isBroadcastLogoutMessage(obj) {\n return isMessage(obj) && obj.message === BROADCAST_LOGOUT_MESSAGE;\n}\nexport function isResponse(obj) {\n var response = obj;\n return response != null && typeof response.id === 'string';\n}\n\n/**\n * Make message object with optional payload\n * @param message Message string\n * @param id Unique message id\n * @param payload Payload to send\n * @returns Message\n */\nexport function makeMessage(message) {\n var id = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : nanoid();\n var payload = arguments.length > 2 ? arguments[2] : undefined;\n return {\n message,\n id,\n payload\n };\n}\n\n/**\n * Make response object for given message id\n * @param messageId Id of the request message to respond to\n * @param payload Payload to respond with\n * @returns Response\n */\nexport function makeResponse(messageId, payload) {\n return {\n id: messageId,\n payload\n };\n}\nexport function getWindowParent() {\n if (window.opener != null) {\n return window.opener;\n }\n if (window.parent != null && window.parent !== window) {\n return window.parent;\n }\n return null;\n}\n\n/**\n * Request data from the parent window and wait for response\n * @param request Request message to send to the parent window\n * @param timeout Timeout in ms\n * @returns Payload of the given type, or undefined\n */\nexport function requestParentResponse(_x) {\n return _requestParentResponse.apply(this, arguments);\n}\nfunction _requestParentResponse() {\n _requestParentResponse = _asyncToGenerator(function* (request) {\n var timeout = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 30000;\n var parent = getWindowParent();\n if (parent == null) {\n throw new Error('window parent is null, unable to send request.');\n }\n return new Promise((resolve, reject) => {\n var timeoutId;\n var id = nanoid();\n var listener = event => {\n var {\n data\n } = event;\n if (!isResponse(data)) {\n log.debug('Ignoring non-deephaven response', data);\n return;\n }\n log.debug('Received message', data);\n if ((data === null || data === void 0 ? void 0 : data.id) !== id) {\n log.debug(\"Ignore message, id doesn't match\", data);\n return;\n }\n window.clearTimeout(timeoutId);\n window.removeEventListener('message', listener);\n resolve(data.payload);\n };\n window.addEventListener('message', listener);\n timeoutId = window.setTimeout(() => {\n window.removeEventListener('message', listener);\n reject(new TimeoutError('Request timed out'));\n }, timeout);\n parent.postMessage(makeMessage(request, id), '*');\n });\n });\n return _requestParentResponse.apply(this, arguments);\n}\n//# sourceMappingURL=MessageUtils.js.map","function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nexport class NoConsolesError extends Error {\n constructor() {\n super(...arguments);\n _defineProperty(this, \"isNoConsolesError\", true);\n }\n}\nexport function isNoConsolesError(error) {\n return error.isNoConsolesError;\n}\nexport default NoConsolesError;\n//# sourceMappingURL=NoConsolesError.js.map","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\nimport Log from '@deephaven/log';\nimport { nanoid } from 'nanoid';\nimport { requestParentResponse, SESSION_DETAILS_REQUEST } from \"./MessageUtils.js\";\nimport NoConsolesError, { isNoConsolesError } from \"./NoConsolesError.js\";\nvar log = Log.module('SessionUtils');\n/**\n * @returns New connection to the server\n */\nexport function createConnection(dh, websocketUrl) {\n log.info(\"Starting connection to '\".concat(websocketUrl, \"'...\"));\n return new dh.IdeConnection(websocketUrl);\n}\n\n/**\n * Create a new session using the default URL\n * @returns A session and config that is ready to use\n */\nexport function createSessionWrapper(_x, _x2, _x3) {\n return _createSessionWrapper.apply(this, arguments);\n}\nfunction _createSessionWrapper() {\n _createSessionWrapper = _asyncToGenerator(function* (dh, connection, details) {\n log.info('Getting console types...');\n var types = yield connection.getConsoleTypes();\n if (types.length === 0) {\n throw new NoConsolesError('No console types available');\n }\n log.info('Available types:', types);\n var type = types[0];\n log.info('Starting session with type', type);\n var session = yield connection.startSession(type);\n var config = {\n type,\n id: nanoid()\n };\n log.info('Console session established', config);\n return {\n session,\n config,\n connection,\n details,\n dh\n };\n });\n return _createSessionWrapper.apply(this, arguments);\n}\nexport function createCoreClient(dh, websocketUrl, options) {\n log.info('createCoreClient', websocketUrl);\n return new dh.CoreClient(websocketUrl, options);\n}\nfunction isSessionDetails(obj) {\n return obj != null && typeof obj === 'object';\n}\nfunction requestParentSessionDetails() {\n return _requestParentSessionDetails.apply(this, arguments);\n}\nfunction _requestParentSessionDetails() {\n _requestParentSessionDetails = _asyncToGenerator(function* () {\n var response = yield requestParentResponse(SESSION_DETAILS_REQUEST);\n if (!isSessionDetails(response)) {\n throw new Error(\"Unexpected session details response: \".concat(response));\n }\n return response;\n });\n return _requestParentSessionDetails.apply(this, arguments);\n}\nexport function getSessionDetails() {\n return _getSessionDetails.apply(this, arguments);\n}\nfunction _getSessionDetails() {\n _getSessionDetails = _asyncToGenerator(function* () {\n var searchParams = new URLSearchParams(window.location.search);\n switch (searchParams.get('authProvider')) {\n case 'parent':\n return requestParentSessionDetails();\n }\n return {};\n });\n return _getSessionDetails.apply(this, arguments);\n}\nexport function loadSessionWrapper(_x4, _x5, _x6) {\n return _loadSessionWrapper.apply(this, arguments);\n}\nfunction _loadSessionWrapper() {\n _loadSessionWrapper = _asyncToGenerator(function* (dh, connection, sessionDetails) {\n var sessionWrapper;\n try {\n sessionWrapper = yield createSessionWrapper(dh, connection, sessionDetails);\n } catch (e) {\n // Consoles may be disabled on the server, but we should still be able to start up and open existing objects\n if (!isNoConsolesError(e)) {\n throw e;\n }\n }\n return sessionWrapper;\n });\n return _loadSessionWrapper.apply(this, arguments);\n}\n//# sourceMappingURL=SessionUtils.js.map","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nimport React, { useEffect, useMemo, useRef, useState } from 'react';\nimport throttle from 'lodash.throttle';\nimport GoldenLayout from '@deephaven/golden-layout';\nimport { useResizeObserver } from '@deephaven/react-hooks';\nimport \"./layout/GoldenLayout.css\";\nimport LayoutUtils from \"./layout/LayoutUtils.js\";\nimport PanelPlaceholder from \"./PanelPlaceholder.js\";\nimport DashboardLayout from \"./DashboardLayout.js\";\nimport \"./Dashboard.css\";\nimport { LayoutManagerContext } from \"./layout/index.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nvar RESIZE_THROTTLE = 100;\nvar DEFAULT_CALLBACK = () => undefined;\nvar EMPTY_OBJECT = Object.freeze({});\nexport function Dashboard(_ref) {\n var {\n id = 'default',\n children,\n emptyDashboard,\n layoutConfig,\n layoutSettings = EMPTY_OBJECT,\n onLayoutConfigChange = DEFAULT_CALLBACK,\n onGoldenLayoutChange = DEFAULT_CALLBACK,\n onLayoutInitialized = DEFAULT_CALLBACK,\n fallbackComponent = PanelPlaceholder,\n hydrate,\n dehydrate,\n panelWrapper\n } = _ref;\n var layoutElement = useRef(null);\n var [isInitialized, setIsInitialized] = useState(false);\n var [layout, setLayout] = useState();\n useEffect(function initDashboard() {\n if (!layoutElement.current) {\n setLayout(undefined);\n return;\n }\n var config = _objectSpread({}, LayoutUtils.makeDefaultLayout());\n if (config.settings === undefined) {\n config.settings = {};\n }\n Object.assign(config.settings, layoutSettings);\n\n // Load our content later after plugins have registered\n config.content = [];\n var newLayout = new GoldenLayout(config, layoutElement.current);\n var onInit = () => {\n newLayout.off('initialised', onInit);\n setIsInitialized(true);\n };\n newLayout.on('initialised', onInit);\n if (fallbackComponent != null) {\n newLayout.setFallbackComponent(fallbackComponent);\n }\n newLayout.init();\n setLayout(newLayout);\n onGoldenLayoutChange(newLayout);\n return () => {\n newLayout.destroy();\n };\n }, [layoutSettings, fallbackComponent, onGoldenLayoutChange, setIsInitialized, setLayout]);\n var handleResize = useMemo(() => throttle(() => {\n if (layout != null && layout.isInitialised) {\n layout === null || layout === void 0 ? void 0 : layout.updateSize();\n }\n }, RESIZE_THROTTLE), [layout]);\n useResizeObserver(layoutElement.current, handleResize);\n return /*#__PURE__*/_jsxs(\"div\", {\n className: \"dashboard-container w-100 h-100\",\n children: [/*#__PURE__*/_jsx(\"div\", {\n className: \"w-100 h-100\",\n ref: layoutElement\n }), isInitialized && layout && /*#__PURE__*/_jsx(LayoutManagerContext.Provider, {\n value: layout,\n children: /*#__PURE__*/_jsx(DashboardLayout, {\n emptyDashboard: emptyDashboard,\n id: id,\n layout: layout,\n layoutConfig: layoutConfig,\n onLayoutChange: onLayoutConfigChange,\n onLayoutInitialized: onLayoutInitialized,\n hydrate: hydrate,\n dehydrate: dehydrate,\n panelWrapper: panelWrapper,\n children: children\n })\n })]\n });\n}\nexport default Dashboard;\n//# sourceMappingURL=Dashboard.js.map","export var CREATE_DASHBOARD = 'CREATE_DASHBOARD';\nexport function stopListenForCreateDashboard(eventHub, handler) {\n try {\n eventHub.off(CREATE_DASHBOARD, handler);\n } catch (_unused) {\n // golden-layout throws if the handler is not found. Instead catch it and no-op\n }\n}\nexport function listenForCreateDashboard(eventHub, handler) {\n eventHub.on(CREATE_DASHBOARD, handler);\n return () => stopListenForCreateDashboard(eventHub, handler);\n}\nexport function emitCreateDashboard(eventHub, payload) {\n eventHub.emit(CREATE_DASHBOARD, payload);\n}\n//# sourceMappingURL=DashboardEvents.js.map","var _excluded = [\"id\", \"isActive\", \"plugins\"];\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport React, { useCallback, useState } from 'react';\nimport { useDispatch } from 'react-redux';\nimport { LoadingOverlay } from '@deephaven/components';\nimport { updateWorkspaceData } from '@deephaven/redux';\nimport { Dashboard } from \"./Dashboard.js\";\nimport { updateDashboardData } from \"./redux/index.js\";\nimport { DEFAULT_DASHBOARD_ID } from \"./DashboardConstants.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport function LazyDashboard(_ref) {\n var {\n id,\n isActive,\n plugins\n } = _ref,\n rest = _objectWithoutProperties(_ref, _excluded);\n var [isLoaded, setIsLoaded] = useState(isActive);\n var dispatch = useDispatch();\n var handleLayoutConfigChange = useCallback(config => {\n // TODO: #1746 Call updateDashboardData for every dashboard\n // This currently allows the default dashboard to keep its layout since\n // other dashboards are not persistent yet and we read workspaceData\n // for the default dashboard layout\n if (id === DEFAULT_DASHBOARD_ID) {\n dispatch(updateWorkspaceData({\n layoutConfig: config\n }));\n } else {\n dispatch(updateDashboardData(id, {\n layoutConfig: config\n }));\n }\n }, [id, dispatch]);\n if (!isLoaded && isActive) {\n setIsLoaded(true);\n }\n if (!isLoaded) {\n return /*#__PURE__*/_jsx(LoadingOverlay, {});\n }\n return /*#__PURE__*/_jsx(Dashboard, _objectSpread(_objectSpread({\n id: id,\n onLayoutConfigChange: handleLayoutConfigChange\n // eslint-disable-next-line react/jsx-props-no-spreading\n }, rest), {}, {\n children: plugins\n }));\n}\nexport default LazyDashboard;\n//# sourceMappingURL=LazyDashboard.js.map","import { useMemo } from 'react';\nimport { isDashboardPlugin, isLegacyDashboardPlugin } from \"./PluginTypes.js\";\nimport { usePlugins } from \"./usePlugins.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport function getDashboardPlugins(plugins) {\n var dbPlugins = [...plugins.entries()].filter(_ref => {\n var [, plugin] = _ref;\n return isDashboardPlugin(plugin) || isLegacyDashboardPlugin(plugin);\n });\n return dbPlugins.map(_ref2 => {\n var [pluginName, plugin] = _ref2;\n if (isLegacyDashboardPlugin(plugin)) {\n var {\n DashboardPlugin: _DPlugin\n } = plugin;\n return /*#__PURE__*/_jsx(_DPlugin, {}, pluginName);\n }\n var {\n component: DPlugin\n } = plugin;\n return /*#__PURE__*/_jsx(DPlugin, {}, pluginName);\n });\n}\n\n/**\n * Get all DashboardPlugin elements from the plugins context\n * @returns Array of DashboardPlugin elements\n */\nexport function useDashboardPlugins() {\n var plugins = usePlugins();\n var dashboardPlugins = useMemo(() => getDashboardPlugins(plugins), [plugins]);\n return dashboardPlugins;\n}\nexport default useDashboardPlugins;\n//# sourceMappingURL=useDashboardPlugins.js.map","import { createContext } from 'react';\nexport var UserOverrideContext = /*#__PURE__*/createContext({});\nexport var UserPermissionsOverrideContext = /*#__PURE__*/createContext({});\nexport var UserContext = /*#__PURE__*/createContext(null);\n//# sourceMappingURL=UserContexts.js.map","import { createContext } from 'react';\nexport var ConnectionContext = /*#__PURE__*/createContext(null);\nexport default ConnectionContext;\n//# sourceMappingURL=ConnectionContext.js.map","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\nimport React, { createContext, useEffect, useState } from 'react';\nimport { LoadingOverlay } from '@deephaven/components';\nimport { useClient } from '@deephaven/jsapi-bootstrap';\nimport { getErrorMessage } from '@deephaven/utils';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport var ServerConfigContext = /*#__PURE__*/createContext(null);\n/**\n * ServerConfigBootstrap component. Handles loading the server config.\n */\nexport function ServerConfigBootstrap(_ref) {\n var {\n children\n } = _ref;\n var client = useClient();\n var [serverConfig, setServerConfig] = useState();\n var [error, setError] = useState();\n useEffect(function initServerConfigValues() {\n var isCanceled = false;\n function loadServerConfigValues() {\n return _loadServerConfigValues.apply(this, arguments);\n }\n function _loadServerConfigValues() {\n _loadServerConfigValues = _asyncToGenerator(function* () {\n try {\n var newServerConfigValues = yield client.getServerConfigValues();\n if (!isCanceled) {\n setServerConfig(new Map(newServerConfigValues));\n }\n } catch (e) {\n if (!isCanceled) {\n setError(e);\n }\n }\n });\n return _loadServerConfigValues.apply(this, arguments);\n }\n loadServerConfigValues();\n return () => {\n isCanceled = true;\n };\n }, [client]);\n var isLoading = serverConfig == null;\n if (isLoading || error != null) {\n return /*#__PURE__*/_jsx(LoadingOverlay, {\n isLoading: isLoading && error == null,\n errorMessage: getErrorMessage(error)\n });\n }\n return /*#__PURE__*/_jsx(ServerConfigContext.Provider, {\n value: serverConfig,\n children: children\n });\n}\nexport default ServerConfigBootstrap;\n//# sourceMappingURL=ServerConfigBootstrap.js.map","import { useContextOrThrow } from '@deephaven/react-hooks';\nimport { ServerConfigContext } from \"./ServerConfigBootstrap.js\";\nexport function useServerConfig() {\n return useContextOrThrow(ServerConfigContext, 'No server config available in useServerConfig. Was code wrapped in ServerConfigBootstrap or ServerConfigContext.Provider?');\n}\nexport default useServerConfig;\n//# sourceMappingURL=useServerConfig.js.map","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nimport React, { useCallback } from 'react';\nimport classNames from 'classnames';\nimport { DashboardUtils, LazyDashboard } from '@deephaven/dashboard';\nimport { useObjectFetcher } from '@deephaven/jsapi-bootstrap';\nimport { LoadingOverlay } from '@deephaven/components';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport function AppDashboards(_ref) {\n var {\n dashboards,\n activeDashboard,\n onLayoutInitialized,\n onGoldenLayoutChange,\n plugins,\n emptyDashboard = /*#__PURE__*/_jsx(LoadingOverlay, {})\n } = _ref;\n var fetchObject = useObjectFetcher();\n var hydratePanel = useCallback((hydrateProps, id) => {\n var {\n metadata\n } = hydrateProps;\n try {\n if (metadata != null) {\n return _objectSpread(_objectSpread({\n fetch: function () {\n var _fetch = _asyncToGenerator(function* () {\n return fetchObject(metadata);\n });\n function fetch() {\n return _fetch.apply(this, arguments);\n }\n return fetch;\n }()\n }, hydrateProps), {}, {\n localDashboardId: id\n });\n }\n } catch (e) {\n // Ignore being unable to get the variable descriptor, do the default dashboard hydration\n }\n return DashboardUtils.hydrate(hydrateProps, id);\n }, [fetchObject]);\n return /*#__PURE__*/_jsx(\"div\", {\n className: \"tab-content\",\n children: dashboards.map(d => /*#__PURE__*/_jsx(\"div\", {\n className: classNames('tab-pane', {\n active: d.id === activeDashboard\n }),\n children: /*#__PURE__*/_jsx(LazyDashboard, {\n id: d.id,\n isActive: d.id === activeDashboard,\n emptyDashboard: emptyDashboard,\n layoutConfig: d.layoutConfig,\n layoutSettings: d.layoutSettings,\n onLayoutInitialized: onLayoutInitialized,\n onGoldenLayoutChange: onGoldenLayoutChange,\n hydrate: hydratePanel,\n plugins: plugins\n }, d.key)\n }, d.id))\n });\n}\nexport default AppDashboards;\n//# sourceMappingURL=AppDashboards.js.map","import { useContextOrThrow } from '@deephaven/react-hooks';\nimport { ConnectionContext } from \"./ConnectionContext.js\";\n/**\n * Retrieve the connection for the current context.\n *\n * @returns Connection for the current context\n */\nexport function useConnection() {\n return useContextOrThrow(ConnectionContext, 'No IdeConnection available in useConnection. Was code wrapped in ConnectionContext.Provider?');\n}\nexport default useConnection;\n//# sourceMappingURL=useConnection.js.map","import { useContextOrThrow } from '@deephaven/react-hooks';\nimport { UserContext } from '@deephaven/auth-plugins';\nexport function useUser() {\n return useContextOrThrow(UserContext, 'No user available in useUser. Was code wrapped in UserBootstrap or UserContext.Provider?');\n}\nexport default useUser;\n//# sourceMappingURL=useUser.js.map","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\n/* eslint-disable class-methods-use-this */\n\nimport Log from '@deephaven/log';\nimport { CanceledPromiseError, PromiseUtils } from '@deephaven/utils';\nimport { FileUtils } from '@deephaven/file-explorer';\nimport debounce from 'lodash.debounce';\nvar log = Log.module('GrpcFileStorageTable');\n\n/**\n * Implementation of FileStorageTable for gRPC service.\n * Takes a path to specify what root this table should start at.\n */\nexport class GrpcFileStorageTable {\n /**\n * Map of expanded directory paths to the tables that manage that path.\n * We use a tree of tables to query the server so we just get the directories that are expanded.\n */\n\n /**\n * @param storageService The storage service to use\n * @param baseRoot Base root for the service\n * @param root The root path for this storage table\n */\n constructor(storageService) {\n var baseRoot = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n var root = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : baseRoot;\n _defineProperty(this, \"storageService\", void 0);\n _defineProperty(this, \"baseRoot\", void 0);\n _defineProperty(this, \"root\", void 0);\n _defineProperty(this, \"currentSize\", 0);\n _defineProperty(this, \"currentViewport\", void 0);\n _defineProperty(this, \"listeners\", []);\n _defineProperty(this, \"viewportUpdatePromise\", void 0);\n _defineProperty(this, \"currentViewportData\", void 0);\n _defineProperty(this, \"childTables\", new Map());\n this.storageService = storageService;\n this.baseRoot = baseRoot;\n this.root = root;\n if (root === baseRoot) {\n this.doRefresh = debounce(this.doRefresh.bind(this), GrpcFileStorageTable.REFRESH_DEBOUNCE);\n }\n }\n removeBaseRoot(filename) {\n return FileUtils.removeRoot(this.baseRoot, filename);\n }\n getViewportData() {\n var _this$viewportUpdateP;\n if (!this.viewportUpdatePromise) {\n this.refreshInternal();\n }\n return (_this$viewportUpdateP = this.viewportUpdatePromise) !== null && _this$viewportUpdateP !== void 0 ? _this$viewportUpdateP : Promise.resolve({\n items: [],\n offset: 0\n });\n }\n getSnapshot(sortedRanges) {\n throw new Error('Method not implemented.');\n }\n get size() {\n return this.currentSize;\n }\n setExpanded(path, expanded) {\n var paths = path.split('/');\n var nextPath = paths.shift();\n if (nextPath === undefined || nextPath === '') {\n nextPath = paths.shift();\n }\n if (nextPath === undefined || nextPath === '') {\n throw new Error(\"Invalid path: \".concat(path));\n }\n var remainingPath = paths.join('/');\n if (expanded) {\n if (!this.childTables.has(nextPath)) {\n var childTable = new GrpcFileStorageTable(this.storageService, this.baseRoot, \"\".concat(this.root, \"/\").concat(nextPath));\n this.childTables.set(nextPath, childTable);\n }\n if (remainingPath) {\n var _childTable = this.childTables.get(nextPath);\n _childTable === null || _childTable === void 0 ? void 0 : _childTable.setExpanded(remainingPath, expanded);\n }\n } else if (this.childTables.has(nextPath)) {\n if (remainingPath) {\n var _childTable2 = this.childTables.get(nextPath);\n _childTable2 === null || _childTable2 === void 0 ? void 0 : _childTable2.setExpanded(remainingPath, expanded);\n } else {\n this.childTables.delete(nextPath);\n }\n }\n if (this.currentViewport) {\n this.refreshInternal();\n }\n }\n collapseAll() {\n this.childTables.clear();\n if (this.currentViewport) {\n this.refreshInternal();\n }\n }\n\n // eslint-disable-next-line class-methods-use-this\n setSearch(search) {\n throw new Error('Method not implemented.');\n }\n setViewport(viewport) {\n this.currentViewport = viewport;\n this.refreshInternal();\n }\n setFilters() {\n throw new Error('Method not implemented.');\n }\n setSorts() {\n throw new Error('Method not implemented.');\n }\n setReversed() {\n throw new Error('Method not implemented.');\n }\n close() {\n this.listeners = [];\n }\n onUpdate(callback) {\n this.listeners = [...this.listeners, callback];\n return () => {\n this.listeners = this.listeners.filter(other => other !== callback);\n };\n }\n doRefresh(callback) {\n log.debug2('doRefresh', this.root);\n callback(this.fetchData());\n }\n refresh() {\n var _this$viewportUpdateP2;\n log.debug2('refresh', this.root);\n (_this$viewportUpdateP2 = this.viewportUpdatePromise) === null || _this$viewportUpdateP2 === void 0 ? void 0 : _this$viewportUpdateP2.cancel();\n var refreshPromise = new Promise(resolve => {\n this.doRefresh(resolve);\n });\n var viewportUpdatePromise = PromiseUtils.makeCancelable(refreshPromise.then(viewportData => {\n if (this.viewportUpdatePromise !== viewportUpdatePromise) {\n throw new CanceledPromiseError();\n }\n this.currentViewportData = viewportData;\n this.sendUpdate();\n return viewportData;\n }));\n\n // Add a catch here as we're not catching the promises anywhere else\n viewportUpdatePromise.catch(e => {\n if (!PromiseUtils.isCanceled(e)) {\n log.error('Error updating viewport', e);\n }\n });\n this.viewportUpdatePromise = viewportUpdatePromise;\n }\n\n /**\n * Refreshes data, but catches any errors and logs them\n */\n refreshInternal() {\n try {\n this.refresh();\n } catch (e) {\n if (!PromiseUtils.isCanceled(e)) {\n log.error('Unable to refresh data', e);\n }\n }\n }\n fetchData() {\n var _this = this;\n return _asyncToGenerator(function* () {\n var {\n currentViewport: viewport\n } = _this;\n if (!viewport) {\n throw new Error('No viewport set');\n }\n\n // First get the root directory contents\n var dirContents = yield _this.storageService.listItems(_this.root);\n var items = dirContents.map(file => ({\n type: file.type,\n filename: _this.removeBaseRoot(file.filename),\n basename: file.basename,\n id: _this.removeBaseRoot(file.filename),\n isExpanded: file.type === 'directory' ? _this.childTables.has(file.basename) : undefined\n })).sort((a, b) => {\n if (a.type !== b.type) {\n return a.type === 'directory' ? -1 : 1;\n }\n return a.basename.localeCompare(b.basename);\n });\n\n // Get the data from all expanded directories\n for (var i = 0; i < items.length; i += 1) {\n var item = items[i];\n var {\n basename,\n filename\n } = item;\n if (filename === _this.removeBaseRoot(\"\".concat(_this.root, \"/\").concat(basename)) && item.type === 'directory') {\n var childTable = _this.childTables.get(basename);\n if (childTable != null) {\n childTable.setViewport({\n top: 0,\n bottom: viewport.bottom - i\n });\n // eslint-disable-next-line no-await-in-loop\n var childViewportData = yield childTable.getViewportData();\n items.splice(i + 1, 0, ...childViewportData.items);\n }\n }\n }\n _this.currentSize = items.length;\n log.debug2(_this.root, 'items', items, viewport);\n\n // Slice it to the correct viewport\n items = items.slice(viewport.top, viewport.bottom);\n return {\n items,\n offset: viewport.top\n };\n })();\n }\n sendUpdate() {\n var _this$currentViewport;\n // Retain a reference to it in case a listener gets removed while sending an update\n var {\n listeners\n } = this;\n var data = (_this$currentViewport = this.currentViewportData) !== null && _this$currentViewport !== void 0 ? _this$currentViewport : {\n items: [],\n offset: 0\n };\n for (var i = 0; i < listeners.length; i += 1) {\n listeners[i](data);\n }\n }\n}\n_defineProperty(GrpcFileStorageTable, \"REFRESH_DEBOUNCE\", 50);\nexport default GrpcFileStorageTable;\n//# sourceMappingURL=GrpcFileStorageTable.js.map","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nimport throttle from 'lodash.throttle';\nimport { FileNotFoundError, FileUtils, isFileType } from '@deephaven/file-explorer';\nimport Log from '@deephaven/log';\nimport GrpcFileStorageTable from \"./GrpcFileStorageTable.js\";\nvar log = Log.module('GrpcFileStorage');\nexport class GrpcFileStorage {\n /**\n * FileStorage implementation using gRPC\n * @param storageService Storage service to use\n * @param root Root path for this instance. Should not contain trailing slash.\n */\n constructor(dh, storageService) {\n var root = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '';\n _defineProperty(this, \"dh\", void 0);\n _defineProperty(this, \"storageService\", void 0);\n _defineProperty(this, \"tables\", []);\n _defineProperty(this, \"root\", void 0);\n _defineProperty(this, \"refreshTables\", throttle(() => {\n this.tables.forEach(table => table.refresh());\n }, GrpcFileStorage.REFRESH_THROTTLE));\n this.dh = dh;\n this.storageService = storageService;\n this.root = root;\n }\n removeRoot(filename) {\n return FileUtils.removeRoot(this.root, filename);\n }\n addRoot(path) {\n return FileUtils.addRoot(this.root, path);\n }\n createDirectory(path) {\n var _this = this;\n return _asyncToGenerator(function* () {\n yield _this.storageService.createDirectory(_this.addRoot(path));\n _this.refreshTables();\n return {\n type: 'directory',\n id: path,\n filename: path,\n basename: FileUtils.getBaseName(path)\n };\n })();\n }\n getTable() {\n var _this2 = this;\n return _asyncToGenerator(function* () {\n var table = new GrpcFileStorageTable(_this2.storageService, _this2.root);\n _this2.tables.push(table);\n return table;\n })();\n }\n saveFile(file) {\n var _this3 = this;\n return _asyncToGenerator(function* () {\n var fileContents = _this3.dh.storage.FileContents.text(file.content);\n yield _this3.storageService.saveFile(_this3.addRoot(file.filename), fileContents, true);\n _this3.refreshTables();\n return file;\n })();\n }\n loadFile(name) {\n var _this4 = this;\n return _asyncToGenerator(function* () {\n var fileContents = yield _this4.storageService.loadFile(_this4.addRoot(name));\n var content = yield fileContents.text();\n return {\n filename: name,\n basename: FileUtils.getBaseName(name),\n content\n };\n })();\n }\n copyFile(name, newName) {\n var _this5 = this;\n return _asyncToGenerator(function* () {\n var fileContents = yield _this5.storageService.loadFile(_this5.addRoot(name));\n yield _this5.storageService.saveFile(_this5.addRoot(newName), fileContents, false);\n _this5.refreshTables();\n })();\n }\n deleteFile(name) {\n var _this6 = this;\n return _asyncToGenerator(function* () {\n yield _this6.storageService.deleteItem(_this6.addRoot(name));\n _this6.refreshTables();\n })();\n }\n moveFile(name, newName) {\n var _this7 = this;\n return _asyncToGenerator(function* () {\n yield _this7.storageService.moveItem(_this7.addRoot(name), _this7.addRoot(newName));\n _this7.refreshTables();\n })();\n }\n info(name) {\n var _this8 = this;\n return _asyncToGenerator(function* () {\n var allItems = yield _this8.storageService.listItems(_this8.addRoot(FileUtils.getPath(name)), FileUtils.getBaseName(name));\n if (allItems.length === 0) {\n throw new FileNotFoundError();\n }\n if (allItems.length > 1) {\n log.error('More than one matching file found, should never happen.', allItems);\n throw new Error('More than one matching file found');\n }\n var itemDetails = allItems[0];\n if (!isFileType(itemDetails.type)) {\n throw new Error(\"Unexpected file type: \".concat(itemDetails.type));\n }\n return {\n filename: _this8.removeRoot(itemDetails.filename),\n basename: itemDetails.basename,\n id: _this8.removeRoot(itemDetails.filename),\n type: itemDetails.type\n };\n })();\n }\n}\n_defineProperty(GrpcFileStorage, \"REFRESH_THROTTLE\", 150);\nexport default GrpcFileStorage;\n//# sourceMappingURL=GrpcFileStorage.js.map","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nexport class GrpcLayoutStorage {\n /**\n *\n * @param storageService The gRPC storage service to use\n * @param root The root path where the layouts are stored\n */\n constructor(storageService) {\n var root = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n _defineProperty(this, \"storageService\", void 0);\n _defineProperty(this, \"root\", void 0);\n this.storageService = storageService;\n this.root = root;\n }\n getLayouts() {\n var _this = this;\n return _asyncToGenerator(function* () {\n var files = yield _this.storageService.listItems(_this.root, '*.json');\n return files.map(file => file.basename);\n })();\n }\n getLayout(name) {\n var _this2 = this;\n return _asyncToGenerator(function* () {\n var fileContents = yield _this2.storageService.loadFile(\"\".concat(_this2.root, \"/\").concat(name));\n var content = yield fileContents.text();\n return JSON.parse(content);\n })();\n }\n}\nexport default GrpcLayoutStorage;\n//# sourceMappingURL=GrpcLayoutStorage.js.map","/**\n * Have a different version to support legacy layout exports\n */\n\nexport function isLayoutV2(layout) {\n return layout.version === 2;\n}\nexport function isLayoutV1(layout) {\n return Array.isArray(layout);\n}\n\n/**\n * Interface for accessing layouts from wherever they are stored.\n */\n//# sourceMappingURL=LayoutStorage.js.map","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\nimport { CommandHistoryPanel, ConsolePanel, FileExplorerPanel, LogPanel } from '@deephaven/dashboard-core-plugins';\nimport Log from '@deephaven/log';\nimport { isLayoutV1, isLayoutV2 } from \"./LayoutStorage.js\";\nvar log = Log.module('UserLayoutUtils');\nexport var DEFAULT_LAYOUT_CONFIG = {\n layoutConfig: [{\n type: 'column',\n content: [{\n type: 'row',\n height: 40,\n // slightly smaller than 50-50 to allow more space for tables below\n content: [{\n type: 'stack',\n content: [{\n type: 'react-component',\n component: ConsolePanel.COMPONENT,\n title: ConsolePanel.TITLE,\n isClosable: false\n }, {\n type: 'react-component',\n component: LogPanel.COMPONENT,\n title: LogPanel.TITLE,\n isClosable: false\n }]\n }, {\n type: 'stack',\n width: 25,\n content: [{\n type: 'react-component',\n component: CommandHistoryPanel.COMPONENT,\n title: CommandHistoryPanel.TITLE,\n isClosable: false\n }, {\n type: 'react-component',\n component: FileExplorerPanel.COMPONENT,\n title: FileExplorerPanel.TITLE,\n isClosable: false\n }]\n }]\n }, {\n type: 'row',\n content: [{\n type: 'stack',\n title: 'Notebooks',\n content: []\n }]\n }]\n }],\n links: [],\n filterSets: [],\n version: 2\n};\nexport var DEFAULT_LAYOUT_CONFIG_NO_CONSOLE = {\n layoutConfig: [],\n links: [],\n filterSets: [],\n version: 2\n};\nexport function normalizeLayout(layout) {\n if (isLayoutV2(layout)) {\n return layout;\n }\n if (isLayoutV1(layout)) {\n var layoutConfig = layout;\n return {\n layoutConfig,\n links: [],\n filterSets: [],\n version: 2\n };\n }\n throw new Error(\"Unexpected layout import format: \".concat(layout));\n}\n\n/**\n * Get the default layout for the user to use. Checks layout storage for any layouts, and uses the first one if found.\n * @param layoutStorage The layout storage to get the default layouts from\n * @param isConsoleAvailable Whether console sessions are available.\n * @returns The default layout config to use\n */\nexport function getDefaultLayout(_x) {\n return _getDefaultLayout.apply(this, arguments);\n}\nfunction _getDefaultLayout() {\n _getDefaultLayout = _asyncToGenerator(function* (layoutStorage) {\n var isConsoleAvailable = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n try {\n var layouts = yield layoutStorage.getLayouts();\n if (layouts.length > 0) {\n try {\n // We found a layout on the server, use it. It could be an empty layout if they want user to build their own\n var layout = yield layoutStorage.getLayout(layouts[0]);\n return normalizeLayout(layout);\n } catch (err) {\n log.error('Unable to load layout', layouts[0], ':', err);\n log.warn('No valid layouts found, falling back to default layout');\n }\n }\n } catch (err) {\n log.error('Unable to fetch layout list', err);\n log.warn('Falling back to default layout');\n }\n // Otherwise, do the default layout\n return isConsoleAvailable ? DEFAULT_LAYOUT_CONFIG : DEFAULT_LAYOUT_CONFIG_NO_CONSOLE;\n });\n return _getDefaultLayout.apply(this, arguments);\n}\nexport function exportLayout(data) {\n var {\n filterSets,\n layoutConfig,\n links,\n pluginDataMap\n } = data;\n var exportedLayout = {\n filterSets,\n layoutConfig,\n links,\n pluginDataMap,\n version: 2\n };\n return exportedLayout;\n}\nexport default {\n exportLayout,\n getDefaultLayout,\n normalizeLayout\n};\n//# sourceMappingURL=UserLayoutUtils.js.map","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nimport Log from '@deephaven/log';\nimport { DateTimeColumnFormatter, DecimalColumnFormatter, IntegerColumnFormatter } from '@deephaven/jsapi-utils';\nimport UserLayoutUtils from \"./UserLayoutUtils.js\";\nvar log = Log.module('LocalWorkspaceStorage');\n\n/**\n * Implementation of WorkspaceStorage that just stores the workspace data in localStorage\n */\nexport class LocalWorkspaceStorage {\n static getBooleanServerConfig(serverConfigValues, key) {\n var _serverConfigValues$g, _serverConfigValues$g2;\n if ((serverConfigValues === null || serverConfigValues === void 0 ? void 0 : (_serverConfigValues$g = serverConfigValues.get(key)) === null || _serverConfigValues$g === void 0 ? void 0 : _serverConfigValues$g.toLowerCase()) === 'true') {\n return true;\n }\n if ((serverConfigValues === null || serverConfigValues === void 0 ? void 0 : (_serverConfigValues$g2 = serverConfigValues.get(key)) === null || _serverConfigValues$g2 === void 0 ? void 0 : _serverConfigValues$g2.toLowerCase()) === 'false') {\n return false;\n }\n return undefined;\n }\n static makeDefaultWorkspaceSettings(serverConfigValues) {\n var settings = {\n defaultDateTimeFormat: DateTimeColumnFormatter.DEFAULT_DATETIME_FORMAT_STRING,\n formatter: [],\n timeZone: DateTimeColumnFormatter.DEFAULT_TIME_ZONE_ID,\n showTimeZone: false,\n showTSeparator: true,\n disableMoveConfirmation: false,\n defaultDecimalFormatOptions: {\n defaultFormatString: DecimalColumnFormatter.DEFAULT_FORMAT_STRING\n },\n defaultIntegerFormatOptions: {\n defaultFormatString: IntegerColumnFormatter.DEFAULT_FORMAT_STRING\n },\n truncateNumbersWithPound: false,\n showEmptyStrings: true,\n showNullStrings: true,\n showExtraGroupColumn: true,\n defaultNotebookSettings: {\n isMinimapEnabled: false\n },\n webgl: true,\n webglEditable: true,\n gridDensity: 'regular'\n };\n var serverSettings = {\n defaultDateTimeFormat: serverConfigValues === null || serverConfigValues === void 0 ? void 0 : serverConfigValues.get('dateTimeFormat'),\n formatter: [],\n timeZone: serverConfigValues === null || serverConfigValues === void 0 ? void 0 : serverConfigValues.get('timeZone'),\n showTimeZone: LocalWorkspaceStorage.getBooleanServerConfig(serverConfigValues, 'showTimeZone'),\n showTSeparator: LocalWorkspaceStorage.getBooleanServerConfig(serverConfigValues, 'showTSeparator'),\n disableMoveConfirmation: LocalWorkspaceStorage.getBooleanServerConfig(serverConfigValues, 'disableMoveConfirmation'),\n defaultDecimalFormatOptions: (serverConfigValues === null || serverConfigValues === void 0 ? void 0 : serverConfigValues.get('decimalFormat')) !== undefined ? {\n defaultFormatString: serverConfigValues === null || serverConfigValues === void 0 ? void 0 : serverConfigValues.get('decimalFormat')\n } : undefined,\n defaultIntegerFormatOptions: (serverConfigValues === null || serverConfigValues === void 0 ? void 0 : serverConfigValues.get('integerFormat')) !== undefined ? {\n defaultFormatString: serverConfigValues === null || serverConfigValues === void 0 ? void 0 : serverConfigValues.get('integerFormat')\n } : undefined,\n truncateNumbersWithPound: LocalWorkspaceStorage.getBooleanServerConfig(serverConfigValues, 'truncateNumbersWithPound'),\n showEmptyStrings: LocalWorkspaceStorage.getBooleanServerConfig(serverConfigValues, 'showEmptyStrings'),\n showNullStrings: LocalWorkspaceStorage.getBooleanServerConfig(serverConfigValues, 'showNullStrings'),\n showExtraGroupColumn: LocalWorkspaceStorage.getBooleanServerConfig(serverConfigValues, 'showExtraGroupColumn'),\n defaultNotebookSettings: (serverConfigValues === null || serverConfigValues === void 0 ? void 0 : serverConfigValues.get('isMinimapEnabled')) !== undefined ? {\n isMinimapEnabled: LocalWorkspaceStorage.getBooleanServerConfig(serverConfigValues, 'isMinimapEnabled')\n } : undefined,\n webgl: LocalWorkspaceStorage.getBooleanServerConfig(serverConfigValues, 'web.webgl'),\n webglEditable: LocalWorkspaceStorage.getBooleanServerConfig(serverConfigValues, 'web.webgl.editable')\n };\n var keys = Object.keys(serverSettings);\n for (var i = 0; i < keys.length; i += 1) {\n var key = keys[i];\n if (serverSettings[key] !== undefined) {\n // @ts-expect-error override default for defined server settings\n settings[key] = serverSettings[key];\n }\n }\n return settings;\n }\n static makeWorkspaceData(layoutStorage, options) {\n return _asyncToGenerator(function* () {\n var {\n filterSets,\n links,\n layoutConfig,\n pluginDataMap = {}\n } = yield UserLayoutUtils.getDefaultLayout(layoutStorage, options === null || options === void 0 ? void 0 : options.isConsoleAvailable);\n return {\n settings: {},\n layoutConfig,\n closed: [{}],\n links,\n filterSets,\n pluginDataMap\n };\n })();\n }\n static makeDefaultWorkspace(layoutStorage, options) {\n return _asyncToGenerator(function* () {\n return {\n data: yield LocalWorkspaceStorage.makeWorkspaceData(layoutStorage, options)\n };\n })();\n }\n constructor(layoutStorage) {\n _defineProperty(this, \"layoutStorage\", void 0);\n this.layoutStorage = layoutStorage;\n }\n\n // eslint-disable-next-line class-methods-use-this\n load(options) {\n var _this = this;\n return _asyncToGenerator(function* () {\n try {\n var _localStorage$getItem;\n var workspace = JSON.parse((_localStorage$getItem = localStorage.getItem(LocalWorkspaceStorage.STORAGE_KEY)) !== null && _localStorage$getItem !== void 0 ? _localStorage$getItem : '');\n return workspace;\n } catch (e) {\n log.info('Unable to load workspace data, initializing to default data');\n return LocalWorkspaceStorage.makeDefaultWorkspace(_this.layoutStorage, options);\n }\n })();\n }\n\n // eslint-disable-next-line class-methods-use-this\n save(workspace) {\n return _asyncToGenerator(function* () {\n localStorage.setItem(LocalWorkspaceStorage.STORAGE_KEY, JSON.stringify(workspace));\n return workspace;\n })();\n }\n}\n_defineProperty(LocalWorkspaceStorage, \"STORAGE_KEY\", 'deephaven.WorkspaceStorage');\nexport default LocalWorkspaceStorage;\n//# sourceMappingURL=LocalWorkspaceStorage.js.map"],"names":["useResizeObserver","element","onResize","useEffect","resizeObserverInstance","ThemePicker","selectedThemeKey","setSelectedThemeKey","themes","useTheme","onSelectionChange","useCallback","key","_jsx","Picker","item","Item","Logo","_ref","className","style","classNames","_excluded","_excluded2","ownKeys","object","enumerableOnly","keys","symbols","sym","_objectSpread","target","i","source","_defineProperty","obj","value","_toPropertyKey","arg","_toPrimitive","input","hint","prim","res","_objectWithoutProperties","excluded","_objectWithoutPropertiesLoose","sourceSymbolKeys","sourceKeys","React","ref","UNSAFE_className","props","_usePickerProps","usePickerProps","defaultSelectedKey","disabledKeys","selectedKey","scrollRef","pickerProps","pickerRef","useMergeRef","SpectrumPicker","cl","Heading","forwardRef","forwardedRef","color","UNSAFE_style","rest","useMemo","colorValueStyle","SpectrumHeading","log","Log","ContextMenu","PureComponent","_this$container$curre","onMenuOpened","prevProps","prevState","actions","activeSubMenu","_this$container$curre2","_this$container$curre3","options","keyboardIndex","index","mouseIndex","menuItems","ContextActionUtils","nonPromiseItems","menuItem","promise","cancellablePromise","PromiseUtils","state","resolvedMenuItems","pendingItems","error","parentRect","_this$container$curre4","_this$container$curre5","_this$container$curre6","_this$container$curre7","updatePosition","subMenuParentWidth","subMenuParentHeight","oldTop","oldLeft","top","left","width","height","hasOverflow","isContextMenuChild","oldFocus","newFocus","openSubMenu","newSubMenu","closeAll","closeMenu","onMenuClosed","closeAllMenus","e","focusIndex","menuItemElements","subMenuTop","subMenuLeft","menuItemElement","ContextMenuItem","pendingElement","LoadingSpinner","menuStyle","dataTestId","showSubmenu","_jsxs","_Fragment","verifiedTop","verifiedLeft","ContextMenuRoot","Component","mouseEvent","contextActions","menu","ContextMenuRoot$1","Collapse","elemParam","elem","scrollBarWidth","autoFocusOnShow","_children","inTransition","CSSTransition","PropTypes","Collapse$1","NavTab","memo","tab","onClose","onSelect","isActive","activeRef","isDraggable","isClosable","title","icon","iconElem","FontAwesomeIcon","Draggable","provided","snapshot","event","Button","vsClose","ContextActions","CLICK_TIMEOUT","START_SPEED","ACCELERATION","isScrolledLeft","isScrolledRight","makeBaseContextActions","tabs","disabled","_i","t","NavTabList","activeKey","onReorder","makeContextActions","containerRef","useRef","isOverflowing","setIsOverflowing","useState","disableScrollLeft","setDisableScrollLeft","disableScrollRight","setDisableScrollRight","handleResize","onDragEnd","result","DragUtils","handleScroll","shouldDisableScrollLeft","shouldDisableScrollRight","continuousScrollRef","handleLeftClick","children","child","handleRightClick","handleMouseRepeat","direction","startX","deltaX","prevTimestamp","container","timestamp","startTime","deltaTime","newDeltaX","endContinuousScroll","holdTimer","rAF","handleMouseDown","handleMouseDownLeft","handleMouseDownRight","_containerRef$current","onWheel","nav","delta","clamp","_containerRef$current2","tabContextActionMap","tabContextActions","_makeContextActions","activeTabRef","activeTab","navTabs","vsChevronLeft","DragDropContext","Droppable","r","vsChevronRight","useCreateClient","serverUrl","api","useApi","client","ClientContext","createContext","ClientBootstrap","useClient","useContextOrThrow","asyncGeneratorStep","gen","resolve","reject","_next","_throw","info","_asyncToGenerator","fn","self","args","err","LOGIN_OPTIONS_REQUEST","SESSION_DETAILS_REQUEST","BROADCAST_CHANNEL_NAME","BROADCAST_LOGIN_MESSAGE","BROADCAST_LOGOUT_MESSAGE","isMessage","message","isBroadcastLoginMessage","isBroadcastLogoutMessage","isResponse","response","makeMessage","id","nanoid","payload","makeResponse","messageId","getWindowParent","requestParentResponse","_x","_requestParentResponse","request","timeout","parent","timeoutId","listener","data","TimeoutError","NoConsolesError","isNoConsolesError","createConnection","dh","websocketUrl","createSessionWrapper","_x2","_x3","_createSessionWrapper","connection","details","types","type","session","config","createCoreClient","isSessionDetails","requestParentSessionDetails","_requestParentSessionDetails","getSessionDetails","_getSessionDetails","searchParams","loadSessionWrapper","_x4","_x5","_x6","_loadSessionWrapper","sessionDetails","sessionWrapper","RESIZE_THROTTLE","DEFAULT_CALLBACK","EMPTY_OBJECT","Dashboard","emptyDashboard","layoutConfig","layoutSettings","onLayoutConfigChange","onGoldenLayoutChange","onLayoutInitialized","fallbackComponent","PanelPlaceholder","hydrate","dehydrate","panelWrapper","layoutElement","isInitialized","setIsInitialized","layout","setLayout","LayoutUtils","newLayout","GoldenLayout","onInit","throttle","LayoutManagerContext","DashboardLayout","CREATE_DASHBOARD","stopListenForCreateDashboard","eventHub","handler","listenForCreateDashboard","emitCreateDashboard","LazyDashboard","plugins","isLoaded","setIsLoaded","dispatch","useDispatch","handleLayoutConfigChange","DEFAULT_DASHBOARD_ID","updateWorkspaceData","updateDashboardData","LoadingOverlay","getDashboardPlugins","dbPlugins","plugin","isDashboardPlugin","isLegacyDashboardPlugin","_ref2","pluginName","_DPlugin","DPlugin","useDashboardPlugins","usePlugins","dashboardPlugins","UserOverrideContext","UserPermissionsOverrideContext","UserContext","ConnectionContext","ServerConfigContext","ServerConfigBootstrap","serverConfig","setServerConfig","setError","isCanceled","loadServerConfigValues","_loadServerConfigValues","newServerConfigValues","isLoading","getErrorMessage","useServerConfig","AppDashboards","dashboards","activeDashboard","fetchObject","useObjectFetcher","hydratePanel","hydrateProps","metadata","_fetch","fetch","DashboardUtils","d","useConnection","useUser","GrpcFileStorageTable","storageService","baseRoot","root","debounce","filename","FileUtils","_this$viewportUpdateP","sortedRanges","path","expanded","paths","nextPath","remainingPath","childTable","_childTable","_childTable2","search","viewport","callback","other","_this$viewportUpdateP2","refreshPromise","viewportUpdatePromise","viewportData","CanceledPromiseError","_this","dirContents","items","file","a","b","basename","childViewportData","_this$currentViewport","listeners","GrpcFileStorage","table","_this2","_this3","fileContents","name","_this4","content","newName","_this5","_this6","_this7","_this8","allItems","FileNotFoundError","itemDetails","isFileType","GrpcLayoutStorage","files","isLayoutV2","isLayoutV1","DEFAULT_LAYOUT_CONFIG","ConsolePanel","LogPanel","CommandHistoryPanel","FileExplorerPanel","DEFAULT_LAYOUT_CONFIG_NO_CONSOLE","normalizeLayout","getDefaultLayout","_getDefaultLayout","layoutStorage","isConsoleAvailable","layouts","exportLayout","filterSets","links","pluginDataMap","exportedLayout","UserLayoutUtils","LocalWorkspaceStorage","serverConfigValues","_serverConfigValues$g","_serverConfigValues$g2","settings","DateTimeColumnFormatter","DecimalColumnFormatter","IntegerColumnFormatter","serverSettings","_localStorage$getItem","workspace"],"mappings":"ysBAOO,SAASA,GAAkBC,EAASC,EAAU,CACnDC,EAAAA,UAAU,IAAM,CACd,GAAIF,GAAW,KAGf,KAAIG,EAAyB,IAAI,OAAO,eAAeF,CAAQ,EAC/D,OAAAE,EAAuB,QAAQH,CAAO,EAC/B,IAAM,CACPA,GAAW,MACbG,EAAuB,UAAUH,CAAO,CAEhD,EACA,EAAK,CAACA,EAASC,CAAQ,CAAC,CACxB,CChBO,SAASG,IAAc,CAC5B,GAAI,CACF,iBAAAC,EACA,oBAAAC,EACA,OAAAC,CACD,EAAGC,GAAQ,EACRC,EAAoBC,EAAW,YAACC,GAAO,CACzCL,EAAoBK,CAAG,CAC3B,EAAK,CAACL,CAAmB,CAAC,EACxB,OAAoBM,EAAAA,IAAKC,GAAQ,CAC/B,MAAO,sBACP,MAAON,EACP,YAAaF,EACb,kBAAmBI,EACnB,SAAUK,GAAqBF,EAAI,IAACG,GAAM,CACxC,SAAUD,EAAK,IACrB,EAAOA,EAAK,QAAQ,CACpB,CAAG,CACH,CCnBO,SAASE,GAAKC,EAAM,CACzB,GAAI,CACF,UAAAC,EACA,MAAAC,CACD,EAAGF,EACJ,OAAoBL,EAAAA,IAAK,MAAO,CAC9B,UAAWQ,EAAW,UAAWF,CAAS,EAC1C,MAAOC,CACX,CAAG,CACH,CCZA,IAAIE,GAAY,CAAC,kBAAkB,EACjCC,GAAa,CAAC,qBAAsB,eAAgB,cAAe,KAAK,EAC1E,SAASC,GAAQC,EAAQC,EAAgB,CAAE,IAAIC,EAAO,OAAO,KAAKF,CAAM,EAAG,GAAI,OAAO,sBAAuB,CAAE,IAAIG,EAAU,OAAO,sBAAsBH,CAAM,EAAGC,IAAmBE,EAAUA,EAAQ,OAAO,SAAUC,EAAK,CAAE,OAAO,OAAO,yBAAyBJ,EAAQI,CAAG,EAAE,UAAW,CAAE,GAAIF,EAAK,KAAK,MAAMA,EAAMC,CAAO,CAAE,CAAG,OAAOD,CAAO,CACrV,SAASG,GAAcC,EAAQ,CAAE,QAASC,EAAI,EAAGA,EAAI,UAAU,OAAQA,IAAK,CAAE,IAAIC,EAAiB,UAAUD,CAAC,GAAnB,KAAuB,UAAUA,CAAC,EAAI,CAAE,EAAEA,EAAI,EAAIR,GAAQ,OAAOS,CAAM,EAAG,EAAE,EAAE,QAAQ,SAAUrB,EAAK,CAAEsB,GAAgBH,EAAQnB,EAAKqB,EAAOrB,CAAG,CAAC,CAAI,CAAA,EAAI,OAAO,0BAA4B,OAAO,iBAAiBmB,EAAQ,OAAO,0BAA0BE,CAAM,CAAC,EAAIT,GAAQ,OAAOS,CAAM,CAAC,EAAE,QAAQ,SAAUrB,EAAK,CAAE,OAAO,eAAemB,EAAQnB,EAAK,OAAO,yBAAyBqB,EAAQrB,CAAG,CAAC,CAAE,CAAE,CAAI,CAAC,OAAOmB,CAAS,CAC1f,SAASG,GAAgBC,EAAKvB,EAAKwB,EAAO,CAAE,OAAAxB,EAAMyB,GAAezB,CAAG,EAAOA,KAAOuB,EAAO,OAAO,eAAeA,EAAKvB,EAAK,CAAE,MAAOwB,EAAO,WAAY,GAAM,aAAc,GAAM,SAAU,EAAM,CAAA,EAAYD,EAAIvB,CAAG,EAAIwB,EAAgBD,CAAM,CAC5O,SAASE,GAAeC,EAAK,CAAE,IAAI1B,EAAM2B,GAAaD,EAAK,QAAQ,EAAG,OAAO,OAAO1B,GAAQ,SAAWA,EAAM,OAAOA,CAAG,CAAI,CAC3H,SAAS2B,GAAaC,EAAOC,EAAM,CAAE,GAAI,OAAOD,GAAU,UAAYA,IAAU,KAAM,OAAOA,EAAO,IAAIE,EAAOF,EAAM,OAAO,WAAW,EAAG,GAAIE,IAAS,OAAW,CAAE,IAAIC,EAAMD,EAAK,KAAKF,EAAOC,GAAQ,SAAS,EAAG,GAAI,OAAOE,GAAQ,SAAU,OAAOA,EAAK,MAAM,IAAI,UAAU,8CAA8C,CAAI,CAAC,OAAQF,IAAS,SAAW,OAAS,QAAQD,CAAK,CAAI,CACzX,SAASI,GAAyBX,EAAQY,EAAU,CAAE,GAAIZ,GAAU,KAAM,MAAO,GAAI,IAAIF,EAASe,GAA8Bb,EAAQY,CAAQ,EAAOjC,EAAK,EAAG,GAAI,OAAO,sBAAuB,CAAE,IAAImC,EAAmB,OAAO,sBAAsBd,CAAM,EAAG,IAAK,EAAI,EAAG,EAAIc,EAAiB,OAAQ,IAAOnC,EAAMmC,EAAiB,CAAC,EAAO,EAAAF,EAAS,QAAQjC,CAAG,GAAK,IAAkB,OAAO,UAAU,qBAAqB,KAAKqB,EAAQrB,CAAG,IAAamB,EAAOnB,CAAG,EAAIqB,EAAOrB,CAAG,EAAI,CAAG,OAAOmB,CAAS,CAC5e,SAASe,GAA8Bb,EAAQY,EAAU,CAAE,GAAIZ,GAAU,KAAM,MAAO,CAAE,EAAE,IAAIF,EAAS,CAAE,EAAMiB,EAAa,OAAO,KAAKf,CAAM,EAAOrB,EAAKoB,EAAG,IAAKA,EAAI,EAAGA,EAAIgB,EAAW,OAAQhB,IAAOpB,EAAMoC,EAAWhB,CAAC,EAAO,EAAAa,EAAS,QAAQjC,CAAG,GAAK,KAAamB,EAAOnB,CAAG,EAAIqB,EAAOrB,CAAG,GAAK,OAAOmB,CAAS,CAczS,IAACjB,GAAsBmC,EAAM,WAAW,SAAgB/B,EAAMgC,EAAK,CAC3E,GAAI,CACA,iBAAAC,CACN,EAAQjC,EACJkC,EAAQR,GAAyB1B,EAAMI,EAAS,EAC9C+B,EAAkBC,GAAeF,CAAK,EACxC,CACE,mBAAAG,EACA,aAAAC,EACA,YAAAC,EACA,IAAKC,CACX,EAAQL,EACJM,EAAcf,GAAyBS,EAAiB9B,EAAU,EAChEqC,EAAYC,GAAYX,EAAKQ,CAAS,EAC1C,OAAoB7C,EAAI,IAACiD,GAEvBhC,GAAcA,GAAc,CAAA,EAAI6B,CAAW,EAAG,CAAA,EAAI,CAClD,IAAKC,EACL,iBAAkBG,EAAG,YAAaZ,CAAgB,EAKlD,mBAAoBI,EACpB,aAAcC,EACd,YAAaC,CACd,CAAA,CAAC,CACJ,CAAC,EACD3C,GAAO,YAAc,SClDrB,IAAIQ,GAAY,CAAC,QAAS,cAAc,EACxC,SAASE,GAAQC,EAAQC,EAAgB,CAAE,IAAIC,EAAO,OAAO,KAAKF,CAAM,EAAG,GAAI,OAAO,sBAAuB,CAAE,IAAIG,EAAU,OAAO,sBAAsBH,CAAM,EAAGC,IAAmBE,EAAUA,EAAQ,OAAO,SAAUC,EAAK,CAAE,OAAO,OAAO,yBAAyBJ,EAAQI,CAAG,EAAE,UAAW,CAAE,GAAIF,EAAK,KAAK,MAAMA,EAAMC,CAAO,CAAE,CAAG,OAAOD,CAAO,CACrV,SAASG,EAAcC,EAAQ,CAAE,QAASC,EAAI,EAAGA,EAAI,UAAU,OAAQA,IAAK,CAAE,IAAIC,EAAiB,UAAUD,CAAC,GAAnB,KAAuB,UAAUA,CAAC,EAAI,CAAE,EAAEA,EAAI,EAAIR,GAAQ,OAAOS,CAAM,EAAG,EAAE,EAAE,QAAQ,SAAUrB,EAAK,CAAEsB,GAAgBH,EAAQnB,EAAKqB,EAAOrB,CAAG,CAAC,CAAI,CAAA,EAAI,OAAO,0BAA4B,OAAO,iBAAiBmB,EAAQ,OAAO,0BAA0BE,CAAM,CAAC,EAAIT,GAAQ,OAAOS,CAAM,CAAC,EAAE,QAAQ,SAAUrB,EAAK,CAAE,OAAO,eAAemB,EAAQnB,EAAK,OAAO,yBAAyBqB,EAAQrB,CAAG,CAAC,CAAE,CAAE,CAAI,CAAC,OAAOmB,CAAS,CAC1f,SAASG,GAAgBC,EAAKvB,EAAKwB,EAAO,CAAE,OAAAxB,EAAMyB,GAAezB,CAAG,EAAOA,KAAOuB,EAAO,OAAO,eAAeA,EAAKvB,EAAK,CAAE,MAAOwB,EAAO,WAAY,GAAM,aAAc,GAAM,SAAU,EAAM,CAAA,EAAYD,EAAIvB,CAAG,EAAIwB,EAAgBD,CAAM,CAC5O,SAASE,GAAeC,EAAK,CAAE,IAAI1B,EAAM2B,GAAaD,EAAK,QAAQ,EAAG,OAAO,OAAO1B,GAAQ,SAAWA,EAAM,OAAOA,CAAG,CAAI,CAC3H,SAAS2B,GAAaC,EAAOC,EAAM,CAAE,GAAI,OAAOD,GAAU,UAAYA,IAAU,KAAM,OAAOA,EAAO,IAAIE,EAAOF,EAAM,OAAO,WAAW,EAAG,GAAIE,IAAS,OAAW,CAAE,IAAIC,EAAMD,EAAK,KAAKF,EAAOC,GAAQ,SAAS,EAAG,GAAI,OAAOE,GAAQ,SAAU,OAAOA,EAAK,MAAM,IAAI,UAAU,8CAA8C,CAAI,CAAC,OAAQF,IAAS,SAAW,OAAS,QAAQD,CAAK,CAAI,CACzX,SAASI,GAAyBX,EAAQY,EAAU,CAAE,GAAIZ,GAAU,KAAM,MAAO,GAAI,IAAIF,EAASe,GAA8Bb,EAAQY,CAAQ,EAAOjC,EAAK,EAAG,GAAI,OAAO,sBAAuB,CAAE,IAAImC,EAAmB,OAAO,sBAAsBd,CAAM,EAAG,IAAK,EAAI,EAAG,EAAIc,EAAiB,OAAQ,IAAOnC,EAAMmC,EAAiB,CAAC,EAAO,EAAAF,EAAS,QAAQjC,CAAG,GAAK,IAAkB,OAAO,UAAU,qBAAqB,KAAKqB,EAAQrB,CAAG,IAAamB,EAAOnB,CAAG,EAAIqB,EAAOrB,CAAG,EAAI,CAAG,OAAOmB,CAAS,CAC5e,SAASe,GAA8Bb,EAAQY,EAAU,CAAE,GAAIZ,GAAU,KAAM,MAAO,CAAE,EAAE,IAAIF,EAAS,CAAE,EAAMiB,EAAa,OAAO,KAAKf,CAAM,EAAOrB,EAAKoB,EAAG,IAAKA,EAAI,EAAGA,EAAIgB,EAAW,OAAQhB,IAAOpB,EAAMoC,EAAWhB,CAAC,EAAO,EAAAa,EAAS,QAAQjC,CAAG,GAAK,KAAamB,EAAOnB,CAAG,EAAIqB,EAAOrB,CAAG,GAAK,OAAOmB,CAAS,CAgBzS,IAACiC,GAAuBC,EAAU,WAAC,CAACb,EAAOc,IAAiB,CACpE,GAAI,CACA,MAAAC,EACA,aAAAC,CACN,EAAQhB,EACJiB,EAAOzB,GAAyBQ,EAAO9B,EAAS,EAC9CF,EAAQkD,EAAO,QAAC,IAAMxC,EAAcA,EAAc,GAAIsC,CAAY,EAAG,GAAI,CAC3E,MAAOG,GAAgBJ,CAAK,CAC7B,CAAA,EAAG,CAACA,EAAOC,CAAY,CAAC,EACzB,OAAoBvD,EAAAA,IAAK2D,GAAiB1C,EAAcA,EAAc,GAAIuC,CAAI,EAAG,GAAI,CACnF,IAAKH,EACL,aAAc9C,CACf,CAAA,CAAC,CACJ,CAAC,EACD4C,GAAQ,YAAc,UCrCtB,SAASxC,GAAQC,EAAQC,EAAgB,CAAE,IAAIC,EAAO,OAAO,KAAKF,CAAM,EAAG,GAAI,OAAO,sBAAuB,CAAE,IAAIG,EAAU,OAAO,sBAAsBH,CAAM,EAAGC,IAAmBE,EAAUA,EAAQ,OAAO,SAAUC,EAAK,CAAE,OAAO,OAAO,yBAAyBJ,EAAQI,CAAG,EAAE,UAAW,CAAE,GAAIF,EAAK,KAAK,MAAMA,EAAMC,CAAO,CAAE,CAAG,OAAOD,CAAO,CACrV,SAASG,GAAcC,EAAQ,CAAE,QAASC,EAAI,EAAGA,EAAI,UAAU,OAAQA,IAAK,CAAE,IAAIC,EAAiB,UAAUD,CAAC,GAAnB,KAAuB,UAAUA,CAAC,EAAI,CAAE,EAAEA,EAAI,EAAIR,GAAQ,OAAOS,CAAM,EAAG,EAAE,EAAE,QAAQ,SAAUrB,EAAK,CAAEsB,EAAgBH,EAAQnB,EAAKqB,EAAOrB,CAAG,CAAC,CAAI,CAAA,EAAI,OAAO,0BAA4B,OAAO,iBAAiBmB,EAAQ,OAAO,0BAA0BE,CAAM,CAAC,EAAIT,GAAQ,OAAOS,CAAM,CAAC,EAAE,QAAQ,SAAUrB,EAAK,CAAE,OAAO,eAAemB,EAAQnB,EAAK,OAAO,yBAAyBqB,EAAQrB,CAAG,CAAC,CAAE,CAAE,CAAI,CAAC,OAAOmB,CAAS,CAC1f,SAASG,EAAgBC,EAAKvB,EAAKwB,EAAO,CAAE,OAAAxB,EAAMyB,GAAezB,CAAG,EAAOA,KAAOuB,EAAO,OAAO,eAAeA,EAAKvB,EAAK,CAAE,MAAOwB,EAAO,WAAY,GAAM,aAAc,GAAM,SAAU,EAAM,CAAA,EAAYD,EAAIvB,CAAG,EAAIwB,EAAgBD,CAAM,CAC5O,SAASE,GAAeC,EAAK,CAAE,IAAI1B,EAAM2B,GAAaD,EAAK,QAAQ,EAAG,OAAO,OAAO1B,GAAQ,SAAWA,EAAM,OAAOA,CAAG,CAAI,CAC3H,SAAS2B,GAAaC,EAAOC,EAAM,CAAE,GAAI,OAAOD,GAAU,UAAYA,IAAU,KAAM,OAAOA,EAAO,IAAIE,EAAOF,EAAM,OAAO,WAAW,EAAG,GAAIE,IAAS,OAAW,CAAE,IAAIC,EAAMD,EAAK,KAAKF,EAAOC,GAAQ,SAAS,EAAG,GAAI,OAAOE,GAAQ,SAAU,OAAOA,EAAK,MAAM,IAAI,UAAU,8CAA8C,CAAI,CAAC,OAAQF,IAAS,SAAW,OAAS,QAAQD,CAAK,CAAI,CAWzX,IAAIiC,GAAMC,EAAI,OAAO,aAAa,EAElC,MAAMC,UAAoBC,EAAAA,aAAc,CACtC,OAAO,kBAAkB,EAAG,CACtB,EAAE,UAGN,EAAE,gBAAe,EACjB,EAAE,eAAc,EACjB,CACD,YAAYxB,EAAO,CACjB,MAAMA,CAAK,EACXlB,EAAgB,KAAM,YAAa,MAAM,EACzCA,EAAgB,KAAM,WAAY,MAAM,EACxCA,EAAgB,KAAM,mBAAoB,MAAM,EAChDA,EAAgB,KAAM,eAAgB,MAAM,EAC5CA,EAAgB,KAAM,MAAO,MAAM,EACnCA,EAAgB,KAAM,kBAAmB,MAAM,EAC/C,KAAK,WAAa,KAAK,WAAW,KAAK,IAAI,EAC3C,KAAK,mBAAqB,KAAK,mBAAmB,KAAK,IAAI,EAC3D,KAAK,cAAgB,KAAK,cAAc,KAAK,IAAI,EACjD,KAAK,oBAAsB,KAAK,oBAAoB,KAAK,IAAI,EAC7D,KAAK,0BAA4B,KAAK,0BAA0B,KAAK,IAAI,EACzE,KAAK,wBAA0B,KAAK,wBAAwB,KAAK,IAAI,EACrE,KAAK,iBAAmB,KAAK,iBAAiB,KAAK,IAAI,EACvD,KAAK,mBAAqB,KAAK,mBAAmB,KAAK,IAAI,EAC3D,KAAK,UAAyBe,EAAM,YACpC,KAAK,SAAW,SAAS,cACzB,KAAK,iBAAgCA,EAAM,YAC3C,KAAK,aAAe,EACpB,KAAK,IAAM,EACX,KAAK,gBAAkB,CACrB,IAAKG,EAAM,IACX,KAAMA,EAAM,IAClB,EACI,KAAK,MAAQ,CACX,UAAW,CAAE,EACb,aAAc,CAAE,EAChB,cAAe,KACf,YAAa,GACb,WAAY,KACZ,YAAa,KACb,mBAAoB,EACpB,oBAAqB,EACrB,cAAe,GACf,WAAY,EAClB,CACG,CACD,mBAAoB,CAClB,KAAK,SAAQ,EACb,KAAK,eAAc,EACnB,OAAO,iBAAiB,SAAU,KAAK,kBAAkB,EAMzD,KAAK,IAAM,OAAO,sBAAsB,IAAM,CAC5C,IAAIyB,GACHA,EAAwB,KAAK,UAAU,WAAa,MAAQA,IAA0B,QAAkBA,EAAsB,MAAK,EACpI,GAAI,CACF,aAAAC,CACR,EAAU,KAAK,MACTA,EAAa,IAAI,CACvB,CAAK,CACF,CACD,mBAAmBC,EAAWC,EAAW,CACvC,GAAI,CACF,QAAAC,CACN,EAAQ,KAAK,MACL,CACF,cAAAC,CACN,EAAQ,KAAK,MACT,GAAIA,IAAkBF,EAAU,cAC9B,GAAIE,GAAiB,KAAM,CACzB,IAAIC,GAEHA,EAAyB,KAAK,UAAU,WAAa,MAAQA,IAA2B,QAAkBA,EAAuB,MAAK,CAC/I,MAEQ,KAAK,yBAAwB,EAGjC,GAAIJ,EAAU,UAAYE,IACxB,KAAK,SAAQ,EACT,KAAK,UAAU,SAAW,MAAQ,CAAC,KAAK,UAAU,QAAQ,SAAS,SAAS,aAAa,GAAG,CAC9F,IAAIG,GACHA,EAAyB,KAAK,UAAU,WAAa,MAAQA,IAA2B,QAAkBA,EAAuB,MAAK,CACxI,CAEH,KAAK,eAAc,CACpB,CACD,sBAAuB,CACrB,KAAK,eAAc,EACnB,OAAO,oBAAoB,SAAU,KAAK,kBAAkB,EAC5D,qBAAqB,KAAK,GAAG,CAC9B,CACD,kBAAmB,CACjB,GAAI,CACF,QAAAC,CACN,EAAQ,KAAK,MACT,GAAIA,EAAQ,wBAA0B,QAAaA,EAAQ,sBAAuB,CAChF,GAAI,CACF,cAAAC,CACR,EAAU,KAAK,MACT,OAAOA,CACR,CACD,OAAO,KAAK,eACb,CACD,iBAAiBC,EAAO,CACtB,GAAI,CACF,QAAAF,CACN,EAAQ,KAAK,MACLA,EAAQ,wBAA0B,QAAaA,EAAQ,sBACzD,KAAK,SAAS,CACZ,cAAeE,CACvB,CAAO,EAED,KAAK,cAAcA,CAAK,CAE3B,CACD,eAAgB,CACd,GAAI,CACF,WAAAC,CACN,EAAQ,KAAK,MACT,OAAOA,CACR,CACD,cAAcD,EAAO,CACnB,KAAK,SAAS,CACZ,WAAYA,CAClB,CAAK,CACF,CACD,UAAW,CAET,KAAK,eAAc,EACnB,qBAAqB,KAAK,GAAG,EAC7B,GAAI,CACF,QAAAF,CACN,EAAQ,KAAK,MACLC,EAAgBD,EAAQ,qBACxBC,IAAkB,SACpBA,EAAgB,IAOlB,OALI,CACF,QAAAL,CACN,EAAQ,KAAK,MACLQ,EAAYC,EAAmB,aAAaT,CAAO,EACnDU,EAAkB,CAAA,EACb3D,EAAIyD,EAAU,OAAS,EAAGzD,GAAK,EAAGA,GAAK,EAAG,CACjD,IAAI4D,EAAWH,EAAUzD,CAAC,EACtB4D,aAAoB,QACtB,KAAK,gBAAgBA,CAAQ,EAE7BD,EAAgB,KAAKC,CAAQ,CAEhC,CACD,KAAK,SAAS,CACZ,WAAY,GACZ,cAAAN,EACA,cAAe,KACf,UAAWI,EAAmB,YAAYC,CAAe,CAC/D,CAAK,CACF,CACD,gBAAgBE,EAAS,CAEvB,IAAIC,EAAqBC,EAAa,eAAeF,CAAO,EAC5D,KAAK,SAASG,IAAU,CACtB,aAAcA,EAAM,aAAa,OAAOF,CAAkB,CAC3D,EAAC,EACFA,EAAmB,KAAKG,GAAqB,CAC3C,KAAK,SAASD,GAAS,CACrB,IAAIT,EAAQS,EAAM,aAAa,QAAQF,CAAkB,EACzD,GAAIP,GAAS,EAAG,CACd,IAAIW,EAAeF,EAAM,aAAa,MAAK,EAC3C,OAAAE,EAAa,OAAOX,EAAO,CAAC,EACrB,CACL,UAAWG,EAAmB,YAAYM,EAAM,UAAU,OAAOC,CAAiB,CAAC,EACnF,aAAAC,CACZ,CACS,CAED,OAAO,IACf,CAAO,CACF,EAAEC,GAAS,CACNJ,EAAa,WAAWI,CAAK,IAKjC,KAAK,SAASH,GAAS,CACrB,IAAIT,EAAQS,EAAM,aAAa,QAAQF,CAAkB,EACzD,GAAIP,GAAS,EAAG,CACd,IAAIW,EAAeF,EAAM,aAAa,MAAK,EAC3C,OAAAE,EAAa,OAAOX,EAAO,CAAC,EACrB,CACL,aAAAW,CACZ,CACS,CACD,OAAO,IACf,CAAO,EAGDzB,GAAI,MAAM0B,CAAK,EACrB,CAAK,CACF,CACD,gBAAiB,CACf,GAAI,CACF,aAAAD,CACN,EAAQ,KAAK,MACTA,EAAa,IAAInF,GAAQA,EAAK,OAAQ,CAAA,CACvC,CAMD,0BAA2B,CACzB,GAAI,KAAK,iBAAiB,UAAY,KACtC,KAAIqF,EAAa,KAAK,iBAAiB,QAAQ,sBAAqB,EAGpE,KAAK,SAAS,CACZ,WAAYA,EAAW,IACvB,YAAaA,EAAW,MACxB,oBAAqBA,EAAW,OAChC,mBAAoBA,EAAW,KACrC,CAAK,EACF,CAUD,gBAAiB,CACf,IAAIC,EAAwBC,EAAwBC,EAAwBC,EACxE,CACF,QAAAnB,EACA,eAAAoB,EACA,mBAAAC,EACA,oBAAAC,EACA,IAAKC,EACL,KAAMC,CACZ,EAAQ,KAAK,MACT,GAAI,GAAC,KAAK,UAAU,SAAWxB,EAAQ,qBAAuB,MAAQA,EAAQ,qBAO9E,IAAI,CACF,IAAAyB,EACA,KAAAC,CACN,EAAQ,KAAK,gBACL,CACF,MAAAC,EACA,OAAAC,CACN,GAASZ,GAA0BC,EAAyB,KAAK,UAAU,WAAa,MAAQA,IAA2B,OAAS,OAASA,EAAuB,sBAAuB,KAAM,MAAQD,IAA2B,OAASA,EAAyB,CAChQ,MAAO,EACP,OAAQ,CACd,EACQa,IAAgBX,GAA0BC,EAAyB,KAAK,UAAU,WAAa,MAAQA,IAA2B,OAAS,OAASA,EAAuB,gBAAkB,MAAQD,IAA2B,OAASA,EAAyB,GAAK,OAAO,YAC9QU,IAAW,GAAKD,IAAU,IAM1BF,EAAMG,EAAS,OAAO,cAEpBH,EAAMG,EAASN,EAAsB,EAEvCG,GAAOG,EAASN,EAGhBG,EAAM,OAAO,YAAcG,GAG3BF,EAAOC,EAAQ,OAAO,aAExBD,EAAOA,EAAOC,EAAQN,IAEpBG,IAAYE,GAAQH,IAAWE,KAEjC,KAAK,SAAS,CACZ,YAAAI,CACR,CAAO,EACDT,EAAeK,EAAKC,CAAI,IAE3B,CAGD,oBAAqB,CACd,KAAK,UAAU,SAGpB,KAAK,UAAU,EAAI,CACpB,CACD,WAAW,EAAG,CACZ,GAAI,CAAC,KAAK,UAAU,QAAS,CAC3BtC,GAAI,KAAK,oBAAoB,EAC7B,MACD,CACD,GAAI,CAAC,KAAK,UAAU,QAAQ,SAAS,EAAE,aAAa,EAAG,CAGrD,QAFIxE,EAAU,EAAE,cACZkH,EAAqB,GAClBlH,GAAW,CAACkH,GACjBA,EAAqBlH,EAAQ,aAAa,sBAAsB,EAChEA,EAAUA,EAAQ,cAEfkH,GAEH,KAAK,UAAU,EAAI,CAEtB,CACF,CAGD,YAAYvG,EAAK,CACf,GAAI,CACF,KAAAmG,CACN,EAAQ,KAAK,MACT,OAAOnG,IAAQ,UAAYmG,EAAO,GAAKnG,IAAQ,cAAgBA,IAAQ,WACxE,CACD,cAAc,EAAG,CACf,GAAI,CACF,UAAA6E,CACN,EAAQ,KAAK,MACL2B,EAAW,KAAK,mBAChBC,EAAWD,EACXE,EAAc,GAClB,GAAI,EAAE,MAAQ,SAAW,EAAE,MAAQ,IAAK,CAClCF,GAAY,GAAKA,EAAW3B,EAAU,QACxC,KAAK,oBAAoBA,EAAU2B,CAAQ,EAAG,CAAC,EAEjD,MACD,CAcD,GAbI,EAAE,MAAQ,aACRA,GAAY,GAAKA,GAAY3B,EAAU,OACzC6B,EAAc,GAEdD,EAAW,EAEJ,KAAK,YAAY,EAAE,GAAG,EAC/BA,EAAW,KACF,EAAE,MAAQ,WAAa,EAAE,UAAY,EAAE,MAAQ,MACxDA,EAAW3B,EAAmB,gBAAgB2B,EAAU,GAAI5B,CAAS,GAC5D,EAAE,MAAQ,aAAe,EAAE,MAAQ,SAC5C4B,EAAW3B,EAAmB,gBAAgB2B,EAAU,EAAG5B,CAAS,GAElE6B,EAAa,CACf,KAAK,YAAYF,CAAQ,EACzB,EAAE,eAAc,EAChB,EAAE,gBAAe,EACjB,MACD,CACGA,IAAaC,IACXA,IAAa,KACf,KAAK,iBAAiBA,CAAQ,GAE9B,KAAK,UAAS,EACV,KAAK,oBAAoB,aAC3B,KAAK,SAAS,SAGlB,EAAE,eAAc,EAChB,EAAE,gBAAe,EAEpB,CACD,YAAY9B,EAAO,CACjB,GAAI,CACF,UAAAE,EACA,cAAAP,CACN,EAAQ,KAAK,MACLqC,EAAa9B,EAAUF,CAAK,EAAE,QAAUA,EAAQ,KAChDL,IAAkBqC,GACtB,KAAK,SAAS,CACZ,cAAeA,EACf,WAAY,KACZ,YAAa,IACnB,CAAK,CACF,CACD,WAAY,CACV,IAAIC,EAAW,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,GAC/E,CACF,UAAAC,EACA,aAAAC,CACN,EAAQ,KAAK,MACT,qBAAqB,KAAK,GAAG,EAC7B,KAAK,IAAM,OAAO,sBAAsB,IAAM,CAC5CD,EAAUD,CAAQ,EAClBE,EAAa,IAAI,CACvB,CAAK,CACF,CACD,cAAe,CACb,KAAK,SAAS,CACZ,cAAe,IACrB,CAAK,CACF,CACD,mBAAmBC,EAAe,CAC5BA,EACF,KAAK,UAAU,EAAI,EAEnB,KAAK,aAAY,CAEpB,CACD,oBAAoB/B,EAAUgC,EAAG,CAC/BA,EAAE,eAAc,EAChBA,EAAE,gBAAe,EACjB,GAAI,CACF,UAAAnC,CACN,EAAQ,KAAK,MACLG,GAAY,OAASA,EAAS,WAAa,QAAa,CAACA,EAAS,YAChEA,EAAS,SAAW,KACtB,KAAK,YAAYH,EAAU,QAAQG,CAAQ,CAAC,EACnCA,EAAS,QAAU,OAC5BA,EAAS,OAAOgC,EAAE,WAAW,EAC7B,KAAK,UAAU,EAAI,GAGxB,CACD,0BAA0BhC,EAAUgC,EAAG,CACjCA,EAAE,SAGN,KAAK,oBAAoBhC,EAAUgC,CAAC,CACrC,CACD,wBAAwBhC,EAAU,CAChC,GAAI,CACF,UAAAH,CACN,EAAQ,KAAK,MACLoC,EAAapC,EAAU,QAAQG,CAAQ,EAC3C,KAAK,cAAciC,CAAU,EACzBA,GAAc,GAAKA,EAAapC,EAAU,SAAWG,EAAS,WAAa,QAAa,CAACA,EAAS,WACpG,KAAK,YAAYiC,CAAU,CAE9B,CACD,kBAAmB,CACjB,KAAK,cAAc,EAAE,CACtB,CACD,QAAS,CAkBP,QAjBIC,EAAmB,CAAA,EACnB,CACF,IAAAhB,EACA,KAAAC,CACN,EAAQ,KAAK,MACL,CACF,cAAA7B,EACA,YAAAgC,EACA,cAAA5B,EACA,UAAAG,EACA,WAAAD,EACA,aAAAU,EACA,WAAA6B,EACA,YAAAC,EACA,mBAAAtB,EACA,oBAAAC,CACN,EAAQ,KAAK,MACA3E,EAAI,EAAGA,EAAIyD,EAAU,OAAQzD,GAAK,EAAG,CAC5C,IAAI4D,EAAWH,EAAUzD,CAAC,EACtBA,EAAI,GAAK4D,EAAS,QAAUH,EAAUzD,EAAI,CAAC,EAAE,OAC/C8F,EAAiB,KAAmBjH,MAAK,KAAM,CAAE,EAAE,GAAG,OAAOmB,EAAG,YAAY,CAAC,CAAC,EAEhF,IAAIiG,EAA+BpH,EAAI,IAACqH,GAAiB,CACvD,IAAKhD,IAAkBlD,EAAI,KAAK,iBAAmB,KACnD,mBAAoBsD,IAAkBtD,EACtC,gBAAiBwD,IAAexD,EAChC,SAAU4D,EACV,UAAW,KAAK,mBAChB,gBAAiB,KAAK,oBACtB,oBAAqB,KAAK,wBAC1B,sBAAuB,KAAK,yBAC7B,EAAE5D,CAAC,EACJ8F,EAAiB,KAAKG,CAAe,CACtC,CACD,IAAIE,EAAiB,KACjBjC,EAAa,OAAS,IACxBiC,EAA8BtH,EAAI,IAAC,MAAO,CACxC,UAAW,UACX,SAAuBA,EAAI,IAACuH,GAAgB,CAC1C,UAAW,gCACrB,CAAS,CACT,CAAO,GAEH,GAAI,CACF,UAAAC,EACA,cAAeC,CACrB,EAAQ,KAAK,MAGLC,EAAcrD,IAAkB,MAAQ6C,IAAe,MAAQC,IAAgB,KACnF,OAAoBQ,EAAAA,KAAMC,EAAAA,SAAW,CACnC,SAAU,CAAcD,EAAK,KAAC,MAAO,CACnC,UAAWnH,EAAW,CACpB,eAAgB6F,CACjB,EAAE,wBAAwB,EAC3B,MAAOpF,GAAc,CACnB,IAAAgF,EACA,KAAAC,CACD,EAAEsB,CAAS,EACZ,IAAK,KAAK,UACV,uBAAwB,GACxB,OAAQ,KAAK,WACb,UAAW,KAAK,cAChB,aAAc,KAAK,iBACnB,cAAe1D,EAAY,kBAC3B,KAAM,WACN,SAAU,EACV,cAAe2D,EACf,SAAU,CAACR,EAAkBK,CAAc,CACnD,CAAO,EAAGI,GAAerD,IAAkB,MAAQ6C,IAAe,MAAQC,IAAgB,MAAqBnH,EAAI,IAAC8D,EAAa,CACzH,QAASc,EAAUP,CAAa,EAAE,SAAW,CAAE,EAC/C,UAAW,KAAK,mBAChB,IAAK6C,EACL,KAAMC,EACN,eAAgB,CAACU,EAAaC,IAAiB,CAC7C,KAAK,SAAS,CACZ,WAAYD,EACZ,YAAaC,CACzB,CAAW,CACF,EACD,mBAAoBjC,EACpB,oBAAqBC,CACtB,EAAE,OAAO,OAAOzB,CAAa,CAAC,CAAC,CACtC,CAAK,CACF,CACH,CACAhD,EAAgByC,EAAa,eAAgB,CAC3C,mBAAoB,EACpB,oBAAqB,EACrB,WAAY,CAEX,EACD,cAAe,CAEd,EACD,cAAe,CAEd,EACD,QAAS,CAAE,EACX,UAAW,CAAE,EACb,cAAe,MACjB,CAAC,ECjjBD,SAASzC,GAAgBC,EAAKvB,EAAKwB,EAAO,CAAE,OAAAxB,EAAMyB,GAAezB,CAAG,EAAOA,KAAOuB,EAAO,OAAO,eAAeA,EAAKvB,EAAK,CAAE,MAAOwB,EAAO,WAAY,GAAM,aAAc,GAAM,SAAU,EAAM,CAAA,EAAYD,EAAIvB,CAAG,EAAIwB,EAAgBD,CAAM,CAC5O,SAASE,GAAeC,EAAK,CAAE,IAAI1B,EAAM2B,GAAaD,EAAK,QAAQ,EAAG,OAAO,OAAO1B,GAAQ,SAAWA,EAAM,OAAOA,CAAG,CAAI,CAC3H,SAAS2B,GAAaC,EAAOC,EAAM,CAAE,GAAI,OAAOD,GAAU,UAAYA,IAAU,KAAM,OAAOA,EAAO,IAAIE,EAAOF,EAAM,OAAO,WAAW,EAAG,GAAIE,IAAS,OAAW,CAAE,IAAIC,EAAMD,EAAK,KAAKF,EAAOC,GAAQ,SAAS,EAAG,GAAI,OAAOE,GAAQ,SAAU,OAAOA,EAAK,MAAM,IAAI,UAAU,8CAA8C,CAAI,CAAC,OAAQF,IAAS,SAAW,OAAS,QAAQD,CAAK,CAAI,CASzX,MAAMoG,WAAwBC,EAAAA,SAAU,CACtC,YAAYzF,EAAO,CACjB,MAAMA,CAAK,EACXlB,GAAgB,KAAM,YAAa,MAAM,EACzCA,GAAgB,KAAM,WAAY,MAAM,EACxC,KAAK,gBAAkB,KAAK,gBAAgB,KAAK,IAAI,EACrD,KAAK,kBAAoB,KAAK,kBAAkB,KAAK,IAAI,EACzD,KAAK,UAAyBe,EAAM,YACpC,KAAK,SAAwBA,EAAM,YACnC,KAAK,MAAQ,CACX,QAAS,KACT,KAAM,EACN,IAAK,CACX,CACG,CACD,mBAAoB,CAClB,IAAI4B,GACCA,EAAwB,KAAK,UAAU,WAAa,MAAQA,IAA0B,QAAUA,EAAsB,eACzH,KAAK,UAAU,QAAQ,cAAc,iBAAiB,cAAe,KAAK,iBAAiB,CAE9F,CACD,sBAAuB,CACrB,IAAIM,GACCA,EAAyB,KAAK,UAAU,WAAa,MAAQA,IAA2B,QAAUA,EAAuB,eAC5H,KAAK,UAAU,QAAQ,cAAc,oBAAoB,cAAe,KAAK,iBAAiB,CAEjG,CACD,kBAAkB,EAAG,CACnB,GAAK,KAAK,UAAU,QAGpB,KAAIiB,EAAa,KAAK,UAAU,QAAQ,sBAAqB,EACzDU,EAAM,EAAE,QAAUV,EAAW,IAC7BW,EAAO,EAAE,QAAUX,EAAW,KAC9B,CACF,QAAAnB,CACN,EAAQ,KAAK,MAKT,GAAIA,GAAW,MAAQ,EAAE,SAAW,KAAK,UAAU,QAAS,CAG1D,EAAE,eAAc,EAMhB,KAAK,SAAS,CACZ,QAAS,IACjB,EAAS,IAAM,CACP,IAAIhF,EAAU,SAAS,iBAAiB8G,EAAMD,CAAG,EAE7CgC,EAAa,IAAI,WAAW,cAAe,CAC7C,QAAS,EAAE,QACX,QAAS,EAAE,QACX,QAAS,GACT,WAAY,EACtB,CAAS,EACD7I,GAAY,MAAsCA,EAAQ,cAAc6I,CAAU,CAC1F,CAAO,EACD,MACD,CACD,GAAKpD,EAAmB,qBAAqB,CAAC,GAI1C,IAAE,SAAW,EAAE,SAInB,KAAIqD,EAAiBrD,EAAmB,aAAa,EAAE,cAAc,EACjEqD,EAAe,SAAW,IAM9B,EAAE,eAAc,EAChB,KAAK,SAAS,CACZ,QAASA,EACT,IAAAjC,EACA,KAAAC,CACN,CAAK,IACF,CACD,gBAAgBiC,EAAM,CAChBA,IAAS,KAAK,SAAS,SACzB,KAAK,SAAS,CACZ,QAAS,IACjB,CAAO,CAEJ,CACD,QAAS,CACP,IAAIA,EAAO,KACP,CACF,cAAeV,CACrB,EAAQ,KAAK,MACL,CACF,QAAArD,EACA,IAAA6B,EACA,KAAAC,CACN,EAAQ,KAAK,MACT,OAAI9B,IACF+D,EAAoBnI,EAAI,IAAC8D,EAAa,CACpC,IAAK,KAAK,SACV,QAASM,EACT,aAAc,KAAK,gBACnB,IAAK6B,EACL,KAAMC,EACN,eAAgB,CAAC2B,EAAaC,IAAiB,CAC7C,KAAK,SAAS,CACZ,IAAKD,EACL,KAAMC,CAClB,CAAW,CACF,EACD,cAAeL,CACvB,CAAO,GAEiBzH,EAAAA,IAAK,MAAO,CAC9B,UAAWQ,EAAW,oBAAqB,CACzC,OAAQ4D,CAChB,CAAO,EACD,IAAK,KAAK,UACV,SAAU+D,CAChB,CAAK,CACF,CACH,CACA,MAAAC,GAAeL,GC5If,SAAS1G,GAAgBC,EAAKvB,EAAKwB,EAAO,CAAE,OAAAxB,EAAMyB,GAAezB,CAAG,EAAOA,KAAOuB,EAAO,OAAO,eAAeA,EAAKvB,EAAK,CAAE,MAAOwB,EAAO,WAAY,GAAM,aAAc,GAAM,SAAU,EAAM,CAAA,EAAYD,EAAIvB,CAAG,EAAIwB,EAAgBD,CAAM,CAC5O,SAASE,GAAeC,EAAK,CAAE,IAAI1B,EAAM2B,GAAaD,EAAK,QAAQ,EAAG,OAAO,OAAO1B,GAAQ,SAAWA,EAAM,OAAOA,CAAG,CAAI,CAC3H,SAAS2B,GAAaC,EAAOC,EAAM,CAAE,GAAI,OAAOD,GAAU,UAAYA,IAAU,KAAM,OAAOA,EAAO,IAAIE,EAAOF,EAAM,OAAO,WAAW,EAAG,GAAIE,IAAS,OAAW,CAAE,IAAIC,EAAMD,EAAK,KAAKF,EAAOC,GAAQ,SAAS,EAAG,GAAI,OAAOE,GAAQ,SAAU,OAAOA,EAAK,MAAM,IAAI,UAAU,8CAA8C,CAAI,CAAC,OAAQF,IAAS,SAAW,OAAS,QAAQD,CAAK,CAAI,CAOzX,MAAM0G,UAAiBL,EAAAA,SAAU,CAC/B,OAAO,YAAYM,EAAW,CAC5B,IAAIC,EAAOD,EACXC,EAAK,MAAM,OAAS,GACrB,CACD,OAAO,eAAeD,EAAW,CAC/B,IAAIC,EAAOD,EACXC,EAAK,MAAM,OAAS,GAAG,OAAOF,EAAS,UAAUE,CAAI,EAAG,IAAI,CAC7D,CACD,OAAO,cAAcD,EAAW,CAC9B,IAAIC,EAAOD,EACXC,EAAK,MAAM,OAAS,GACrB,CACD,OAAO,WAAWD,EAAW,CAC3B,IAAIC,EAAOD,EACXC,EAAK,MAAM,OAAS,GAAG,OAAOF,EAAS,UAAUE,CAAI,EAAG,IAAI,CAC7D,CACD,OAAO,UAAUA,EAAM,CACrB,IAAIC,EAAiBD,EAAK,YAAcA,EAAK,YAC7C,OAAOA,EAAK,aAAeC,CAC5B,CACD,YAAYjG,EAAO,CACjB,MAAMA,CAAK,EACX,KAAK,cAAgB,KAAK,cAAc,KAAK,IAAI,CAClD,CACD,cAAc+F,EAAW,CACvB,IAAIC,EAAOD,EACXC,EAAK,MAAM,OAAS,GACpB,GAAI,CACF,gBAAAE,CACN,EAAQ,KAAK,MACT,GAAIA,IAAoB,QAAaA,EAAiB,CACpD,IAAI9G,EAAQ4G,EAAK,cAAc,yBAAyB,EACpD5G,GAAS,MACXA,EAAM,MAAK,CAEd,CACF,CACD,QAAS,CACP,GAAI,CACF,SAAU+G,EACV,UAAApI,EACA,GAAIqI,EACJ,cAAelB,CACrB,EAAQ,KAAK,MACT,OAAoBzH,EAAAA,IAAK4I,GAAe,CACtC,GAAID,EACJ,WAAY,CACV,YAAa,aACb,UAAW,gBACX,WAAY,aACZ,SAAU,UACX,EACD,QAASN,EAAS,YAClB,WAAYA,EAAS,eACrB,UAAW,KAAK,cAChB,OAAQA,EAAS,WACjB,UAAWA,EAAS,cACpB,QAAS,IACT,SAAUlD,GAAsBnF,EAAI,IAAC,MAAO,CAC1C,UAAWQ,EAAW,CACpB,SAAU2E,IAAU,QACrB,EAAE7E,CAAS,EACZ,cAAemH,EACf,SAAUiB,CAClB,CAAO,CACP,CAAK,CACF,CACH,CACArH,GAAgBgH,EAAU,YAAa,CACrC,UAAWQ,EAAU,OACrB,GAAIA,EAAU,KAAK,WACnB,SAAUA,EAAU,KAAK,WACzB,gBAAiBA,EAAU,KAC3B,cAAeA,EAAU,MAC3B,CAAC,EACDxH,GAAgBgH,EAAU,eAAgB,CACxC,UAAW,GACX,gBAAiB,GACjB,cAAe,MACjB,CAAC,EACD,MAAAS,GAAeT,EC1Ff,SAAS1H,GAAQC,EAAQC,EAAgB,CAAE,IAAIC,EAAO,OAAO,KAAKF,CAAM,EAAG,GAAI,OAAO,sBAAuB,CAAE,IAAIG,EAAU,OAAO,sBAAsBH,CAAM,EAAGC,IAAmBE,EAAUA,EAAQ,OAAO,SAAUC,EAAK,CAAE,OAAO,OAAO,yBAAyBJ,EAAQI,CAAG,EAAE,UAAW,CAAE,GAAIF,EAAK,KAAK,MAAMA,EAAMC,CAAO,CAAE,CAAG,OAAOD,CAAO,CACrV,SAASG,GAAcC,EAAQ,CAAE,QAASC,EAAI,EAAGA,EAAI,UAAU,OAAQA,IAAK,CAAE,IAAIC,EAAiB,UAAUD,CAAC,GAAnB,KAAuB,UAAUA,CAAC,EAAI,CAAE,EAAEA,EAAI,EAAIR,GAAQ,OAAOS,CAAM,EAAG,EAAE,EAAE,QAAQ,SAAUrB,EAAK,CAAEsB,GAAgBH,EAAQnB,EAAKqB,EAAOrB,CAAG,CAAC,CAAI,CAAA,EAAI,OAAO,0BAA4B,OAAO,iBAAiBmB,EAAQ,OAAO,0BAA0BE,CAAM,CAAC,EAAIT,GAAQ,OAAOS,CAAM,CAAC,EAAE,QAAQ,SAAUrB,EAAK,CAAE,OAAO,eAAemB,EAAQnB,EAAK,OAAO,yBAAyBqB,EAAQrB,CAAG,CAAC,CAAE,CAAE,CAAI,CAAC,OAAOmB,CAAS,CAC1f,SAASG,GAAgBC,EAAKvB,EAAKwB,EAAO,CAAE,OAAAxB,EAAMyB,GAAezB,CAAG,EAAOA,KAAOuB,EAAO,OAAO,eAAeA,EAAKvB,EAAK,CAAE,MAAOwB,EAAO,WAAY,GAAM,aAAc,GAAM,SAAU,EAAM,CAAA,EAAYD,EAAIvB,CAAG,EAAIwB,EAAgBD,CAAM,CAC5O,SAASE,GAAeC,EAAK,CAAE,IAAI1B,EAAM2B,GAAaD,EAAK,QAAQ,EAAG,OAAO,OAAO1B,GAAQ,SAAWA,EAAM,OAAOA,CAAG,CAAI,CAC3H,SAAS2B,GAAaC,EAAOC,EAAM,CAAE,GAAI,OAAOD,GAAU,UAAYA,IAAU,KAAM,OAAOA,EAAO,IAAIE,EAAOF,EAAM,OAAO,WAAW,EAAG,GAAIE,IAAS,OAAW,CAAE,IAAIC,EAAMD,EAAK,KAAKF,EAAOC,GAAQ,SAAS,EAAG,GAAI,OAAOE,GAAQ,SAAU,OAAOA,EAAK,MAAM,IAAI,UAAU,8CAA8C,CAAI,CAAC,OAAQF,IAAS,SAAW,OAAS,QAAQD,CAAK,CAAI,CAUzX,IAAIoH,GAAsBC,EAAI,KAAC3I,GAAQ,CACrC,GAAI,CACF,IAAA4I,EACA,QAAAC,EACA,SAAAC,EACA,SAAAC,EACA,UAAAC,EACA,MAAA3E,EACA,YAAA4E,EACA,eAAApB,CACD,EAAG7H,EACA,CACF,IAAAN,EACA,WAAAwJ,EAAaL,GAAW,KACxB,MAAAM,EACA,KAAAC,CACD,EAAGR,EACAS,EACJ,OAAID,GAAQ,OACVC,EAAwBtH,EAAM,eAAeqH,CAAI,EAAIA,EAAoBzJ,EAAI,IAAC2J,GAAiB,CAC7F,KAAMF,CACZ,CAAK,GAEiBzJ,EAAAA,IAAK4J,GAAW,CAClC,YAAa7J,EACb,MAAO2E,EACP,eAAgB,CAAC4E,EACjB,SAAU,CAACO,EAAUC,IAA0BnC,EAAAA,KAAM,MAAO,CAC1D,UAAW,uBACX,IAAKyB,EAAWC,EAAY,KAC5B,SAAU,CAAc1B,EAAAA,KAAM,MAAO1G,GAAcA,GAAcA,GAAc,CAC7E,IAAK4I,EAAS,QAEtB,EAASA,EAAS,cAAc,EAAGA,EAAS,eAAe,EAAG,CAAA,EAAI,CAC1D,UAAWrJ,EAAW,2BAA4B,CAChD,OAAQ4I,CAClB,EAAW,CACD,SAAUU,EAAS,UAC7B,CAAS,EACD,cAAe,eAAe,OAAON,CAAK,EAC1C,KAAM,MACN,SAAU,EACV,WAAYzC,GAAK,CAEXwC,GAAcxC,EAAE,SAAW,GAAKA,EAAE,UAAY,IAChDmC,GAAY,MAAsCA,EAAQnJ,CAAG,EAEhE,EACD,QAASgH,GAAK,CAEZ,GAAIwC,GAAcxC,EAAE,SAAW,GAAKA,EAAE,UAAY,EAAG,CACnDmC,GAAY,MAAsCA,EAAQnJ,CAAG,EAC7D,MACD,CAEGgH,EAAE,SAAW,GAAKA,EAAE,UAAY,IAGlCA,EAAE,OAAO,QACToC,EAASpJ,CAAG,EAEf,EACD,WAAYgK,GAAS,CACfA,EAAM,MAAQ,SAASZ,EAASpJ,CAAG,CACxC,EACD,SAAU,CAAC2J,EAAUF,EAAOD,GAA2BvJ,EAAAA,IAAKgK,GAAQ,CAClE,KAAM,QACN,UAAW,oBACX,QAASD,GAAS,CAChBb,GAAY,MAAsCA,EAAQnJ,CAAG,EAC7DgK,EAAM,gBAAe,EACrBA,EAAM,eAAc,CACrB,EACD,KAAME,GACN,QAAS,OACnB,CAAS,CAAC,CACV,CAAO,CAAC,EAAgBjK,EAAI,IAACkK,GAAgB,CACrC,QAAShC,CACjB,CAAO,CAAC,CACR,CAAK,CACF,EAAEnI,CAAG,CACR,CAAC,EACDgJ,GAAO,YAAc,SChGrB,SAASpI,GAAQC,EAAQC,EAAgB,CAAE,IAAIC,EAAO,OAAO,KAAKF,CAAM,EAAG,GAAI,OAAO,sBAAuB,CAAE,IAAIG,EAAU,OAAO,sBAAsBH,CAAM,EAAGC,IAAmBE,EAAUA,EAAQ,OAAO,SAAUC,EAAK,CAAE,OAAO,OAAO,yBAAyBJ,EAAQI,CAAG,EAAE,UAAW,CAAE,GAAIF,EAAK,KAAK,MAAMA,EAAMC,CAAO,CAAE,CAAG,OAAOD,CAAO,CACrV,SAASG,GAAcC,EAAQ,CAAE,QAASC,EAAI,EAAGA,EAAI,UAAU,OAAQA,IAAK,CAAE,IAAIC,EAAiB,UAAUD,CAAC,GAAnB,KAAuB,UAAUA,CAAC,EAAI,CAAE,EAAEA,EAAI,EAAIR,GAAQ,OAAOS,CAAM,EAAG,EAAE,EAAE,QAAQ,SAAUrB,EAAK,CAAEsB,GAAgBH,EAAQnB,EAAKqB,EAAOrB,CAAG,CAAC,CAAI,CAAA,EAAI,OAAO,0BAA4B,OAAO,iBAAiBmB,EAAQ,OAAO,0BAA0BE,CAAM,CAAC,EAAIT,GAAQ,OAAOS,CAAM,CAAC,EAAE,QAAQ,SAAUrB,EAAK,CAAE,OAAO,eAAemB,EAAQnB,EAAK,OAAO,yBAAyBqB,EAAQrB,CAAG,CAAC,CAAE,CAAE,CAAI,CAAC,OAAOmB,CAAS,CAC1f,SAASG,GAAgBC,EAAKvB,EAAKwB,EAAO,CAAE,OAAAxB,EAAMyB,GAAezB,CAAG,EAAOA,KAAOuB,EAAO,OAAO,eAAeA,EAAKvB,EAAK,CAAE,MAAOwB,EAAO,WAAY,GAAM,aAAc,GAAM,SAAU,EAAM,CAAA,EAAYD,EAAIvB,CAAG,EAAIwB,EAAgBD,CAAM,CAC5O,SAASE,GAAeC,EAAK,CAAE,IAAI1B,EAAM2B,GAAaD,EAAK,QAAQ,EAAG,OAAO,OAAO1B,GAAQ,SAAWA,EAAM,OAAOA,CAAG,CAAI,CAC3H,SAAS2B,GAAaC,EAAOC,EAAM,CAAE,GAAI,OAAOD,GAAU,UAAYA,IAAU,KAAM,OAAOA,EAAO,IAAIE,EAAOF,EAAM,OAAO,WAAW,EAAG,GAAIE,IAAS,OAAW,CAAE,IAAIC,EAAMD,EAAK,KAAKF,EAAOC,GAAQ,SAAS,EAAG,GAAI,OAAOE,GAAQ,SAAU,OAAOA,EAAK,MAAM,IAAI,UAAU,8CAA8C,CAAI,CAAC,OAAQF,IAAS,SAAW,OAAS,QAAQD,CAAK,CAAI,CAezX,IAAIwI,GAAgB,IAGhBC,GAAc,IACdC,GAAe,KACnB,SAASC,GAAelL,EAAS,CAC/B,OAAOA,EAAQ,aAAe,CAChC,CACA,SAASmL,GAAgBnL,EAAS,CAChC,OAAOA,EAAQ,WAAaA,EAAQ,cAAgBA,EAAQ,aAAeA,EAAQ,cAAgB,CACrG,CACA,SAASoL,GAAuBvB,EAAKwB,EAAMvB,EAAS,CAClD,GAAI,CACF,WAAAK,EAAa,GACb,IAAAxJ,CACD,EAAGkJ,EACAf,EAAiB,CAAA,EACrB,GAAIqB,GAAcL,GAAW,KAAM,CACjChB,EAAe,KAAK,CAClB,MAAO,QACP,MAAO,GACP,MAAO,GACP,OAAQ,IAAM,CACZgB,EAAQnJ,CAAG,CACZ,CACP,CAAK,EAED,QADI2K,EAAW,GACNvJ,EAAIsJ,EAAK,OAAS,EAAGtJ,EAAI,GAC5BsJ,EAAKtJ,CAAC,EAAE,MAAQ8H,EAAI,IADW9H,GAAK,EAExC,GAAIsJ,EAAKtJ,CAAC,EAAE,aAAe,GAAM,CAC/BuJ,EAAW,GACX,KACD,CAEHxC,EAAe,KAAK,CAClB,MAAO,qBACP,MAAO,GACP,MAAO,GACP,OAAQ,IAAM,CACZ,QAASyC,EAAKF,EAAK,OAAS,EAAGE,EAAK,GAC9BF,EAAKE,CAAE,EAAE,MAAQ5K,EADgB4K,GAAM,EAEvCF,EAAKE,CAAE,EAAE,aAAe,IAAMzB,EAAQuB,EAAKE,CAAE,EAAE,GAAG,CAEzD,EACD,SAAAD,CACN,CAAK,EACDxC,EAAe,KAAK,CAClB,MAAO,YACP,MAAO,GACP,MAAO,GACP,OAAQ,IAAM,CACZuC,EAAK,QAAQG,GAAK,CACZA,EAAE,aAAe,IAAM1B,EAAQ0B,EAAE,GAAG,CAClD,CAAS,CACF,CACP,CAAK,CACF,CACD,OAAO1C,CACT,CACA,SAAS2C,GAAWxK,EAAM,CACxB,GAAI,CACF,UAAAyK,EACA,KAAAL,EACA,SAAAtB,EACA,UAAA4B,EACA,QAAA7B,EACA,mBAAA8B,CACD,EAAG3K,EACA4K,EAAeC,EAAAA,SACf,CAACC,EAAeC,CAAgB,EAAIC,EAAQ,SAAC,EAAI,EACjD,CAACC,EAAmBC,CAAoB,EAAIF,EAAQ,SAAC,EAAI,EACzD,CAACG,EAAoBC,CAAqB,EAAIJ,EAAQ,SAAC,EAAI,EAC3DK,EAAe5L,EAAAA,YAAY,IAAM,CAC/BmL,EAAa,SAAW,OAGxBA,EAAa,QAAQ,YAAcA,EAAa,QAAQ,aAAeR,EAAK,OAAS,EACvFW,EAAiB,EAAI,EAErBA,EAAiB,EAAK,EAExBG,EAAqBjB,GAAeW,EAAa,OAAO,CAAC,EACzDQ,EAAsBlB,GAAgBU,EAAa,OAAO,CAAC,EAC/D,EAAK,CAACR,CAAI,CAAC,EACTtL,GAAkB8L,EAAa,QAASS,CAAY,EACpD,IAAIC,EAAY7L,EAAW,YAAC8L,GAAU,CACpCC,GAAU,aAAY,EAGjBD,EAAO,cAGZb,GAAc,MAAwCA,EAAUa,EAAO,OAAO,MAAOA,EAAO,YAAY,KAAK,EACjH,EAAK,CAACb,CAAS,CAAC,EACVe,EAAehM,EAAAA,YAAY,IAAM,CACnC,GAAImL,EAAa,SAAW,KAG5B,KAAIc,EAA0BzB,GAAeW,EAAa,OAAO,EAC7Dc,IAA4BT,GAC9BC,EAAqBQ,CAAuB,EAE9C,IAAIC,EAA2BzB,GAAgBU,EAAa,OAAO,EAC/De,IAA6BR,GAC/BC,EAAsBO,CAAwB,EAEpD,EAAK,CAACV,EAAmBE,CAAkB,CAAC,EACtCS,EAAsBf,EAAAA,OAAO,CAC/B,YAAa,EACjB,CAAG,EACGgB,EAAkBpM,EAAAA,YAAY,IAAM,CACtC,GAAI,EAAAmL,EAAa,SAAW,MAAQgB,EAAoB,QAAQ,aAMhE,OAHI,CACF,SAAAE,CACN,EAAQlB,EAAa,QACR9J,EAAIgL,EAAS,OAAS,EAAGhL,GAAK,EAAGA,GAAK,EAAG,CAChD,IAAIiL,EAAQD,EAAShL,CAAC,EAEtB,GAAIiL,EAAM,WAAanB,EAAa,QAAQ,WAAa,EAAG,CAC1DmB,EAAM,eAAe,CACnB,SAAU,SACV,MAAO,UACP,OAAQ,OAClB,CAAS,EACD,MACD,CACF,CACF,EAAE,CAAE,CAAA,EACDC,EAAmBvM,EAAAA,YAAY,IAAM,CACvC,GAAI,EAAAmL,EAAa,SAAW,MAAQgB,EAAoB,QAAQ,aAMhE,OAHI,CACF,SAAAE,CACN,EAAQlB,EAAa,QACR9J,EAAI,EAAGA,EAAIgL,EAAS,OAAQhL,GAAK,EAAG,CAC3C,IAAIiL,EAAQD,EAAShL,CAAC,EAEtB,GAAIiL,EAAM,WAAa,EAAInB,EAAa,QAAQ,WAAaA,EAAa,QAAQ,YAAa,CAC7FmB,EAAM,eAAe,CACnB,SAAU,SACV,MAAO,UACP,OAAQ,KAClB,CAAS,EACD,MACD,CACF,CACF,EAAE,CAAE,CAAA,EAUDE,EAAoBxM,EAAAA,YAAY,SAAUyM,EAAWC,EAAQ,CAC/D,IAAIC,EAAS,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,EAC7EC,EAAgB,UAAU,OAAS,EAAI,UAAU,CAAC,EAAI,OACtDC,EAAY1B,EAAa,QACzB0B,GAAa,OAGjBV,EAAoB,QAAQ,YAAc,GACtCM,IAAc,OAEhBI,EAAU,WAAaH,EAASC,EACvBF,IAAc,UAEvBI,EAAU,WAAaH,EAASC,GAIlCR,EAAoB,QAAQ,IAAM,sBAAsBW,GAAa,CACnE,IAAIC,GAAYH,GAAqEE,EACjFE,GAAYF,EAAYC,GACxBE,GAAY3C,GAAc0C,GAAY,GAAMzC,GAAeyC,IAAa,EAC5EC,GAAY,KAAK,IAAIA,GAAWJ,EAAU,WAAW,EAGrDL,EAAkBC,EAAWC,EAAQO,GAAWF,EAAS,CAC/D,CAAK,EACF,EAAE,CAAE,CAAA,EACDG,EAAsBlN,EAAAA,YAAY,IAAM,CAC1C,GAAI,CACF,UAAAmN,EACA,IAAAC,CACN,EAAQjB,EAAoB,QACpBgB,GAAa,OACf,aAAaA,CAAS,EACtBhB,EAAoB,QAAQ,UAAY,QAEtCiB,GAAO,OACT,qBAAqBA,CAAG,EACxBjB,EAAoB,QAAQ,IAAM,QAEpC,OAAO,oBAAoB,UAAWe,CAAmB,CAC1D,EAAE,CAAE,CAAA,EACL1N,YAAU,IAAM,IAAM,OAAO,oBAAoB,UAAW0N,CAAmB,EAAG,CAACA,CAAmB,CAAC,EACvG,IAAIG,EAAkBrN,EAAW,YAACyM,GAAa,CACzCtB,EAAa,SAAW,OAC1BgB,EAAoB,QAAQ,UAAY,OAAO,WAAWK,EAAmBnC,GAAeoC,EAAWtB,EAAa,QAAQ,UAAU,GAExIgB,EAAoB,QAAQ,YAAc,GAC1C,OAAO,iBAAiB,UAAWe,CAAmB,CAC1D,EAAK,CAACA,EAAqBV,CAAiB,CAAC,EACvCc,GAAsBtN,EAAAA,YAAY,IAAM,CAC1CqN,EAAgB,MAAM,CAC1B,EAAK,CAACA,CAAe,CAAC,EAChBE,GAAuBvN,EAAAA,YAAY,IAAM,CAC3CqN,EAAgB,OAAO,CAC3B,EAAK,CAACA,CAAe,CAAC,EAMpB7N,EAAS,UAAC,UAAuB,CAC/B,IAAIgO,EACAC,EAAUxG,GAAK,CACjBA,EAAE,gBAAe,EACjBA,EAAE,eAAc,EAChB,IAAIyG,EAAMzG,EAAE,cACR0G,EAAQ,KAAK,IAAI1G,EAAE,MAAM,EAAI,KAAK,IAAIA,EAAE,MAAM,EAAIA,EAAE,OAASA,EAAE,OAGnEyG,EAAI,YAAcE,GAAMD,EAAO,IAAK,EAAE,CAC5C,EACI,OAACH,EAAwBrC,EAAa,WAAa,MAAQqC,IAA0B,QAAkBA,EAAsB,iBAAiB,QAASC,CAAO,EACvJ,IAAM,CACX,IAAII,GACHA,EAAyB1C,EAAa,WAAa,MAAQ0C,IAA2B,QAAkBA,EAAuB,oBAAoB,QAASJ,CAAO,CAC1K,CACG,EAAE,CAAE,CAAA,EACL,IAAIK,GAAsBnK,EAAAA,QAAQ,IAAM,CACtC,IAAIoK,EAAoB,IAAI,IAC5B,OAAApD,EAAK,QAAQxB,GAAO,CAClB,GAAI,CACF,IAAAlJ,CACD,EAAGkJ,EACAf,EAAiB,CAAC,IAAMsC,GAAuBvB,EAAKwB,EAAMvB,CAAO,EAAG,IAAM,CAC5E,IAAI4E,EACJ,OAAQA,EAAsB9C,GAAuB,KAAwC,OAASA,EAAmB/B,CAAG,KAAO,MAAQ6E,IAAwB,OAASA,EAAsB,EAC1M,CAAO,EACDD,EAAkB,IAAI9N,EAAKmI,CAAc,CAC/C,CAAK,EACM2F,CACR,EAAE,CAAC7C,EAAoBP,EAAMvB,CAAO,CAAC,EAClC6E,EAAe7C,SAAO,IAAI,EAC1B8C,GAAYvD,EAAK,KAAKxB,GAAOA,EAAI,MAAQ6B,CAAS,EAClDmD,GAAUxD,EAAK,IAAI,CAACxB,EAAKvE,IAAU,CACrC,GAAI,CACF,IAAA3E,CACD,EAAGkJ,EACAG,EAAWH,IAAQ+E,GACvB,OAAoBhO,EAAAA,IAAK+I,GAAQ,CAC/B,IAAKE,EACL,MAAOvE,EACP,SAAU0E,EACV,UAAW2E,EACX,SAAU5E,EACV,QAASD,EACT,YAAa6B,GAAa,KAC1B,eAAgB6C,GAAoB,IAAI7N,CAAG,CAC5C,EAAEA,CAAG,CACV,CAAG,EACDT,OAAAA,EAAS,UAET,UAAmC,CAC7ByO,EAAa,SAAW,MAC1BA,EAAa,QAAQ,eAAe,CAClC,MAAO,UACP,OAAQ,SAChB,CAAO,CAEP,EAAK,CAACjD,CAAS,CAAC,EACMnD,EAAAA,KAAM,MAAO,CAC/B,UAAW,gBACX,SAAU,CAACwD,GAA8BnL,EAAI,IAACgK,GAAQ,CACpD,KAAM,QACN,KAAmBhK,EAAI,IAAC2J,GAAiB,CACvC,KAAMuE,GACN,UAAW,QACnB,CAAO,EACD,UAAW,yCACX,QAAS,cACT,QAAShC,EACT,YAAakB,GACb,SAAU9B,CAChB,CAAK,EAAgBtL,EAAI,IAACmO,GAAiB,CACrC,YAAatC,GAAU,cACvB,UAAWF,EACX,SAAuB3L,EAAI,IAACoO,GAAW,CACrC,YAAa,2BACb,UAAW,aACX,SAAU,CAACvE,EAAUC,IAA0BnC,EAAK,KAAC,MAAO1G,GAAcA,GAAc,CACtF,IAAKoN,GAAK,CACJA,GAAK,OAGTpD,EAAa,QAAUoD,EACvBxE,EAAS,SAASwE,CAAC,EACpB,CAEX,EAAWxE,EAAS,cAAc,EAAG,GAAI,CAC/B,UAAWrJ,EAAW,eAAgB,CACpC,SAAUsJ,EAAS,oBAC/B,CAAW,EACD,KAAM,UACN,SAAUgC,EACV,SAAU,CAACmC,GAASpE,EAAS,WAAW,CAClD,CAAS,CAAC,CACV,CAAO,CACP,CAAK,EAAGsB,GAA8BnL,EAAI,IAACgK,GAAQ,CAC7C,KAAM,QACN,KAAmBhK,EAAI,IAAC2J,GAAiB,CACvC,KAAM2E,GACN,UAAW,QACnB,CAAO,EACD,UAAW,0CACX,QAAS,eACT,QAASjC,EACT,YAAagB,GACb,SAAU7B,CAChB,CAAK,CAAC,CACN,CAAG,CACH,CC1VO,SAAS+C,GAAgBC,EAAWhK,EAAS,CAClD,IAAIiK,EAAMC,KACNC,EAASlL,EAAO,QAAC,IAAM,IAAIgL,EAAI,WAAWD,EAAWhK,CAAO,EAAG,CAACiK,EAAKD,EAAWhK,CAAO,CAAC,EAC5FlF,OAAAA,EAAAA,UAAU,IAAM,IAAM,CACpBqP,EAAO,WAAU,CACrB,EAAK,CAACA,CAAM,CAAC,EACJA,CACT,CCNU,IAACC,GAA6BC,EAAa,cAAC,IAAI,EAInD,SAASC,GAAgBzO,EAAM,CACpC,GAAI,CACF,UAAAmO,EACA,QAAAhK,EACA,SAAA2H,CACD,EAAG9L,EACAsO,EAASJ,GAAgBC,EAAWhK,CAAO,EAC/C,OAAoBxE,EAAI,IAAC4O,GAAc,SAAU,CAC/C,MAAOD,EACP,SAAUxC,CACd,CAAG,CACH,CChBO,SAAS4C,IAAY,CAC1B,OAAOC,EAAkBJ,GAAe,kGAAkG,CAC5I,CCJA,SAASK,GAAmBC,EAAKC,EAASC,EAAQC,EAAOC,EAAQvP,EAAK0B,EAAK,CAAE,GAAI,CAAE,IAAI8N,EAAOL,EAAInP,CAAG,EAAE0B,CAAG,EAAOF,EAAQgO,EAAK,YAAgBjK,EAAO,CAAE8J,EAAO9J,CAAK,EAAG,MAAS,CAAKiK,EAAK,KAAQJ,EAAQ5N,CAAK,EAAY,QAAQ,QAAQA,CAAK,EAAE,KAAK8N,EAAOC,CAAM,CAAM,CACzQ,SAASE,GAAkBC,EAAI,CAAE,OAAO,UAAY,CAAE,IAAIC,EAAO,KAAMC,EAAO,UAAW,OAAO,IAAI,QAAQ,SAAUR,EAASC,EAAQ,CAAE,IAAIF,EAAMO,EAAG,MAAMC,EAAMC,CAAI,EAAG,SAASN,EAAM9N,EAAO,CAAE0N,GAAmBC,EAAKC,EAASC,EAAQC,EAAOC,EAAQ,OAAQ/N,CAAK,CAAI,CAAC,SAAS+N,EAAOM,EAAK,CAAEX,GAAmBC,EAAKC,EAASC,EAAQC,EAAOC,EAAQ,QAASM,CAAG,EAAKP,EAAM,MAAS,EAAI,CAAI,CAAG,CAIrY,IAAIzL,GAAMC,EAAI,OAAO,cAAc,EACxBgM,GAAwB,4CACxBC,GAA0B,8CAK1BC,GAAyB,yBAKzBC,GAA0B,+BAK1BC,GAA2B,gCAC/B,SAASC,GAAU5O,EAAK,CAC7B,IAAI6O,EAAU7O,EACd,OAAO6O,GAAW,MAAQ,OAAOA,EAAQ,IAAO,UAAY,OAAOA,EAAQ,SAAY,QACzF,CACO,SAASC,GAAwB9O,EAAK,CAC3C,OAAO4O,GAAU5O,CAAG,GAAKA,EAAI,UAAY0O,EAC3C,CACO,SAASK,GAAyB/O,EAAK,CAC5C,OAAO4O,GAAU5O,CAAG,GAAKA,EAAI,UAAY2O,EAC3C,CACO,SAASK,GAAWhP,EAAK,CAC9B,IAAIiP,EAAWjP,EACf,OAAOiP,GAAY,MAAQ,OAAOA,EAAS,IAAO,QACpD,CASO,SAASC,GAAYL,EAAS,CACnC,IAAIM,EAAK,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAIC,GAAM,EAC/EC,EAAU,UAAU,OAAS,EAAI,UAAU,CAAC,EAAI,OACpD,MAAO,CACL,QAAAR,EACA,GAAAM,EACA,QAAAE,CACJ,CACA,CAQO,SAASC,GAAaC,EAAWF,EAAS,CAC/C,MAAO,CACL,GAAIE,EACJ,QAAAF,CACJ,CACA,CACO,SAASG,IAAkB,CAChC,OAAI,OAAO,QAAU,KACZ,OAAO,OAEZ,OAAO,QAAU,MAAQ,OAAO,SAAW,OACtC,OAAO,OAET,IACT,CAQO,SAASC,GAAsBC,EAAI,CACxC,OAAOC,GAAuB,MAAM,KAAM,SAAS,CACrD,CACA,SAASA,IAAyB,CAChC,OAAAA,GAAyBzB,GAAkB,UAAW0B,EAAS,CAC7D,IAAIC,EAAU,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,IAC9EC,EAASN,KACb,GAAIM,GAAU,KACZ,MAAM,IAAI,MAAM,gDAAgD,EAElE,OAAO,IAAI,QAAQ,CAACjC,EAASC,IAAW,CACtC,IAAIiC,EACAZ,EAAKC,KACLY,EAAWvH,GAAS,CACtB,GAAI,CACF,KAAAwH,CACD,EAAGxH,EACJ,GAAI,CAACuG,GAAWiB,CAAI,EAAG,CACrB3N,GAAI,MAAM,kCAAmC2N,CAAI,EACjD,MACD,CAED,GADA3N,GAAI,MAAM,mBAAoB2N,CAAI,GAC7BA,GAAS,KAA0B,OAASA,EAAK,MAAQd,EAAI,CAChE7M,GAAI,MAAM,mCAAoC2N,CAAI,EAClD,MACD,CACD,OAAO,aAAaF,CAAS,EAC7B,OAAO,oBAAoB,UAAWC,CAAQ,EAC9CnC,EAAQoC,EAAK,OAAO,CAC5B,EACM,OAAO,iBAAiB,UAAWD,CAAQ,EAC3CD,EAAY,OAAO,WAAW,IAAM,CAClC,OAAO,oBAAoB,UAAWC,CAAQ,EAC9ClC,EAAO,IAAIoC,GAAa,mBAAmB,CAAC,CAC7C,EAAEL,CAAO,EACVC,EAAO,YAAYZ,GAAYU,EAAST,CAAE,EAAG,GAAG,CACtD,CAAK,CACL,CAAG,EACMQ,GAAuB,MAAM,KAAM,SAAS,CACrD,CC1HA,SAAS5P,GAAgBC,EAAKvB,EAAKwB,EAAO,CAAE,OAAAxB,EAAMyB,GAAezB,CAAG,EAAOA,KAAOuB,EAAO,OAAO,eAAeA,EAAKvB,EAAK,CAAE,MAAOwB,EAAO,WAAY,GAAM,aAAc,GAAM,SAAU,EAAM,CAAA,EAAYD,EAAIvB,CAAG,EAAIwB,EAAgBD,CAAM,CAC5O,SAASE,GAAeC,EAAK,CAAE,IAAI1B,EAAM2B,GAAaD,EAAK,QAAQ,EAAG,OAAO,OAAO1B,GAAQ,SAAWA,EAAM,OAAOA,CAAG,CAAI,CAC3H,SAAS2B,GAAaC,EAAOC,EAAM,CAAE,GAAI,OAAOD,GAAU,UAAYA,IAAU,KAAM,OAAOA,EAAO,IAAIE,EAAOF,EAAM,OAAO,WAAW,EAAG,GAAIE,IAAS,OAAW,CAAE,IAAIC,EAAMD,EAAK,KAAKF,EAAOC,GAAQ,SAAS,EAAG,GAAI,OAAOE,GAAQ,SAAU,OAAOA,EAAK,MAAM,IAAI,UAAU,8CAA8C,CAAI,CAAC,OAAQF,IAAS,SAAW,OAAS,QAAQD,CAAK,CAAI,CAClX,MAAM8P,WAAwB,KAAM,CACzC,aAAc,CACZ,MAAM,GAAG,SAAS,EAClBpQ,GAAgB,KAAM,oBAAqB,EAAI,CAChD,CACH,CACO,SAASqQ,GAAkBpM,EAAO,CACvC,OAAOA,EAAM,iBACf,CCXA,SAAS2J,GAAmBC,EAAKC,EAASC,EAAQC,EAAOC,EAAQvP,EAAK0B,EAAK,CAAE,GAAI,CAAE,IAAI8N,EAAOL,EAAInP,CAAG,EAAE0B,CAAG,EAAOF,EAAQgO,EAAK,YAAgBjK,EAAO,CAAE8J,EAAO9J,CAAK,EAAG,MAAS,CAAKiK,EAAK,KAAQJ,EAAQ5N,CAAK,EAAY,QAAQ,QAAQA,CAAK,EAAE,KAAK8N,EAAOC,CAAM,CAAM,CACzQ,SAASE,EAAkBC,EAAI,CAAE,OAAO,UAAY,CAAE,IAAIC,EAAO,KAAMC,EAAO,UAAW,OAAO,IAAI,QAAQ,SAAUR,EAASC,EAAQ,CAAE,IAAIF,EAAMO,EAAG,MAAMC,EAAMC,CAAI,EAAG,SAASN,EAAM9N,EAAO,CAAE0N,GAAmBC,EAAKC,EAASC,EAAQC,EAAOC,EAAQ,OAAQ/N,CAAK,CAAI,CAAC,SAAS+N,EAAOM,EAAK,CAAEX,GAAmBC,EAAKC,EAASC,EAAQC,EAAOC,EAAQ,QAASM,CAAG,EAAKP,EAAM,MAAS,EAAI,CAAI,CAAG,CAKrY,IAAIzL,EAAMC,EAAI,OAAO,cAAc,EAI5B,SAAS8N,GAAiBC,EAAIC,EAAc,CACjDjO,OAAAA,EAAI,KAAK,2BAA2B,OAAOiO,EAAc,MAAM,CAAC,EACzD,IAAID,EAAG,cAAcC,CAAY,CAC1C,CAMO,SAASC,GAAqBd,EAAIe,EAAKC,EAAK,CACjD,OAAOC,GAAsB,MAAM,KAAM,SAAS,CACpD,CACA,SAASA,IAAwB,CAC/B,OAAAA,GAAwBzC,EAAkB,UAAWoC,EAAIM,EAAYC,EAAS,CAC5EvO,EAAI,KAAK,0BAA0B,EACnC,IAAIwO,EAAQ,MAAMF,EAAW,kBAC7B,GAAIE,EAAM,SAAW,EACnB,MAAM,IAAIX,GAAgB,4BAA4B,EAExD7N,EAAI,KAAK,mBAAoBwO,CAAK,EAClC,IAAIC,EAAOD,EAAM,CAAC,EAClBxO,EAAI,KAAK,6BAA8ByO,CAAI,EAC3C,IAAIC,EAAU,MAAMJ,EAAW,aAAaG,CAAI,EAC5CE,EAAS,CACX,KAAAF,EACA,GAAI3B,GAAQ,CAClB,EACI9M,OAAAA,EAAI,KAAK,8BAA+B2O,CAAM,EACvC,CACL,QAAAD,EACA,OAAAC,EACA,WAAAL,EACA,QAAAC,EACA,GAAAP,CACN,CACA,CAAG,EACMK,GAAsB,MAAM,KAAM,SAAS,CACpD,CACO,SAASO,GAAiBZ,EAAIC,EAAcrN,EAAS,CAC1DZ,OAAAA,EAAI,KAAK,mBAAoBiO,CAAY,EAClC,IAAID,EAAG,WAAWC,EAAcrN,CAAO,CAChD,CACA,SAASiO,GAAiBnR,EAAK,CAC7B,OAAOA,GAAO,MAAQ,OAAOA,GAAQ,QACvC,CACA,SAASoR,IAA8B,CACrC,OAAOC,GAA6B,MAAM,KAAM,SAAS,CAC3D,CACA,SAASA,IAA+B,CACtC,OAAAA,GAA+BnD,EAAkB,WAAa,CAC5D,IAAIe,EAAW,MAAMQ,GAAsBjB,EAAuB,EAClE,GAAI,CAAC2C,GAAiBlC,CAAQ,EAC5B,MAAM,IAAI,MAAM,wCAAwC,OAAOA,CAAQ,CAAC,EAE1E,OAAOA,CACX,CAAG,EACMoC,GAA6B,MAAM,KAAM,SAAS,CAC3D,CACO,SAASC,IAAoB,CAClC,OAAOC,GAAmB,MAAM,KAAM,SAAS,CACjD,CACA,SAASA,IAAqB,CAC5B,OAAAA,GAAqBrD,EAAkB,WAAa,CAClD,IAAIsD,EAAe,IAAI,gBAAgB,OAAO,SAAS,MAAM,EAC7D,OAAQA,EAAa,IAAI,cAAc,EAAC,CACtC,IAAK,SACH,OAAOJ,GAA2B,CACrC,CACD,MAAO,EACX,CAAG,EACMG,GAAmB,MAAM,KAAM,SAAS,CACjD,CACO,SAASE,GAAmBC,EAAKC,EAAKC,EAAK,CAChD,OAAOC,GAAoB,MAAM,KAAM,SAAS,CAClD,CACA,SAASA,IAAsB,CAC7B,OAAAA,GAAsB3D,EAAkB,UAAWoC,EAAIM,EAAYkB,EAAgB,CACjF,IAAIC,EACJ,GAAI,CACFA,EAAiB,MAAMvB,GAAqBF,EAAIM,EAAYkB,CAAc,CAC3E,OAAQrM,EAAG,CAEV,GAAI,CAAC2K,GAAkB3K,CAAC,EACtB,MAAMA,CAET,CACD,OAAOsM,CACX,CAAG,EACMF,GAAoB,MAAM,KAAM,SAAS,CAClD,CCnGA,SAASxS,GAAQC,EAAQC,EAAgB,CAAE,IAAIC,EAAO,OAAO,KAAKF,CAAM,EAAG,GAAI,OAAO,sBAAuB,CAAE,IAAIG,EAAU,OAAO,sBAAsBH,CAAM,EAAGC,IAAmBE,EAAUA,EAAQ,OAAO,SAAUC,EAAK,CAAE,OAAO,OAAO,yBAAyBJ,EAAQI,CAAG,EAAE,UAAW,CAAE,GAAIF,EAAK,KAAK,MAAMA,EAAMC,CAAO,CAAE,CAAG,OAAOD,CAAO,CACrV,SAASG,GAAcC,EAAQ,CAAE,QAASC,EAAI,EAAGA,EAAI,UAAU,OAAQA,IAAK,CAAE,IAAIC,EAAiB,UAAUD,CAAC,GAAnB,KAAuB,UAAUA,CAAC,EAAI,CAAE,EAAEA,EAAI,EAAIR,GAAQ,OAAOS,CAAM,EAAG,EAAE,EAAE,QAAQ,SAAUrB,EAAK,CAAEsB,GAAgBH,EAAQnB,EAAKqB,EAAOrB,CAAG,CAAC,CAAI,CAAA,EAAI,OAAO,0BAA4B,OAAO,iBAAiBmB,EAAQ,OAAO,0BAA0BE,CAAM,CAAC,EAAIT,GAAQ,OAAOS,CAAM,CAAC,EAAE,QAAQ,SAAUrB,EAAK,CAAE,OAAO,eAAemB,EAAQnB,EAAK,OAAO,yBAAyBqB,EAAQrB,CAAG,CAAC,CAAE,CAAE,CAAI,CAAC,OAAOmB,CAAS,CAC1f,SAASG,GAAgBC,EAAKvB,EAAKwB,EAAO,CAAE,OAAAxB,EAAMyB,GAAezB,CAAG,EAAOA,KAAOuB,EAAO,OAAO,eAAeA,EAAKvB,EAAK,CAAE,MAAOwB,EAAO,WAAY,GAAM,aAAc,GAAM,SAAU,EAAM,CAAA,EAAYD,EAAIvB,CAAG,EAAIwB,EAAgBD,CAAM,CAC5O,SAASE,GAAeC,EAAK,CAAE,IAAI1B,EAAM2B,GAAaD,EAAK,QAAQ,EAAG,OAAO,OAAO1B,GAAQ,SAAWA,EAAM,OAAOA,CAAG,CAAI,CAC3H,SAAS2B,GAAaC,EAAOC,EAAM,CAAE,GAAI,OAAOD,GAAU,UAAYA,IAAU,KAAM,OAAOA,EAAO,IAAIE,EAAOF,EAAM,OAAO,WAAW,EAAG,GAAIE,IAAS,OAAW,CAAE,IAAIC,EAAMD,EAAK,KAAKF,EAAOC,GAAQ,SAAS,EAAG,GAAI,OAAOE,GAAQ,SAAU,OAAOA,EAAK,MAAM,IAAI,UAAU,8CAA8C,CAAI,CAAC,OAAQF,IAAS,SAAW,OAAS,QAAQD,CAAK,CAAI,CAazX,IAAI2R,GAAkB,IAClBC,GAAmB,IAAM,GACzBC,GAAe,OAAO,OAAO,CAAA,CAAE,EAC5B,SAASC,GAAUpT,EAAM,CAC9B,GAAI,CACF,GAAAoQ,EAAK,UACL,SAAAtE,EACA,eAAAuH,EACA,aAAAC,EACA,eAAAC,EAAiBJ,GACjB,qBAAAK,EAAuBN,GACvB,qBAAAO,EAAuBP,GACvB,oBAAAQ,EAAsBR,GACtB,kBAAAS,EAAoBC,GACpB,QAAAC,EACA,UAAAC,EACA,aAAAC,CACD,EAAG/T,EACAgU,EAAgBnJ,SAAO,IAAI,EAC3B,CAACoJ,EAAeC,CAAgB,EAAIlJ,EAAQ,SAAC,EAAK,EAClD,CAACmJ,EAAQC,CAAS,EAAIpJ,EAAQ,SAAA,EAClC/L,EAAS,UAAC,UAAyB,CACjC,GAAI,CAAC+U,EAAc,QAAS,CAC1BI,EAAU,MAAS,EACnB,MACD,CACD,IAAIlC,EAAStR,GAAc,CAAA,EAAIyT,GAAY,kBAAmB,CAAA,EAC1DnC,EAAO,WAAa,SACtBA,EAAO,SAAW,IAEpB,OAAO,OAAOA,EAAO,SAAUqB,CAAc,EAG7CrB,EAAO,QAAU,GACjB,IAAIoC,EAAY,IAAIC,GAAarC,EAAQ8B,EAAc,OAAO,EAC1DQ,EAAS,IAAM,CACjBF,EAAU,IAAI,cAAeE,CAAM,EACnCN,EAAiB,EAAI,CAC3B,EACI,OAAAI,EAAU,GAAG,cAAeE,CAAM,EAC9Bb,GAAqB,MACvBW,EAAU,qBAAqBX,CAAiB,EAElDW,EAAU,KAAI,EACdF,EAAUE,CAAS,EACnBb,EAAqBa,CAAS,EACvB,IAAM,CACXA,EAAU,QAAO,CACvB,CACA,EAAK,CAACf,EAAgBI,EAAmBF,EAAsBS,EAAkBE,CAAS,CAAC,EACzF,IAAI/I,EAAejI,EAAAA,QAAQ,IAAMqR,GAAS,IAAM,CAC1CN,GAAU,MAAQA,EAAO,gBAC3BA,GAAW,MAAqCA,EAAO,aAE1D,EAAElB,EAAe,EAAG,CAACkB,CAAM,CAAC,EAC7B,OAAArV,GAAkBkV,EAAc,QAAS3I,CAAY,EACjC/D,EAAAA,KAAM,MAAO,CAC/B,UAAW,kCACX,SAAU,CAAc3H,EAAI,IAAC,MAAO,CAClC,UAAW,cACX,IAAKqU,CACN,CAAA,EAAGC,GAAiBE,GAAuBxU,EAAAA,IAAK+U,GAAqB,SAAU,CAC9E,MAAOP,EACP,SAAuBxU,EAAI,IAACgV,GAAiB,CAC3C,eAAgBtB,EAChB,GAAIjD,EACJ,OAAQ+D,EACR,aAAcb,EACd,eAAgBE,EAChB,oBAAqBE,EACrB,QAASG,EACT,UAAWC,EACX,aAAcC,EACd,SAAUjI,CAClB,CAAO,CACP,CAAK,CAAC,CACN,CAAG,CACH,CC9FU,IAAC8I,GAAmB,mBACvB,SAASC,GAA6BC,EAAUC,EAAS,CAC9D,GAAI,CACFD,EAAS,IAAIF,GAAkBG,CAAO,CACvC,MAAiB,CAEjB,CACH,CACO,SAASC,GAAyBF,EAAUC,EAAS,CAC1D,OAAAD,EAAS,GAAGF,GAAkBG,CAAO,EAC9B,IAAMF,GAA6BC,EAAUC,CAAO,CAC7D,CACO,SAASE,GAAoBH,EAAUxE,EAAS,CACrDwE,EAAS,KAAKF,GAAkBtE,CAAO,CACzC,CCdA,IAAIlQ,GAAY,CAAC,KAAM,WAAY,SAAS,EAC5C,SAASE,GAAQC,EAAQC,EAAgB,CAAE,IAAIC,EAAO,OAAO,KAAKF,CAAM,EAAG,GAAI,OAAO,sBAAuB,CAAE,IAAIG,EAAU,OAAO,sBAAsBH,CAAM,EAAGC,IAAmBE,EAAUA,EAAQ,OAAO,SAAUC,EAAK,CAAE,OAAO,OAAO,yBAAyBJ,EAAQI,CAAG,EAAE,UAAW,CAAE,GAAIF,EAAK,KAAK,MAAMA,EAAMC,CAAO,CAAE,CAAG,OAAOD,CAAO,CACrV,SAASG,GAAcC,EAAQ,CAAE,QAASC,EAAI,EAAGA,EAAI,UAAU,OAAQA,IAAK,CAAE,IAAIC,EAAiB,UAAUD,CAAC,GAAnB,KAAuB,UAAUA,CAAC,EAAI,CAAE,EAAEA,EAAI,EAAIR,GAAQ,OAAOS,CAAM,EAAG,EAAE,EAAE,QAAQ,SAAUrB,EAAK,CAAEsB,GAAgBH,EAAQnB,EAAKqB,EAAOrB,CAAG,CAAC,CAAI,CAAA,EAAI,OAAO,0BAA4B,OAAO,iBAAiBmB,EAAQ,OAAO,0BAA0BE,CAAM,CAAC,EAAIT,GAAQ,OAAOS,CAAM,CAAC,EAAE,QAAQ,SAAUrB,EAAK,CAAE,OAAO,eAAemB,EAAQnB,EAAK,OAAO,yBAAyBqB,EAAQrB,CAAG,CAAC,CAAE,CAAE,CAAI,CAAC,OAAOmB,CAAS,CAC1f,SAASG,GAAgBC,EAAKvB,EAAKwB,EAAO,CAAE,OAAAxB,EAAMyB,GAAezB,CAAG,EAAOA,KAAOuB,EAAO,OAAO,eAAeA,EAAKvB,EAAK,CAAE,MAAOwB,EAAO,WAAY,GAAM,aAAc,GAAM,SAAU,EAAM,CAAA,EAAYD,EAAIvB,CAAG,EAAIwB,EAAgBD,CAAM,CAC5O,SAASE,GAAeC,EAAK,CAAE,IAAI1B,EAAM2B,GAAaD,EAAK,QAAQ,EAAG,OAAO,OAAO1B,GAAQ,SAAWA,EAAM,OAAOA,CAAG,CAAI,CAC3H,SAAS2B,GAAaC,EAAOC,EAAM,CAAE,GAAI,OAAOD,GAAU,UAAYA,IAAU,KAAM,OAAOA,EAAO,IAAIE,EAAOF,EAAM,OAAO,WAAW,EAAG,GAAIE,IAAS,OAAW,CAAE,IAAIC,EAAMD,EAAK,KAAKF,EAAOC,GAAQ,SAAS,EAAG,GAAI,OAAOE,GAAQ,SAAU,OAAOA,EAAK,MAAM,IAAI,UAAU,8CAA8C,CAAI,CAAC,OAAQF,IAAS,SAAW,OAAS,QAAQD,CAAK,CAAI,CACzX,SAASI,GAAyBX,EAAQY,EAAU,CAAE,GAAIZ,GAAU,KAAM,MAAO,GAAI,IAAIF,EAASe,GAA8Bb,EAAQY,CAAQ,EAAOjC,EAAK,EAAG,GAAI,OAAO,sBAAuB,CAAE,IAAImC,EAAmB,OAAO,sBAAsBd,CAAM,EAAG,IAAK,EAAI,EAAG,EAAIc,EAAiB,OAAQ,IAAOnC,EAAMmC,EAAiB,CAAC,EAAO,EAAAF,EAAS,QAAQjC,CAAG,GAAK,IAAkB,OAAO,UAAU,qBAAqB,KAAKqB,EAAQrB,CAAG,IAAamB,EAAOnB,CAAG,EAAIqB,EAAOrB,CAAG,EAAI,CAAG,OAAOmB,CAAS,CAC5e,SAASe,GAA8Bb,EAAQY,EAAU,CAAE,GAAIZ,GAAU,KAAM,MAAO,CAAE,EAAE,IAAIF,EAAS,CAAE,EAAMiB,EAAa,OAAO,KAAKf,CAAM,EAAOrB,EAAKoB,EAAG,IAAKA,EAAI,EAAGA,EAAIgB,EAAW,OAAQhB,IAAOpB,EAAMoC,EAAWhB,CAAC,EAAO,EAAAa,EAAS,QAAQjC,CAAG,GAAK,KAAamB,EAAOnB,CAAG,EAAIqB,EAAOrB,CAAG,GAAK,OAAOmB,CAAS,CAS5S,SAASqU,GAAclV,EAAM,CAClC,GAAI,CACA,GAAAoQ,EACA,SAAArH,EACA,QAAAoM,CACN,EAAQnV,EACJmD,EAAOzB,GAAyB1B,EAAMI,EAAS,EAC7C,CAACgV,EAAUC,CAAW,EAAIrK,EAAQ,SAACjC,CAAQ,EAC3CuM,EAAWC,KACXC,EAA2B/V,EAAW,YAACyS,GAAU,CAMjDoD,EADElF,IAAOqF,GACAC,GAAoB,CAC3B,aAAcxD,CACf,CAAA,EAEQyD,GAAoBvF,EAAI,CAC/B,aAAc8B,CACf,CAAA,CAJC,CAMR,EAAK,CAAC9B,EAAIkF,CAAQ,CAAC,EAIjB,MAHI,CAACF,GAAYrM,GACfsM,EAAY,EAAI,EAEbD,EAGezV,MAAKyT,GAAWxS,GAAcA,GAAc,CAC9D,GAAIwP,EACJ,qBAAsBoF,CAE1B,EAAKrS,CAAI,EAAG,GAAI,CACZ,SAAUgS,CACX,CAAA,CAAC,EARoBxV,EAAI,IAACiW,GAAgB,CAAA,CAAE,CAS/C,CCjDO,SAASC,GAAoBV,EAAS,CAC3C,IAAIW,EAAY,CAAC,GAAGX,EAAQ,QAAO,CAAE,EAAE,OAAOnV,GAAQ,CACpD,GAAI,CAAG,CAAA+V,CAAM,EAAI/V,EACjB,OAAOgW,GAAkBD,CAAM,GAAKE,GAAwBF,CAAM,CACtE,CAAG,EACD,OAAOD,EAAU,IAAII,GAAS,CAC5B,GAAI,CAACC,EAAYJ,CAAM,EAAIG,EAC3B,GAAID,GAAwBF,CAAM,EAAG,CACnC,GAAI,CACF,gBAAiBK,CAClB,EAAGL,EACJ,OAAoBpW,MAAKyW,EAAU,CAAE,EAAED,CAAU,CAClD,CACD,GAAI,CACF,UAAWE,CACZ,EAAGN,EACJ,OAAoBpW,MAAK0W,EAAS,CAAE,EAAEF,CAAU,CACpD,CAAG,CACH,CAMO,SAASG,IAAsB,CACpC,IAAInB,EAAUoB,KACVC,EAAmBpT,EAAAA,QAAQ,IAAMyS,GAAoBV,CAAO,EAAG,CAACA,CAAO,CAAC,EAC5E,OAAOqB,CACT,CC/BU,IAACC,GAAmCjI,EAAa,cAAC,EAAE,EACnDkI,GAA8ClI,EAAa,cAAC,EAAE,EAC9DmI,GAA2BnI,EAAa,cAAC,IAAI,ECF7CoI,GAAiCpI,EAAa,cAAC,IAAI,ECD9D,SAASI,GAAmBC,EAAKC,EAASC,EAAQC,EAAOC,EAAQvP,EAAK0B,EAAK,CAAE,GAAI,CAAE,IAAI8N,EAAOL,EAAInP,CAAG,EAAE0B,CAAG,EAAOF,EAAQgO,EAAK,YAAgBjK,EAAO,CAAE8J,EAAO9J,CAAK,EAAG,MAAS,CAAKiK,EAAK,KAAQJ,EAAQ5N,CAAK,EAAY,QAAQ,QAAQA,CAAK,EAAE,KAAK8N,EAAOC,CAAM,CAAM,CACzQ,SAASE,GAAkBC,EAAI,CAAE,OAAO,UAAY,CAAE,IAAIC,EAAO,KAAMC,EAAO,UAAW,OAAO,IAAI,QAAQ,SAAUR,EAASC,EAAQ,CAAE,IAAIF,EAAMO,EAAG,MAAMC,EAAMC,CAAI,EAAG,SAASN,EAAM9N,EAAO,CAAE0N,GAAmBC,EAAKC,EAASC,EAAQC,EAAOC,EAAQ,OAAQ/N,CAAK,CAAI,CAAC,SAAS+N,EAAOM,EAAK,CAAEX,GAAmBC,EAAKC,EAASC,EAAQC,EAAOC,EAAQ,QAASM,CAAG,EAAKP,EAAM,MAAS,EAAI,CAAI,CAAG,CAM9X,IAAI6H,GAAmCrI,EAAAA,cAAc,IAAI,EAIzD,SAASsI,GAAsB9W,EAAM,CAC1C,GAAI,CACF,SAAA8L,CACD,EAAG9L,EACAsO,EAASI,KACT,CAACqI,EAAcC,CAAe,EAAIhM,EAAQ,SAAA,EAC1C,CAAC/F,EAAOgS,CAAQ,EAAIjM,EAAQ,SAAA,EAChC/L,EAAS,UAAC,UAAkC,CAC1C,IAAIiY,EAAa,GACjB,SAASC,GAAyB,CAChC,OAAOC,EAAwB,MAAM,KAAM,SAAS,CACrD,CACD,SAASA,GAA0B,CACjC,OAAAA,EAA0BjI,GAAkB,WAAa,CACvD,GAAI,CACF,IAAIkI,EAAwB,MAAM/I,EAAO,wBACpC4I,GACHF,EAAgB,IAAI,IAAIK,CAAqB,CAAC,CAEjD,OAAQ3Q,EAAG,CACLwQ,GACHD,EAASvQ,CAAC,CAEb,CACT,CAAO,EACM0Q,EAAwB,MAAM,KAAM,SAAS,CACrD,CACD,OAAAD,IACO,IAAM,CACXD,EAAa,EACnB,CACA,EAAK,CAAC5I,CAAM,CAAC,EACX,IAAIgJ,EAAYP,GAAgB,KAChC,OAAIO,GAAarS,GAAS,KACJtF,EAAAA,IAAKiW,GAAgB,CACvC,UAAW0B,GAAarS,GAAS,KACjC,aAAcsS,GAAgBtS,CAAK,CACzC,CAAK,EAEiBtF,EAAI,IAACkX,GAAoB,SAAU,CACrD,MAAOE,EACP,SAAUjL,CACd,CAAG,CACH,CCpDO,SAAS0L,IAAkB,CAChC,OAAO7I,EAAkBkI,GAAqB,2HAA2H,CAC3K,CCJA,SAASjI,GAAmBC,EAAKC,EAASC,EAAQC,EAAOC,EAAQvP,EAAK0B,EAAK,CAAE,GAAI,CAAE,IAAI8N,EAAOL,EAAInP,CAAG,EAAE0B,CAAG,EAAOF,EAAQgO,EAAK,YAAgBjK,EAAO,CAAE8J,EAAO9J,CAAK,EAAG,MAAS,CAAKiK,EAAK,KAAQJ,EAAQ5N,CAAK,EAAY,QAAQ,QAAQA,CAAK,EAAE,KAAK8N,EAAOC,CAAM,CAAM,CACzQ,SAASE,GAAkBC,EAAI,CAAE,OAAO,UAAY,CAAE,IAAIC,EAAO,KAAMC,EAAO,UAAW,OAAO,IAAI,QAAQ,SAAUR,EAASC,EAAQ,CAAE,IAAIF,EAAMO,EAAG,MAAMC,EAAMC,CAAI,EAAG,SAASN,EAAM9N,EAAO,CAAE0N,GAAmBC,EAAKC,EAASC,EAAQC,EAAOC,EAAQ,OAAQ/N,CAAK,CAAI,CAAC,SAAS+N,EAAOM,EAAK,CAAEX,GAAmBC,EAAKC,EAASC,EAAQC,EAAOC,EAAQ,QAASM,CAAG,EAAKP,EAAM,MAAS,EAAI,CAAI,CAAG,CACrY,SAAS1O,GAAQC,EAAQC,EAAgB,CAAE,IAAIC,EAAO,OAAO,KAAKF,CAAM,EAAG,GAAI,OAAO,sBAAuB,CAAE,IAAIG,EAAU,OAAO,sBAAsBH,CAAM,EAAGC,IAAmBE,EAAUA,EAAQ,OAAO,SAAUC,EAAK,CAAE,OAAO,OAAO,yBAAyBJ,EAAQI,CAAG,EAAE,UAAW,CAAE,GAAIF,EAAK,KAAK,MAAMA,EAAMC,CAAO,CAAE,CAAG,OAAOD,CAAO,CACrV,SAASG,GAAcC,EAAQ,CAAE,QAASC,EAAI,EAAGA,EAAI,UAAU,OAAQA,IAAK,CAAE,IAAIC,EAAiB,UAAUD,CAAC,GAAnB,KAAuB,UAAUA,CAAC,EAAI,CAAE,EAAEA,EAAI,EAAIR,GAAQ,OAAOS,CAAM,EAAG,EAAE,EAAE,QAAQ,SAAUrB,EAAK,CAAEsB,GAAgBH,EAAQnB,EAAKqB,EAAOrB,CAAG,CAAC,CAAI,CAAA,EAAI,OAAO,0BAA4B,OAAO,iBAAiBmB,EAAQ,OAAO,0BAA0BE,CAAM,CAAC,EAAIT,GAAQ,OAAOS,CAAM,CAAC,EAAE,QAAQ,SAAUrB,EAAK,CAAE,OAAO,eAAemB,EAAQnB,EAAK,OAAO,yBAAyBqB,EAAQrB,CAAG,CAAC,CAAE,CAAE,CAAI,CAAC,OAAOmB,CAAS,CAC1f,SAASG,GAAgBC,EAAKvB,EAAKwB,EAAO,CAAE,OAAAxB,EAAMyB,GAAezB,CAAG,EAAOA,KAAOuB,EAAO,OAAO,eAAeA,EAAKvB,EAAK,CAAE,MAAOwB,EAAO,WAAY,GAAM,aAAc,GAAM,SAAU,EAAM,CAAA,EAAYD,EAAIvB,CAAG,EAAIwB,EAAgBD,CAAM,CAC5O,SAASE,GAAeC,EAAK,CAAE,IAAI1B,EAAM2B,GAAaD,EAAK,QAAQ,EAAG,OAAO,OAAO1B,GAAQ,SAAWA,EAAM,OAAOA,CAAG,CAAI,CAC3H,SAAS2B,GAAaC,EAAOC,EAAM,CAAE,GAAI,OAAOD,GAAU,UAAYA,IAAU,KAAM,OAAOA,EAAO,IAAIE,EAAOF,EAAM,OAAO,WAAW,EAAG,GAAIE,IAAS,OAAW,CAAE,IAAIC,EAAMD,EAAK,KAAKF,EAAOC,GAAQ,SAAS,EAAG,GAAI,OAAOE,GAAQ,SAAU,OAAOA,EAAK,MAAM,IAAI,UAAU,8CAA8C,CAAI,CAAC,OAAQF,IAAS,SAAW,OAAS,QAAQD,CAAK,CAAI,CAOlX,SAASmW,GAAczX,EAAM,CAClC,GAAI,CACF,WAAA0X,EACA,gBAAAC,EACA,oBAAAjE,EACA,qBAAAD,EACA,QAAA0B,EACA,eAAA9B,EAA8B1T,EAAAA,IAAKiW,GAAgB,EAAE,CACtD,EAAG5V,EACA4X,EAAcC,KACdC,EAAerY,EAAAA,YAAY,CAACsY,EAAc3H,IAAO,CACnD,GAAI,CACF,SAAA4H,CACD,EAAGD,EACJ,GAAI,CACF,GAAIC,GAAY,KACd,OAAOpX,GAAcA,GAAc,CACjC,MAAO,UAAY,CACjB,IAAIqX,EAAS9I,GAAkB,WAAa,CAC1C,OAAOyI,EAAYI,CAAQ,CACzC,CAAa,EACD,SAASE,GAAQ,CACf,OAAOD,EAAO,MAAM,KAAM,SAAS,CACpC,CACD,OAAOC,CACnB,EAAa,CACb,EAAWH,CAAY,EAAG,GAAI,CACpB,iBAAkB3H,CAC5B,CAAS,CAEJ,MAAW,CAEX,CACD,OAAO+H,GAAe,QAAQJ,EAAc3H,CAAE,CAClD,EAAK,CAACwH,CAAW,CAAC,EAChB,OAAoBjY,EAAAA,IAAK,MAAO,CAC9B,UAAW,cACX,SAAU+X,EAAW,IAAIU,GAAkBzY,EAAAA,IAAK,MAAO,CACrD,UAAWQ,EAAW,WAAY,CAChC,OAAQiY,EAAE,KAAOT,CACzB,CAAO,EACD,SAAuBhY,EAAI,IAACuV,GAAe,CACzC,GAAIkD,EAAE,GACN,SAAUA,EAAE,KAAOT,EACnB,eAAgBtE,EAChB,aAAc+E,EAAE,aAChB,eAAgBA,EAAE,eAClB,oBAAqB1E,EACrB,qBAAsBD,EACtB,QAASqE,EACT,QAAS3C,CACjB,EAASiD,EAAE,GAAG,CACd,EAAOA,EAAE,EAAE,CAAC,CACZ,CAAG,CACH,CC5DO,SAASC,IAAgB,CAC9B,OAAO1J,EAAkBiI,GAAmB,8FAA8F,CAC5I,CCPO,SAAS0B,IAAU,CACxB,OAAO3J,EAAkBgI,GAAa,0FAA0F,CAClI,CCJA,SAAS/H,GAAmBC,EAAKC,EAASC,EAAQC,EAAOC,EAAQvP,EAAK0B,EAAK,CAAE,GAAI,CAAE,IAAI8N,EAAOL,EAAInP,CAAG,EAAE0B,CAAG,EAAOF,EAAQgO,EAAK,YAAgBjK,EAAO,CAAE8J,EAAO9J,CAAK,EAAG,MAAS,CAAKiK,EAAK,KAAQJ,EAAQ5N,CAAK,EAAY,QAAQ,QAAQA,CAAK,EAAE,KAAK8N,EAAOC,CAAM,CAAM,CACzQ,SAASE,GAAkBC,EAAI,CAAE,OAAO,UAAY,CAAE,IAAIC,EAAO,KAAMC,EAAO,UAAW,OAAO,IAAI,QAAQ,SAAUR,EAASC,EAAQ,CAAE,IAAIF,EAAMO,EAAG,MAAMC,EAAMC,CAAI,EAAG,SAASN,EAAM9N,EAAO,CAAE0N,GAAmBC,EAAKC,EAASC,EAAQC,EAAOC,EAAQ,OAAQ/N,CAAK,CAAI,CAAC,SAAS+N,EAAOM,EAAK,CAAEX,GAAmBC,EAAKC,EAASC,EAAQC,EAAOC,EAAQ,QAASM,CAAG,EAAKP,EAAM,MAAS,EAAI,CAAI,CAAG,CACrY,SAAShO,EAAgBC,EAAKvB,EAAKwB,EAAO,CAAE,OAAAxB,EAAMyB,GAAezB,CAAG,EAAOA,KAAOuB,EAAO,OAAO,eAAeA,EAAKvB,EAAK,CAAE,MAAOwB,EAAO,WAAY,GAAM,aAAc,GAAM,SAAU,EAAM,CAAA,EAAYD,EAAIvB,CAAG,EAAIwB,EAAgBD,CAAM,CAC5O,SAASE,GAAeC,EAAK,CAAE,IAAI1B,EAAM2B,GAAaD,EAAK,QAAQ,EAAG,OAAO,OAAO1B,GAAQ,SAAWA,EAAM,OAAOA,CAAG,CAAI,CAC3H,SAAS2B,GAAaC,EAAOC,EAAM,CAAE,GAAI,OAAOD,GAAU,UAAYA,IAAU,KAAM,OAAOA,EAAO,IAAIE,EAAOF,EAAM,OAAO,WAAW,EAAG,GAAIE,IAAS,OAAW,CAAE,IAAIC,EAAMD,EAAK,KAAKF,EAAOC,GAAQ,SAAS,EAAG,GAAI,OAAOE,GAAQ,SAAU,OAAOA,EAAK,MAAM,IAAI,UAAU,8CAA8C,CAAI,CAAC,OAAQF,IAAS,SAAW,OAAS,QAAQD,CAAK,CAAI,CAOzX,IAAIiC,EAAMC,EAAI,OAAO,sBAAsB,EAMpC,MAAM+U,CAAqB,CAWhC,YAAYC,EAAgB,CAC1B,IAAIC,EAAW,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,GAC/EC,EAAO,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAID,EAC/EzX,EAAgB,KAAM,iBAAkB,MAAM,EAC9CA,EAAgB,KAAM,WAAY,MAAM,EACxCA,EAAgB,KAAM,OAAQ,MAAM,EACpCA,EAAgB,KAAM,cAAe,CAAC,EACtCA,EAAgB,KAAM,kBAAmB,MAAM,EAC/CA,EAAgB,KAAM,YAAa,CAAA,CAAE,EACrCA,EAAgB,KAAM,wBAAyB,MAAM,EACrDA,EAAgB,KAAM,sBAAuB,MAAM,EACnDA,EAAgB,KAAM,cAAe,IAAI,GAAK,EAC9C,KAAK,eAAiBwX,EACtB,KAAK,SAAWC,EAChB,KAAK,KAAOC,EACRA,IAASD,IACX,KAAK,UAAYE,GAAS,KAAK,UAAU,KAAK,IAAI,EAAGJ,EAAqB,gBAAgB,EAE7F,CACD,eAAeK,EAAU,CACvB,OAAOC,EAAU,WAAW,KAAK,SAAUD,CAAQ,CACpD,CACD,iBAAkB,CAChB,IAAIE,EACJ,OAAK,KAAK,uBACR,KAAK,gBAAe,GAEdA,EAAwB,KAAK,yBAA2B,MAAQA,IAA0B,OAASA,EAAwB,QAAQ,QAAQ,CACjJ,MAAO,CAAE,EACT,OAAQ,CACd,CAAK,CACF,CACD,YAAYC,EAAc,CACxB,MAAM,IAAI,MAAM,yBAAyB,CAC1C,CACD,IAAI,MAAO,CACT,OAAO,KAAK,WACb,CACD,YAAYC,EAAMC,EAAU,CAC1B,IAAIC,EAAQF,EAAK,MAAM,GAAG,EACtBG,EAAWD,EAAM,QAIrB,IAHIC,IAAa,QAAaA,IAAa,MACzCA,EAAWD,EAAM,SAEfC,IAAa,QAAaA,IAAa,GACzC,MAAM,IAAI,MAAM,iBAAiB,OAAOH,CAAI,CAAC,EAE/C,IAAII,EAAgBF,EAAM,KAAK,GAAG,EAClC,GAAID,EAAU,CACZ,GAAI,CAAC,KAAK,YAAY,IAAIE,CAAQ,EAAG,CACnC,IAAIE,EAAa,IAAId,EAAqB,KAAK,eAAgB,KAAK,SAAU,GAAG,OAAO,KAAK,KAAM,GAAG,EAAE,OAAOY,CAAQ,CAAC,EACxH,KAAK,YAAY,IAAIA,EAAUE,CAAU,CAC1C,CACD,GAAID,EAAe,CACjB,IAAIE,EAAc,KAAK,YAAY,IAAIH,CAAQ,EAC/CG,GAAgB,MAA0CA,EAAY,YAAYF,EAAeH,CAAQ,CAC1G,CACF,SAAU,KAAK,YAAY,IAAIE,CAAQ,EACtC,GAAIC,EAAe,CACjB,IAAIG,EAAe,KAAK,YAAY,IAAIJ,CAAQ,EAChDI,GAAiB,MAA2CA,EAAa,YAAYH,EAAeH,CAAQ,CACpH,MACQ,KAAK,YAAY,OAAOE,CAAQ,EAGhC,KAAK,iBACP,KAAK,gBAAe,CAEvB,CACD,aAAc,CACZ,KAAK,YAAY,QACb,KAAK,iBACP,KAAK,gBAAe,CAEvB,CAGD,UAAUK,EAAQ,CAChB,MAAM,IAAI,MAAM,yBAAyB,CAC1C,CACD,YAAYC,EAAU,CACpB,KAAK,gBAAkBA,EACvB,KAAK,gBAAe,CACrB,CACD,YAAa,CACX,MAAM,IAAI,MAAM,yBAAyB,CAC1C,CACD,UAAW,CACT,MAAM,IAAI,MAAM,yBAAyB,CAC1C,CACD,aAAc,CACZ,MAAM,IAAI,MAAM,yBAAyB,CAC1C,CACD,OAAQ,CACN,KAAK,UAAY,EAClB,CACD,SAASC,EAAU,CACjB,YAAK,UAAY,CAAC,GAAG,KAAK,UAAWA,CAAQ,EACtC,IAAM,CACX,KAAK,UAAY,KAAK,UAAU,OAAOC,GAASA,IAAUD,CAAQ,CACxE,CACG,CACD,UAAUA,EAAU,CAClBnW,EAAI,OAAO,YAAa,KAAK,IAAI,EACjCmW,EAAS,KAAK,UAAS,CAAE,CAC1B,CACD,SAAU,CACR,IAAIE,EACJrW,EAAI,OAAO,UAAW,KAAK,IAAI,GAC9BqW,EAAyB,KAAK,yBAA2B,MAAQA,IAA2B,QAAkBA,EAAuB,OAAM,EAC5I,IAAIC,EAAiB,IAAI,QAAQ/K,GAAW,CAC1C,KAAK,UAAUA,CAAO,CAC5B,CAAK,EACGgL,EAAwBjV,EAAa,eAAegV,EAAe,KAAKE,GAAgB,CAC1F,GAAI,KAAK,wBAA0BD,EACjC,MAAM,IAAIE,GAEZ,YAAK,oBAAsBD,EAC3B,KAAK,WAAU,EACRA,CACR,CAAA,CAAC,EAGFD,EAAsB,MAAMpT,GAAK,CAC1B7B,EAAa,WAAW6B,CAAC,GAC5BnD,EAAI,MAAM,0BAA2BmD,CAAC,CAE9C,CAAK,EACD,KAAK,sBAAwBoT,CAC9B,CAKD,iBAAkB,CAChB,GAAI,CACF,KAAK,QAAO,CACb,OAAQ,EAAG,CACLjV,EAAa,WAAW,CAAC,GAC5BtB,EAAI,MAAM,yBAA0B,CAAC,CAExC,CACF,CACD,WAAY,CACV,IAAI0W,EAAQ,KACZ,OAAO9K,GAAkB,WAAa,CACpC,GAAI,CACF,gBAAiBsK,CAClB,EAAGQ,EACJ,GAAI,CAACR,EACH,MAAM,IAAI,MAAM,iBAAiB,EAmBnC,QAfIS,EAAc,MAAMD,EAAM,eAAe,UAAUA,EAAM,IAAI,EAC7DE,EAAQD,EAAY,IAAIE,IAAS,CACnC,KAAMA,EAAK,KACX,SAAUH,EAAM,eAAeG,EAAK,QAAQ,EAC5C,SAAUA,EAAK,SACf,GAAIH,EAAM,eAAeG,EAAK,QAAQ,EACtC,WAAYA,EAAK,OAAS,YAAcH,EAAM,YAAY,IAAIG,EAAK,QAAQ,EAAI,MAChF,EAAC,EAAE,KAAK,CAACC,EAAGC,IACPD,EAAE,OAASC,EAAE,KACRD,EAAE,OAAS,YAAc,GAAK,EAEhCA,EAAE,SAAS,cAAcC,EAAE,QAAQ,CAC3C,EAGQxZ,EAAI,EAAGA,EAAIqZ,EAAM,OAAQrZ,GAAK,EAAG,CACxC,IAAIjB,EAAOsa,EAAMrZ,CAAC,EACd,CACF,SAAAyZ,EACA,SAAA3B,CACD,EAAG/Y,EACJ,GAAI+Y,IAAaqB,EAAM,eAAe,GAAG,OAAOA,EAAM,KAAM,GAAG,EAAE,OAAOM,CAAQ,CAAC,GAAK1a,EAAK,OAAS,YAAa,CAC/G,IAAIwZ,EAAaY,EAAM,YAAY,IAAIM,CAAQ,EAC/C,GAAIlB,GAAc,KAAM,CACtBA,EAAW,YAAY,CACrB,IAAK,EACL,OAAQI,EAAS,OAAS3Y,CACxC,CAAa,EAED,IAAI0Z,EAAoB,MAAMnB,EAAW,kBACzCc,EAAM,OAAOrZ,EAAI,EAAG,EAAG,GAAG0Z,EAAkB,KAAK,CAClD,CACF,CACF,CACD,OAAAP,EAAM,YAAcE,EAAM,OAC1B5W,EAAI,OAAO0W,EAAM,KAAM,QAASE,EAAOV,CAAQ,EAG/CU,EAAQA,EAAM,MAAMV,EAAS,IAAKA,EAAS,MAAM,EAC1C,CACL,MAAAU,EACA,OAAQV,EAAS,GACzB,CACK,CAAA,GACF,CACD,YAAa,CAUX,QATIgB,EAEA,CACF,UAAAC,CACD,EAAG,KACAxJ,GAAQuJ,EAAwB,KAAK,uBAAyB,MAAQA,IAA0B,OAASA,EAAwB,CACnI,MAAO,CAAE,EACT,OAAQ,CACd,EACa,EAAI,EAAG,EAAIC,EAAU,OAAQ,GAAK,EACzCA,EAAU,CAAC,EAAExJ,CAAI,CAEpB,CACH,CACAlQ,EAAgBuX,EAAsB,mBAAoB,EAAE,EClP5D,SAAS3J,GAAmBC,EAAKC,EAASC,EAAQC,EAAOC,EAAQvP,EAAK0B,EAAK,CAAE,GAAI,CAAE,IAAI8N,EAAOL,EAAInP,CAAG,EAAE0B,CAAG,EAAOF,EAAQgO,EAAK,YAAgBjK,EAAO,CAAE8J,EAAO9J,CAAK,EAAG,MAAS,CAAKiK,EAAK,KAAQJ,EAAQ5N,CAAK,EAAY,QAAQ,QAAQA,CAAK,EAAE,KAAK8N,EAAOC,CAAM,CAAM,CACzQ,SAASE,EAAkBC,EAAI,CAAE,OAAO,UAAY,CAAE,IAAIC,EAAO,KAAMC,EAAO,UAAW,OAAO,IAAI,QAAQ,SAAUR,EAASC,EAAQ,CAAE,IAAIF,EAAMO,EAAG,MAAMC,EAAMC,CAAI,EAAG,SAASN,EAAM9N,EAAO,CAAE0N,GAAmBC,EAAKC,EAASC,EAAQC,EAAOC,EAAQ,OAAQ/N,CAAK,CAAI,CAAC,SAAS+N,EAAOM,EAAK,CAAEX,GAAmBC,EAAKC,EAASC,EAAQC,EAAOC,EAAQ,QAASM,CAAG,EAAKP,EAAM,MAAS,EAAI,CAAI,CAAG,CACrY,SAAShO,EAAgBC,EAAKvB,EAAKwB,EAAO,CAAE,OAAAxB,EAAMyB,GAAezB,CAAG,EAAOA,KAAOuB,EAAO,OAAO,eAAeA,EAAKvB,EAAK,CAAE,MAAOwB,EAAO,WAAY,GAAM,aAAc,GAAM,SAAU,EAAM,CAAA,EAAYD,EAAIvB,CAAG,EAAIwB,EAAgBD,CAAM,CAC5O,SAASE,GAAeC,EAAK,CAAE,IAAI1B,EAAM2B,GAAaD,EAAK,QAAQ,EAAG,OAAO,OAAO1B,GAAQ,SAAWA,EAAM,OAAOA,CAAG,CAAI,CAC3H,SAAS2B,GAAaC,EAAOC,EAAM,CAAE,GAAI,OAAOD,GAAU,UAAYA,IAAU,KAAM,OAAOA,EAAO,IAAIE,EAAOF,EAAM,OAAO,WAAW,EAAG,GAAIE,IAAS,OAAW,CAAE,IAAIC,EAAMD,EAAK,KAAKF,EAAOC,GAAQ,SAAS,EAAG,GAAI,OAAOE,GAAQ,SAAU,OAAOA,EAAK,MAAM,IAAI,UAAU,8CAA8C,CAAI,CAAC,OAAQF,IAAS,SAAW,OAAS,QAAQD,CAAK,CAAI,CAKzX,IAAIiC,GAAMC,EAAI,OAAO,iBAAiB,EAC/B,MAAMmX,EAAgB,CAM3B,YAAYpJ,EAAIiH,EAAgB,CAC9B,IAAIE,EAAO,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,GAC/E1X,EAAgB,KAAM,KAAM,MAAM,EAClCA,EAAgB,KAAM,iBAAkB,MAAM,EAC9CA,EAAgB,KAAM,SAAU,CAAA,CAAE,EAClCA,EAAgB,KAAM,OAAQ,MAAM,EACpCA,EAAgB,KAAM,gBAAiByT,GAAS,IAAM,CACpD,KAAK,OAAO,QAAQmG,GAASA,EAAM,QAAO,CAAE,CAClD,EAAOD,GAAgB,gBAAgB,CAAC,EACpC,KAAK,GAAKpJ,EACV,KAAK,eAAiBiH,EACtB,KAAK,KAAOE,CACb,CACD,WAAWE,EAAU,CACnB,OAAOC,EAAU,WAAW,KAAK,KAAMD,CAAQ,CAChD,CACD,QAAQI,EAAM,CACZ,OAAOH,EAAU,QAAQ,KAAK,KAAMG,CAAI,CACzC,CACD,gBAAgBA,EAAM,CACpB,IAAIiB,EAAQ,KACZ,OAAO9K,EAAkB,WAAa,CACpC,aAAM8K,EAAM,eAAe,gBAAgBA,EAAM,QAAQjB,CAAI,CAAC,EAC9DiB,EAAM,cAAa,EACZ,CACL,KAAM,YACN,GAAIjB,EACJ,SAAUA,EACV,SAAUH,EAAU,YAAYG,CAAI,CAC5C,CACK,CAAA,GACF,CACD,UAAW,CACT,IAAI6B,EAAS,KACb,OAAO1L,EAAkB,WAAa,CACpC,IAAIyL,EAAQ,IAAIrC,EAAqBsC,EAAO,eAAgBA,EAAO,IAAI,EACvE,OAAAA,EAAO,OAAO,KAAKD,CAAK,EACjBA,CACR,CAAA,GACF,CACD,SAASR,EAAM,CACb,IAAIU,EAAS,KACb,OAAO3L,EAAkB,WAAa,CACpC,IAAI4L,EAAeD,EAAO,GAAG,QAAQ,aAAa,KAAKV,EAAK,OAAO,EACnE,aAAMU,EAAO,eAAe,SAASA,EAAO,QAAQV,EAAK,QAAQ,EAAGW,EAAc,EAAI,EACtFD,EAAO,cAAa,EACbV,CACR,CAAA,GACF,CACD,SAASY,EAAM,CACb,IAAIC,EAAS,KACb,OAAO9L,EAAkB,WAAa,CACpC,IAAI4L,EAAe,MAAME,EAAO,eAAe,SAASA,EAAO,QAAQD,CAAI,CAAC,EACxEE,EAAU,MAAMH,EAAa,OACjC,MAAO,CACL,SAAUC,EACV,SAAUnC,EAAU,YAAYmC,CAAI,EACpC,QAAAE,CACR,CACK,CAAA,GACF,CACD,SAASF,EAAMG,EAAS,CACtB,IAAIC,EAAS,KACb,OAAOjM,EAAkB,WAAa,CACpC,IAAI4L,EAAe,MAAMK,EAAO,eAAe,SAASA,EAAO,QAAQJ,CAAI,CAAC,EAC5E,MAAMI,EAAO,eAAe,SAASA,EAAO,QAAQD,CAAO,EAAGJ,EAAc,EAAK,EACjFK,EAAO,cAAa,CACrB,CAAA,GACF,CACD,WAAWJ,EAAM,CACf,IAAIK,EAAS,KACb,OAAOlM,EAAkB,WAAa,CACpC,MAAMkM,EAAO,eAAe,WAAWA,EAAO,QAAQL,CAAI,CAAC,EAC3DK,EAAO,cAAa,CACrB,CAAA,GACF,CACD,SAASL,EAAMG,EAAS,CACtB,IAAIG,EAAS,KACb,OAAOnM,EAAkB,WAAa,CACpC,MAAMmM,EAAO,eAAe,SAASA,EAAO,QAAQN,CAAI,EAAGM,EAAO,QAAQH,CAAO,CAAC,EAClFG,EAAO,cAAa,CACrB,CAAA,GACF,CACD,KAAKN,EAAM,CACT,IAAIO,EAAS,KACb,OAAOpM,EAAkB,WAAa,CACpC,IAAIqM,EAAW,MAAMD,EAAO,eAAe,UAAUA,EAAO,QAAQ1C,EAAU,QAAQmC,CAAI,CAAC,EAAGnC,EAAU,YAAYmC,CAAI,CAAC,EACzH,GAAIQ,EAAS,SAAW,EACtB,MAAM,IAAIC,GAEZ,GAAID,EAAS,OAAS,EACpBjY,MAAAA,GAAI,MAAM,0DAA2DiY,CAAQ,EACvE,IAAI,MAAM,mCAAmC,EAErD,IAAIE,EAAcF,EAAS,CAAC,EAC5B,GAAI,CAACG,GAAWD,EAAY,IAAI,EAC9B,MAAM,IAAI,MAAM,yBAAyB,OAAOA,EAAY,IAAI,CAAC,EAEnE,MAAO,CACL,SAAUH,EAAO,WAAWG,EAAY,QAAQ,EAChD,SAAUA,EAAY,SACtB,GAAIH,EAAO,WAAWG,EAAY,QAAQ,EAC1C,KAAMA,EAAY,IAC1B,CACK,CAAA,GACF,CACH,CACA1a,EAAgB2Z,GAAiB,mBAAoB,GAAG,EC3HxD,SAAS/L,GAAmBC,EAAKC,EAASC,EAAQC,EAAOC,EAAQvP,EAAK0B,EAAK,CAAE,GAAI,CAAE,IAAI8N,EAAOL,EAAInP,CAAG,EAAE0B,CAAG,EAAOF,EAAQgO,EAAK,YAAgBjK,EAAO,CAAE8J,EAAO9J,CAAK,EAAG,MAAS,CAAKiK,EAAK,KAAQJ,EAAQ5N,CAAK,EAAY,QAAQ,QAAQA,CAAK,EAAE,KAAK8N,EAAOC,CAAM,CAAM,CACzQ,SAASE,GAAkBC,EAAI,CAAE,OAAO,UAAY,CAAE,IAAIC,EAAO,KAAMC,EAAO,UAAW,OAAO,IAAI,QAAQ,SAAUR,EAASC,EAAQ,CAAE,IAAIF,EAAMO,EAAG,MAAMC,EAAMC,CAAI,EAAG,SAASN,EAAM9N,EAAO,CAAE0N,GAAmBC,EAAKC,EAASC,EAAQC,EAAOC,EAAQ,OAAQ/N,CAAK,CAAI,CAAC,SAAS+N,EAAOM,EAAK,CAAEX,GAAmBC,EAAKC,EAASC,EAAQC,EAAOC,EAAQ,QAASM,CAAG,EAAKP,EAAM,MAAS,EAAI,CAAI,CAAG,CACrY,SAAShO,GAAgBC,EAAKvB,EAAKwB,EAAO,CAAE,OAAAxB,EAAMyB,GAAezB,CAAG,EAAOA,KAAOuB,EAAO,OAAO,eAAeA,EAAKvB,EAAK,CAAE,MAAOwB,EAAO,WAAY,GAAM,aAAc,GAAM,SAAU,EAAM,CAAA,EAAYD,EAAIvB,CAAG,EAAIwB,EAAgBD,CAAM,CAC5O,SAASE,GAAeC,EAAK,CAAE,IAAI1B,EAAM2B,GAAaD,EAAK,QAAQ,EAAG,OAAO,OAAO1B,GAAQ,SAAWA,EAAM,OAAOA,CAAG,CAAI,CAC3H,SAAS2B,GAAaC,EAAOC,EAAM,CAAE,GAAI,OAAOD,GAAU,UAAYA,IAAU,KAAM,OAAOA,EAAO,IAAIE,EAAOF,EAAM,OAAO,WAAW,EAAG,GAAIE,IAAS,OAAW,CAAE,IAAIC,EAAMD,EAAK,KAAKF,EAAOC,GAAQ,SAAS,EAAG,GAAI,OAAOE,GAAQ,SAAU,OAAOA,EAAK,MAAM,IAAI,UAAU,8CAA8C,CAAI,CAAC,OAAQF,IAAS,SAAW,OAAS,QAAQD,CAAK,CAAI,CAClX,MAAMsa,EAAkB,CAM7B,YAAYpD,EAAgB,CAC1B,IAAIE,EAAO,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,GAC/E1X,GAAgB,KAAM,iBAAkB,MAAM,EAC9CA,GAAgB,KAAM,OAAQ,MAAM,EACpC,KAAK,eAAiBwX,EACtB,KAAK,KAAOE,CACb,CACD,YAAa,CACX,IAAIuB,EAAQ,KACZ,OAAO9K,GAAkB,WAAa,CACpC,IAAI0M,EAAQ,MAAM5B,EAAM,eAAe,UAAUA,EAAM,KAAM,QAAQ,EACrE,OAAO4B,EAAM,IAAIzB,GAAQA,EAAK,QAAQ,CACvC,CAAA,GACF,CACD,UAAUY,EAAM,CACd,IAAIH,EAAS,KACb,OAAO1L,GAAkB,WAAa,CACpC,IAAI4L,EAAe,MAAMF,EAAO,eAAe,SAAS,GAAG,OAAOA,EAAO,KAAM,GAAG,EAAE,OAAOG,CAAI,CAAC,EAC5FE,EAAU,MAAMH,EAAa,OACjC,OAAO,KAAK,MAAMG,CAAO,CAC1B,CAAA,GACF,CACH,CC7BO,SAASY,GAAW3H,EAAQ,CACjC,OAAOA,EAAO,UAAY,CAC5B,CACO,SAAS4H,GAAW5H,EAAQ,CACjC,OAAO,MAAM,QAAQA,CAAM,CAC7B,CCTA,SAASvF,GAAmBC,EAAKC,EAASC,EAAQC,EAAOC,EAAQvP,EAAK0B,EAAK,CAAE,GAAI,CAAE,IAAI8N,EAAOL,EAAInP,CAAG,EAAE0B,CAAG,EAAOF,EAAQgO,EAAK,YAAgBjK,EAAO,CAAE8J,EAAO9J,CAAK,EAAG,MAAS,CAAKiK,EAAK,KAAQJ,EAAQ5N,CAAK,EAAY,QAAQ,QAAQA,CAAK,EAAE,KAAK8N,EAAOC,CAAM,CAAM,CACzQ,SAASE,GAAkBC,EAAI,CAAE,OAAO,UAAY,CAAE,IAAIC,EAAO,KAAMC,EAAO,UAAW,OAAO,IAAI,QAAQ,SAAUR,EAASC,EAAQ,CAAE,IAAIF,EAAMO,EAAG,MAAMC,EAAMC,CAAI,EAAG,SAASN,EAAM9N,EAAO,CAAE0N,GAAmBC,EAAKC,EAASC,EAAQC,EAAOC,EAAQ,OAAQ/N,CAAK,CAAI,CAAC,SAAS+N,EAAOM,EAAK,CAAEX,GAAmBC,EAAKC,EAASC,EAAQC,EAAOC,EAAQ,QAASM,CAAG,EAAKP,EAAM,MAAS,EAAI,CAAI,CAAG,CAIrY,IAAIzL,EAAMC,EAAI,OAAO,iBAAiB,EAC3BwY,GAAwB,CACjC,aAAc,CAAC,CACb,KAAM,SACN,QAAS,CAAC,CACR,KAAM,MACN,OAAQ,GAER,QAAS,CAAC,CACR,KAAM,QACN,QAAS,CAAC,CACR,KAAM,kBACN,UAAWC,GAAa,UACxB,MAAOA,GAAa,MACpB,WAAY,EACtB,EAAW,CACD,KAAM,kBACN,UAAWC,GAAS,UACpB,MAAOA,GAAS,MAChB,WAAY,EACtB,CAAS,CACT,EAAS,CACD,KAAM,QACN,MAAO,GACP,QAAS,CAAC,CACR,KAAM,kBACN,UAAWC,GAAoB,UAC/B,MAAOA,GAAoB,MAC3B,WAAY,EACtB,EAAW,CACD,KAAM,kBACN,UAAWC,GAAkB,UAC7B,MAAOA,GAAkB,MACzB,WAAY,EACtB,CAAS,CACT,CAAO,CACP,EAAO,CACD,KAAM,MACN,QAAS,CAAC,CACR,KAAM,QACN,MAAO,YACP,QAAS,CAAE,CACnB,CAAO,CACP,CAAK,CACL,CAAG,EACD,MAAO,CAAE,EACT,WAAY,CAAE,EACd,QAAS,CACX,EACWC,GAAmC,CAC5C,aAAc,CAAE,EAChB,MAAO,CAAE,EACT,WAAY,CAAE,EACd,QAAS,CACX,EACO,SAASC,GAAgBnI,EAAQ,CACtC,GAAI2H,GAAW3H,CAAM,EACnB,OAAOA,EAET,GAAI4H,GAAW5H,CAAM,EAAG,CACtB,IAAIb,EAAea,EACnB,MAAO,CACL,aAAAb,EACA,MAAO,CAAE,EACT,WAAY,CAAE,EACd,QAAS,CACf,CACG,CACD,MAAM,IAAI,MAAM,oCAAoC,OAAOa,CAAM,CAAC,CACpE,CAQO,SAASoI,GAAiB5L,EAAI,CACnC,OAAO6L,GAAkB,MAAM,KAAM,SAAS,CAChD,CACA,SAASA,IAAoB,CAC3B,OAAAA,GAAoBrN,GAAkB,UAAWsN,EAAe,CAC9D,IAAIC,EAAqB,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,GAC7F,GAAI,CACF,IAAIC,EAAU,MAAMF,EAAc,aAClC,GAAIE,EAAQ,OAAS,EACnB,GAAI,CAEF,IAAIxI,EAAS,MAAMsI,EAAc,UAAUE,EAAQ,CAAC,CAAC,EACrD,OAAOL,GAAgBnI,CAAM,CAC9B,OAAQ5E,EAAK,CACZhM,EAAI,MAAM,wBAAyBoZ,EAAQ,CAAC,EAAG,IAAKpN,CAAG,EACvDhM,EAAI,KAAK,wDAAwD,CAClE,CAEJ,OAAQgM,EAAK,CACZhM,EAAI,MAAM,8BAA+BgM,CAAG,EAC5ChM,EAAI,KAAK,gCAAgC,CAC1C,CAED,OAAOmZ,EAAqBV,GAAwBK,EACxD,CAAG,EACMG,GAAkB,MAAM,KAAM,SAAS,CAChD,CACO,SAASI,GAAa1L,EAAM,CACjC,GAAI,CACF,WAAA2L,EACA,aAAAvJ,EACA,MAAAwJ,EACA,cAAAC,CACD,EAAG7L,EACA8L,EAAiB,CACnB,WAAAH,EACA,aAAAvJ,EACA,MAAAwJ,EACA,cAAAC,EACA,QAAS,CACb,EACE,OAAOC,CACT,CACA,MAAeC,GAAA,CACb,aAAAL,GACA,iBAAAL,GACA,gBAAAD,EACF,ECjIA,SAAS1N,GAAmBC,EAAKC,EAASC,EAAQC,EAAOC,EAAQvP,EAAK0B,EAAK,CAAE,GAAI,CAAE,IAAI8N,EAAOL,EAAInP,CAAG,EAAE0B,CAAG,EAAOF,EAAQgO,EAAK,YAAgBjK,EAAO,CAAE8J,EAAO9J,CAAK,EAAG,MAAS,CAAKiK,EAAK,KAAQJ,EAAQ5N,CAAK,EAAY,QAAQ,QAAQA,CAAK,EAAE,KAAK8N,EAAOC,CAAM,CAAM,CACzQ,SAASE,EAAkBC,EAAI,CAAE,OAAO,UAAY,CAAE,IAAIC,EAAO,KAAMC,EAAO,UAAW,OAAO,IAAI,QAAQ,SAAUR,EAASC,EAAQ,CAAE,IAAIF,EAAMO,EAAG,MAAMC,EAAMC,CAAI,EAAG,SAASN,EAAM9N,EAAO,CAAE0N,GAAmBC,EAAKC,EAASC,EAAQC,EAAOC,EAAQ,OAAQ/N,CAAK,CAAI,CAAC,SAAS+N,EAAOM,EAAK,CAAEX,GAAmBC,EAAKC,EAASC,EAAQC,EAAOC,EAAQ,QAASM,CAAG,EAAKP,EAAM,MAAS,EAAI,CAAI,CAAG,CACrY,SAAShO,GAAgBC,EAAKvB,EAAKwB,EAAO,CAAE,OAAAxB,EAAMyB,GAAezB,CAAG,EAAOA,KAAOuB,EAAO,OAAO,eAAeA,EAAKvB,EAAK,CAAE,MAAOwB,EAAO,WAAY,GAAM,aAAc,GAAM,SAAU,EAAM,CAAA,EAAYD,EAAIvB,CAAG,EAAIwB,EAAgBD,CAAM,CAC5O,SAASE,GAAeC,EAAK,CAAE,IAAI1B,EAAM2B,GAAaD,EAAK,QAAQ,EAAG,OAAO,OAAO1B,GAAQ,SAAWA,EAAM,OAAOA,CAAG,CAAI,CAC3H,SAAS2B,GAAaC,EAAOC,EAAM,CAAE,GAAI,OAAOD,GAAU,UAAYA,IAAU,KAAM,OAAOA,EAAO,IAAIE,EAAOF,EAAM,OAAO,WAAW,EAAG,GAAIE,IAAS,OAAW,CAAE,IAAIC,EAAMD,EAAK,KAAKF,EAAOC,GAAQ,SAAS,EAAG,GAAI,OAAOE,GAAQ,SAAU,OAAOA,EAAK,MAAM,IAAI,UAAU,8CAA8C,CAAI,CAAC,OAAQF,IAAS,SAAW,OAAS,QAAQD,CAAK,CAAI,CAIzX,IAAIiC,GAAMC,EAAI,OAAO,uBAAuB,EAKrC,MAAM0Z,CAAsB,CACjC,OAAO,uBAAuBC,EAAoBzd,EAAK,CACrD,IAAI0d,EAAuBC,EAC3B,IAAKF,GAAuB,OAAkDC,EAAwBD,EAAmB,IAAIzd,CAAG,KAAO,MAAQ0d,IAA0B,OAArG,OAAuHA,EAAsB,YAAa,KAAM,OAClO,MAAO,GAET,IAAKD,GAAuB,OAAkDE,EAAyBF,EAAmB,IAAIzd,CAAG,KAAO,MAAQ2d,IAA2B,OAAvG,OAAyHA,EAAuB,YAAa,KAAM,QACrO,MAAO,EAGV,CACD,OAAO,6BAA6BF,EAAoB,CAiDtD,QAhDIG,EAAW,CACb,sBAAuBC,GAAwB,+BAC/C,UAAW,CAAE,EACb,SAAUA,GAAwB,qBAClC,aAAc,GACd,eAAgB,GAChB,wBAAyB,GACzB,4BAA6B,CAC3B,oBAAqBC,GAAuB,qBAC7C,EACD,4BAA6B,CAC3B,oBAAqBC,GAAuB,qBAC7C,EACD,yBAA0B,GAC1B,iBAAkB,GAClB,gBAAiB,GACjB,qBAAsB,GACtB,wBAAyB,CACvB,iBAAkB,EACnB,EACD,MAAO,GACP,cAAe,GACf,YAAa,SACnB,EACQC,EAAiB,CACnB,sBAAuBP,GAAuB,KAAwC,OAASA,EAAmB,IAAI,gBAAgB,EACtI,UAAW,CAAE,EACb,SAAUA,GAAuB,KAAwC,OAASA,EAAmB,IAAI,UAAU,EACnH,aAAcD,EAAsB,uBAAuBC,EAAoB,cAAc,EAC7F,eAAgBD,EAAsB,uBAAuBC,EAAoB,gBAAgB,EACjG,wBAAyBD,EAAsB,uBAAuBC,EAAoB,yBAAyB,EACnH,6BAA8BA,GAAuB,KAAwC,OAASA,EAAmB,IAAI,eAAe,KAAO,OAAY,CAC7J,oBAAqBA,GAAuB,KAAwC,OAASA,EAAmB,IAAI,eAAe,CAC3I,EAAU,OACJ,6BAA8BA,GAAuB,KAAwC,OAASA,EAAmB,IAAI,eAAe,KAAO,OAAY,CAC7J,oBAAqBA,GAAuB,KAAwC,OAASA,EAAmB,IAAI,eAAe,CAC3I,EAAU,OACJ,yBAA0BD,EAAsB,uBAAuBC,EAAoB,0BAA0B,EACrH,iBAAkBD,EAAsB,uBAAuBC,EAAoB,kBAAkB,EACrG,gBAAiBD,EAAsB,uBAAuBC,EAAoB,iBAAiB,EACnG,qBAAsBD,EAAsB,uBAAuBC,EAAoB,sBAAsB,EAC7G,yBAA0BA,GAAuB,KAAwC,OAASA,EAAmB,IAAI,kBAAkB,KAAO,OAAY,CAC5J,iBAAkBD,EAAsB,uBAAuBC,EAAoB,kBAAkB,CAC7G,EAAU,OACJ,MAAOD,EAAsB,uBAAuBC,EAAoB,WAAW,EACnF,cAAeD,EAAsB,uBAAuBC,EAAoB,oBAAoB,CAC1G,EACQ1c,EAAO,OAAO,KAAKid,CAAc,EAC5B5c,EAAI,EAAGA,EAAIL,EAAK,OAAQK,GAAK,EAAG,CACvC,IAAIpB,EAAMe,EAAKK,CAAC,EACZ4c,EAAehe,CAAG,IAAM,SAE1B4d,EAAS5d,CAAG,EAAIge,EAAehe,CAAG,EAErC,CACD,OAAO4d,CACR,CACD,OAAO,kBAAkBb,EAAetY,EAAS,CAC/C,OAAOgL,EAAkB,WAAa,CACpC,GAAI,CACF,WAAA0N,EACA,MAAAC,EACA,aAAAxJ,EACA,cAAAyJ,EAAgB,CAAE,CACnB,EAAG,MAAME,GAAgB,iBAAiBR,EAAetY,GAAY,KAA6B,OAASA,EAAQ,kBAAkB,EACtI,MAAO,CACL,SAAU,CAAE,EACZ,aAAAmP,EACA,OAAQ,CAAC,CAAA,CAAE,EACX,MAAAwJ,EACA,WAAAD,EACA,cAAAE,CACR,CACK,CAAA,GACF,CACD,OAAO,qBAAqBN,EAAetY,EAAS,CAClD,OAAOgL,EAAkB,WAAa,CACpC,MAAO,CACL,KAAM,MAAM+N,EAAsB,kBAAkBT,EAAetY,CAAO,CAClF,CACK,CAAA,GACF,CACD,YAAYsY,EAAe,CACzBzb,GAAgB,KAAM,gBAAiB,MAAM,EAC7C,KAAK,cAAgByb,CACtB,CAGD,KAAKtY,EAAS,CACZ,IAAI8V,EAAQ,KACZ,OAAO9K,EAAkB,WAAa,CACpC,GAAI,CACF,IAAIwO,EACAC,EAAY,KAAK,OAAOD,EAAwB,aAAa,QAAQT,EAAsB,WAAW,KAAO,MAAQS,IAA0B,OAASA,EAAwB,EAAE,EACtL,OAAOC,CACR,MAAW,CACV,OAAAra,GAAI,KAAK,6DAA6D,EAC/D2Z,EAAsB,qBAAqBjD,EAAM,cAAe9V,CAAO,CAC/E,CACF,CAAA,GACF,CAGD,KAAKyZ,EAAW,CACd,OAAOzO,EAAkB,WAAa,CACpC,oBAAa,QAAQ+N,EAAsB,YAAa,KAAK,UAAUU,CAAS,CAAC,EAC1EA,CACR,CAAA,GACF,CACH,CACA5c,GAAgBkc,EAAuB,cAAe,4BAA4B"}
1
+ {"version":3,"file":"LocalWorkspaceStorage-h3-A9jVy.js","sources":["../../../react-hooks/dist/useResizeObserver.js","../../../components/dist/theme/ThemePicker.js","../../../components/dist/theme/Logo.js","../../../components/dist/spectrum/picker/Picker.js","../../../components/dist/spectrum/Heading.js","../../../components/dist/context-actions/ContextMenu.js","../../../components/dist/context-actions/ContextMenuRoot.js","../../../components/dist/Collapse.js","../../../components/dist/navigation/NavTab.js","../../../components/dist/navigation/NavTabList.js","../../../jsapi-bootstrap/dist/useCreateClient.js","../../../jsapi-bootstrap/dist/ClientBootstrap.js","../../../jsapi-bootstrap/dist/useClient.js","../../../jsapi-utils/dist/MessageUtils.js","../../../jsapi-utils/dist/NoConsolesError.js","../../../jsapi-utils/dist/SessionUtils.js","../../../dashboard/dist/Dashboard.js","../../../dashboard/dist/DashboardEvents.js","../../../dashboard/dist/LazyDashboard.js","../../../plugin/dist/useDashboardPlugins.js","../../../auth-plugins/dist/UserContexts.js","../../../app-utils/dist/components/ConnectionContext.js","../../../app-utils/dist/components/ServerConfigBootstrap.js","../../../app-utils/dist/components/useServerConfig.js","../../../app-utils/dist/components/AppDashboards.js","../../../app-utils/dist/components/useConnection.js","../../../app-utils/dist/components/useUser.js","../../../app-utils/dist/storage/grpc/GrpcFileStorageTable.js","../../../app-utils/dist/storage/grpc/GrpcFileStorage.js","../../../app-utils/dist/storage/grpc/GrpcLayoutStorage.js","../../../app-utils/dist/storage/LayoutStorage.js","../../../app-utils/dist/storage/UserLayoutUtils.js","../../../app-utils/dist/storage/LocalWorkspaceStorage.js"],"sourcesContent":["import { useEffect } from 'react';\n\n/**\n * Listen for resize events on an element using ResizeObserver\n * @param element Element to listen for resizing on\n * @param onResize Callback triggered when the element resizes\n */\nexport function useResizeObserver(element, onResize) {\n useEffect(() => {\n if (element == null) {\n return;\n }\n var resizeObserverInstance = new window.ResizeObserver(onResize);\n resizeObserverInstance.observe(element);\n return () => {\n if (element != null) {\n resizeObserverInstance.unobserve(element);\n }\n };\n }, [element, onResize]);\n}\nexport default useResizeObserver;\n//# sourceMappingURL=useResizeObserver.js.map","import { useCallback } from 'react';\nimport { Item, Picker } from '@adobe/react-spectrum';\nimport useTheme from \"./useTheme.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport function ThemePicker() {\n var {\n selectedThemeKey,\n setSelectedThemeKey,\n themes\n } = useTheme();\n var onSelectionChange = useCallback(key => {\n setSelectedThemeKey(key);\n }, [setSelectedThemeKey]);\n return /*#__PURE__*/_jsx(Picker, {\n label: \"Pick a color scheme\",\n items: themes,\n selectedKey: selectedThemeKey,\n onSelectionChange: onSelectionChange,\n children: item => /*#__PURE__*/_jsx(Item, {\n children: item.name\n }, item.themeKey)\n });\n}\nexport default ThemePicker;\n//# sourceMappingURL=ThemePicker.js.map","import classNames from 'classnames';\nimport \"./Logo.css\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport function Logo(_ref) {\n var {\n className,\n style\n } = _ref;\n return /*#__PURE__*/_jsx(\"div\", {\n className: classNames('dh-logo', className),\n style: style\n });\n}\nexport default Logo;\n//# sourceMappingURL=Logo.js.map","var _excluded = [\"UNSAFE_className\"],\n _excluded2 = [\"defaultSelectedKey\", \"disabledKeys\", \"selectedKey\", \"ref\"];\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport { Picker as SpectrumPicker } from '@adobe/react-spectrum';\nimport cl from 'classnames';\nimport React from 'react';\nimport { useMergeRef } from '@deephaven/react-hooks';\nimport { usePickerProps } from \"./usePickerProps.js\";\n/**\n * Picker component for selecting items from a list of items. Items can be\n * provided via the `children` prop. Each item can be a string,\tnumber, boolean,\n * or a Spectrum <Item> element. The remaining props are just\tpass through props\n * for the Spectrum Picker component.\n * See https://react-spectrum.adobe.com/react-spectrum/Picker.html\n */\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport var Picker = /*#__PURE__*/React.forwardRef(function Picker(_ref, ref) {\n var {\n UNSAFE_className\n } = _ref,\n props = _objectWithoutProperties(_ref, _excluded);\n var _usePickerProps = usePickerProps(props),\n {\n defaultSelectedKey,\n disabledKeys,\n selectedKey,\n ref: scrollRef\n } = _usePickerProps,\n pickerProps = _objectWithoutProperties(_usePickerProps, _excluded2);\n var pickerRef = useMergeRef(ref, scrollRef);\n return /*#__PURE__*/_jsx(SpectrumPicker\n // eslint-disable-next-line react/jsx-props-no-spreading\n , _objectSpread(_objectSpread({}, pickerProps), {}, {\n ref: pickerRef,\n UNSAFE_className: cl('dh-picker', UNSAFE_className)\n // Type assertions are necessary here since Spectrum types don't account\n // for number and boolean key values even though they are valid runtime\n // values.\n ,\n defaultSelectedKey: defaultSelectedKey,\n disabledKeys: disabledKeys,\n selectedKey: selectedKey\n }));\n});\nPicker.displayName = 'Picker';\nexport default Picker;\n//# sourceMappingURL=Picker.js.map","var _excluded = [\"color\", \"UNSAFE_style\"];\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n/* eslint-disable react/jsx-props-no-spreading */\nimport { forwardRef, useMemo } from 'react';\nimport { Heading as SpectrumHeading } from '@adobe/react-spectrum';\nimport { colorValueStyle } from \"../theme/colorUtils.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\n/**\n * A Heading component that re-exports the Spectrum Heading component.\n * It overrides ColorValues to accept CSS color strings and custom\n * variable names from our color paletee and semantic colors.\n *\n * @param props The props for the Heading component\n * @returns The Heading component\n *\n */\n\nexport var Heading = /*#__PURE__*/forwardRef((props, forwardedRef) => {\n var {\n color,\n UNSAFE_style\n } = props,\n rest = _objectWithoutProperties(props, _excluded);\n var style = useMemo(() => _objectSpread(_objectSpread({}, UNSAFE_style), {}, {\n color: colorValueStyle(color)\n }), [color, UNSAFE_style]);\n return /*#__PURE__*/_jsx(SpectrumHeading, _objectSpread(_objectSpread({}, rest), {}, {\n ref: forwardedRef,\n UNSAFE_style: style\n }));\n});\nHeading.displayName = 'Heading';\nexport default Heading;\n//# sourceMappingURL=Heading.js.map","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nimport React, { PureComponent } from 'react';\nimport classNames from 'classnames';\nimport Log from '@deephaven/log';\nimport { PromiseUtils } from '@deephaven/utils';\nimport ContextActionUtils from \"./ContextActionUtils.js\";\nimport ContextMenuItem from \"./ContextMenuItem.js\";\nimport LoadingSpinner from \"../LoadingSpinner.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { Fragment as _Fragment } from \"react/jsx-runtime\";\nvar log = Log.module('ContextMenu');\n/** Do not use this class directly. Use ContextMenuRoot and ContextActions instead. */\nclass ContextMenu extends PureComponent {\n static handleContextMenu(e) {\n if (e.metaKey) {\n return;\n }\n e.stopPropagation();\n e.preventDefault();\n }\n constructor(props) {\n super(props);\n _defineProperty(this, \"container\", void 0);\n _defineProperty(this, \"oldFocus\", void 0);\n _defineProperty(this, \"activeSubMenuRef\", void 0);\n _defineProperty(this, \"subMenuTimer\", void 0);\n _defineProperty(this, \"rAF\", void 0);\n _defineProperty(this, \"initialPosition\", void 0);\n this.handleBlur = this.handleBlur.bind(this);\n this.handleCloseSubMenu = this.handleCloseSubMenu.bind(this);\n this.handleKeyDown = this.handleKeyDown.bind(this);\n this.handleMenuItemClick = this.handleMenuItemClick.bind(this);\n this.handleMenuItemContextMenu = this.handleMenuItemContextMenu.bind(this);\n this.handleMenuItemMouseMove = this.handleMenuItemMouseMove.bind(this);\n this.handleMouseLeave = this.handleMouseLeave.bind(this);\n this.handleWindowResize = this.handleWindowResize.bind(this);\n this.container = /*#__PURE__*/React.createRef();\n this.oldFocus = document.activeElement;\n this.activeSubMenuRef = /*#__PURE__*/React.createRef();\n this.subMenuTimer = 0;\n this.rAF = 0;\n this.initialPosition = {\n top: props.top,\n left: props.left\n };\n this.state = {\n menuItems: [],\n pendingItems: [],\n activeSubMenu: null,\n hasOverflow: false,\n subMenuTop: null,\n subMenuLeft: null,\n subMenuParentWidth: 0,\n subMenuParentHeight: 0,\n keyboardIndex: -1,\n mouseIndex: -1\n };\n }\n componentDidMount() {\n this.initMenu();\n this.verifyPosition();\n window.addEventListener('resize', this.handleWindowResize);\n\n // rAF is needed to wait for a submenus popper to be created before\n // attempting to set focus, however on a quick mount/unmount when\n // mousing past an item, the submenu could be unmounted before the\n // async rAF finishes, so it is cancelled in willUnmount()\n this.rAF = window.requestAnimationFrame(() => {\n var _this$container$curre;\n (_this$container$curre = this.container.current) === null || _this$container$curre === void 0 ? void 0 : _this$container$curre.focus();\n var {\n onMenuOpened\n } = this.props;\n onMenuOpened(this);\n });\n }\n componentDidUpdate(prevProps, prevState) {\n var {\n actions\n } = this.props;\n var {\n activeSubMenu\n } = this.state;\n if (activeSubMenu !== prevState.activeSubMenu) {\n if (activeSubMenu == null) {\n var _this$container$curre2;\n // close sub menu, refocus parent menu\n (_this$container$curre2 = this.container.current) === null || _this$container$curre2 === void 0 ? void 0 : _this$container$curre2.focus();\n } else {\n // open sub menu, set its initial position\n this.setActiveSubMenuPosition();\n }\n }\n if (prevProps.actions !== actions) {\n this.initMenu();\n if (this.container.current == null || !this.container.current.contains(document.activeElement)) {\n var _this$container$curre3;\n (_this$container$curre3 = this.container.current) === null || _this$container$curre3 === void 0 ? void 0 : _this$container$curre3.focus();\n }\n }\n this.verifyPosition();\n }\n componentWillUnmount() {\n this.cancelPromises();\n window.removeEventListener('resize', this.handleWindowResize);\n cancelAnimationFrame(this.rAF);\n }\n getKeyboardIndex() {\n var {\n options\n } = this.props;\n if (options.separateKeyboardMouse !== undefined && options.separateKeyboardMouse) {\n var {\n keyboardIndex\n } = this.state;\n return keyboardIndex;\n }\n return this.getMouseIndex();\n }\n setKeyboardIndex(index) {\n var {\n options\n } = this.props;\n if (options.separateKeyboardMouse !== undefined && options.separateKeyboardMouse) {\n this.setState({\n keyboardIndex: index\n });\n } else {\n this.setMouseIndex(index);\n }\n }\n getMouseIndex() {\n var {\n mouseIndex\n } = this.state;\n return mouseIndex;\n }\n setMouseIndex(index) {\n this.setState({\n mouseIndex: index\n });\n }\n initMenu() {\n // cancel any pending close and promises\n this.cancelPromises();\n cancelAnimationFrame(this.rAF);\n var {\n options\n } = this.props;\n var keyboardIndex = options.initialKeyboardIndex;\n if (keyboardIndex === undefined) {\n keyboardIndex = -1;\n }\n var {\n actions\n } = this.props;\n var menuItems = ContextActionUtils.getMenuItems(actions);\n var nonPromiseItems = [];\n for (var i = menuItems.length - 1; i >= 0; i -= 1) {\n var menuItem = menuItems[i];\n if (menuItem instanceof Promise) {\n this.initMenuPromise(menuItem);\n } else {\n nonPromiseItems.push(menuItem);\n }\n }\n this.setState({\n mouseIndex: -1,\n keyboardIndex,\n activeSubMenu: null,\n menuItems: ContextActionUtils.sortActions(nonPromiseItems)\n });\n }\n initMenuPromise(promise) {\n // make all promises cancellable\n var cancellablePromise = PromiseUtils.makeCancelable(promise);\n this.setState(state => ({\n pendingItems: state.pendingItems.concat(cancellablePromise)\n }));\n cancellablePromise.then(resolvedMenuItems => {\n this.setState(state => {\n var index = state.pendingItems.indexOf(cancellablePromise);\n if (index >= 0) {\n var pendingItems = state.pendingItems.slice();\n pendingItems.splice(index, 1);\n return {\n menuItems: ContextActionUtils.sortActions(state.menuItems.concat(resolvedMenuItems)),\n pendingItems\n };\n }\n // This item is stale, don't update the menu\n return null;\n });\n }, error => {\n if (PromiseUtils.isCanceled(error)) {\n return; // Canceled promise is ignored\n }\n\n // remove failed item from pending list\n this.setState(state => {\n var index = state.pendingItems.indexOf(cancellablePromise);\n if (index >= 0) {\n var pendingItems = state.pendingItems.slice();\n pendingItems.splice(index, 1);\n return {\n pendingItems\n };\n }\n return null;\n });\n\n // Log the error\n log.error(error);\n });\n }\n cancelPromises() {\n var {\n pendingItems\n } = this.state;\n pendingItems.map(item => item.cancel());\n }\n\n /**\n * Sets the unverfied start position of a submenu. Submenu then self-verfies\n * its own position and potentially reports back a new position.\n */\n setActiveSubMenuPosition() {\n if (this.activeSubMenuRef.current === null) return;\n var parentRect = this.activeSubMenuRef.current.getBoundingClientRect();\n\n // intentionally rect.right, we want the sub menu to start at the right edge of the current menu\n this.setState({\n subMenuTop: parentRect.top,\n subMenuLeft: parentRect.right,\n subMenuParentHeight: parentRect.height,\n subMenuParentWidth: parentRect.width\n });\n }\n\n /**\n * Verifies the position of this menu in relation to the parent to make sure it's on screen.\n * Will update the top left state (updatePosition) if necessary (causing a re-render)\n * By default it tries to top-align with parent, at the right side of the parent.\n * Because we aren't a native context menu and can't escape window bounds, we also do\n * somethings to better fit on screen, such as the \"nudge\" offset position, and further\n * allow overflow scrolling for large menus in a small window.\n */\n verifyPosition() {\n var _this$container$curre4, _this$container$curre5, _this$container$curre6, _this$container$curre7;\n var {\n options,\n updatePosition,\n subMenuParentWidth,\n subMenuParentHeight,\n top: oldTop,\n left: oldLeft\n } = this.props;\n if (!this.container.current || options.doNotVerifyPosition != null && options.doNotVerifyPosition) {\n return;\n }\n\n // initial position is used rather than current position,\n // as the number of menu items can change (actions can bubble)\n // and menu should always be positioned relative to spawn point\n var {\n top,\n left\n } = this.initialPosition;\n var {\n width,\n height\n } = (_this$container$curre4 = (_this$container$curre5 = this.container.current) === null || _this$container$curre5 === void 0 ? void 0 : _this$container$curre5.getBoundingClientRect()) !== null && _this$container$curre4 !== void 0 ? _this$container$curre4 : {\n width: 0,\n height: 0\n };\n var hasOverflow = ((_this$container$curre6 = (_this$container$curre7 = this.container.current) === null || _this$container$curre7 === void 0 ? void 0 : _this$container$curre7.scrollHeight) !== null && _this$container$curre6 !== void 0 ? _this$container$curre6 : 0) > window.innerHeight;\n if (height === 0 || width === 0) {\n // We don't have a height or width yet, don't bother doing anything\n return;\n }\n\n // does it fit below?\n if (top + height > window.innerHeight) {\n // can it be flipped to above? include offset if submenu (defaults to 0 if not submenu)\n if (top - height - subMenuParentHeight > 0) {\n // flip like a native menu would\n top -= height - subMenuParentHeight;\n } else {\n // still doesnt fit? okay, position at bottom edge\n top = window.innerHeight - height;\n }\n }\n if (left + width > window.innerWidth) {\n // less picky about left right positioning, just keep it going off to right\n left = left - width - subMenuParentWidth;\n }\n if (oldLeft !== left || oldTop !== top) {\n // parent owns positioning as single source of truth, ask to update props\n this.setState({\n hasOverflow\n });\n updatePosition(top, left);\n }\n }\n\n // since window resize doesn't trigger blur, listen and close the menu\n handleWindowResize() {\n if (!this.container.current) {\n return;\n }\n this.closeMenu(true);\n }\n handleBlur(e) {\n if (!this.container.current) {\n log.warn('Container is null!');\n return;\n }\n if (!this.container.current.contains(e.relatedTarget)) {\n var element = e.relatedTarget;\n var isContextMenuChild = false;\n while (element && !isContextMenuChild) {\n isContextMenuChild = element.hasAttribute('data-dh-context-menu');\n element = element.parentElement;\n }\n if (!isContextMenuChild) {\n // close all submenus on blur\n this.closeMenu(true);\n }\n }\n }\n\n /** Returns whether the specified key should remove the menu. Depends on the side the parent is on. */\n isEscapeKey(key) {\n var {\n left\n } = this.props;\n return key === 'Escape' || left < 0 && key === 'ArrowRight' || key === 'ArrowLeft';\n }\n handleKeyDown(e) {\n var {\n menuItems\n } = this.state;\n var oldFocus = this.getKeyboardIndex();\n var newFocus = oldFocus;\n var openSubMenu = false;\n if (e.key === 'Enter' || e.key === ' ') {\n if (oldFocus >= 0 && oldFocus < menuItems.length) {\n this.handleMenuItemClick(menuItems[oldFocus], e);\n }\n return;\n }\n if (e.key === 'ArrowRight') {\n if (oldFocus >= 0 && oldFocus <= menuItems.length) {\n openSubMenu = true;\n } else {\n newFocus = 0;\n }\n } else if (this.isEscapeKey(e.key)) {\n newFocus = null;\n } else if (e.key === 'ArrowUp' || e.shiftKey && e.key === 'Tab') {\n newFocus = ContextActionUtils.getNextMenuItem(newFocus, -1, menuItems);\n } else if (e.key === 'ArrowDown' || e.key === 'Tab') {\n newFocus = ContextActionUtils.getNextMenuItem(newFocus, 1, menuItems);\n }\n if (openSubMenu) {\n this.openSubMenu(oldFocus);\n e.preventDefault();\n e.stopPropagation();\n return;\n }\n if (oldFocus !== newFocus) {\n if (newFocus !== null) {\n this.setKeyboardIndex(newFocus);\n } else {\n this.closeMenu();\n if (this.oldFocus instanceof HTMLElement) {\n this.oldFocus.focus();\n }\n }\n e.preventDefault();\n e.stopPropagation();\n }\n }\n openSubMenu(index) {\n var {\n menuItems,\n activeSubMenu\n } = this.state;\n var newSubMenu = menuItems[index].actions ? index : null;\n if (activeSubMenu === newSubMenu) return;\n this.setState({\n activeSubMenu: newSubMenu,\n subMenuTop: null,\n subMenuLeft: null\n });\n }\n closeMenu() {\n var closeAll = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n var {\n closeMenu,\n onMenuClosed\n } = this.props;\n cancelAnimationFrame(this.rAF);\n this.rAF = window.requestAnimationFrame(() => {\n closeMenu(closeAll);\n onMenuClosed(this);\n });\n }\n closeSubMenu() {\n this.setState({\n activeSubMenu: null\n });\n }\n handleCloseSubMenu(closeAllMenus) {\n if (closeAllMenus) {\n this.closeMenu(true);\n } else {\n this.closeSubMenu();\n }\n }\n handleMenuItemClick(menuItem, e) {\n e.preventDefault();\n e.stopPropagation();\n var {\n menuItems\n } = this.state;\n if (menuItem != null && (menuItem.disabled === undefined || !menuItem.disabled)) {\n if (menuItem.actions != null) {\n this.openSubMenu(menuItems.indexOf(menuItem));\n } else if (menuItem.action != null) {\n menuItem.action(e.nativeEvent);\n this.closeMenu(true);\n }\n }\n }\n handleMenuItemContextMenu(menuItem, e) {\n if (e.metaKey) {\n return;\n }\n this.handleMenuItemClick(menuItem, e);\n }\n handleMenuItemMouseMove(menuItem) {\n var {\n menuItems\n } = this.state;\n var focusIndex = menuItems.indexOf(menuItem);\n this.setMouseIndex(focusIndex);\n if (focusIndex >= 0 && focusIndex < menuItems.length && (menuItem.disabled === undefined || !menuItem.disabled)) {\n this.openSubMenu(focusIndex);\n }\n }\n handleMouseLeave() {\n this.setMouseIndex(-1);\n }\n render() {\n var menuItemElements = [];\n var {\n top,\n left\n } = this.props;\n var {\n activeSubMenu,\n hasOverflow,\n keyboardIndex,\n menuItems,\n mouseIndex,\n pendingItems,\n subMenuTop,\n subMenuLeft,\n subMenuParentWidth,\n subMenuParentHeight\n } = this.state;\n for (var i = 0; i < menuItems.length; i += 1) {\n var menuItem = menuItems[i];\n if (i > 0 && menuItem.group !== menuItems[i - 1].group) {\n menuItemElements.push( /*#__PURE__*/_jsx(\"hr\", {}, \"\".concat(i, \".separator\")));\n }\n var menuItemElement = /*#__PURE__*/_jsx(ContextMenuItem, {\n ref: activeSubMenu === i ? this.activeSubMenuRef : null,\n isKeyboardSelected: keyboardIndex === i,\n isMouseSelected: mouseIndex === i,\n menuItem: menuItem,\n closeMenu: this.handleCloseSubMenu,\n onMenuItemClick: this.handleMenuItemClick,\n onMenuItemMouseMove: this.handleMenuItemMouseMove,\n onMenuItemContextMenu: this.handleMenuItemContextMenu\n }, i);\n menuItemElements.push(menuItemElement);\n }\n var pendingElement = null;\n if (pendingItems.length > 0) {\n pendingElement = /*#__PURE__*/_jsx(\"div\", {\n className: \"loading\",\n children: /*#__PURE__*/_jsx(LoadingSpinner, {\n className: \"loading-spinner-vertical-align\"\n })\n });\n }\n var {\n menuStyle,\n 'data-testid': dataTestId\n } = this.props;\n\n // don't show submenu until it has an position initialized\n var showSubmenu = activeSubMenu !== null && subMenuTop !== null && subMenuLeft !== null;\n return /*#__PURE__*/_jsxs(_Fragment, {\n children: [/*#__PURE__*/_jsxs(\"div\", {\n className: classNames({\n 'has-overflow': hasOverflow\n }, 'context-menu-container'),\n style: _objectSpread({\n top,\n left\n }, menuStyle),\n ref: this.container,\n \"data-dh-context-menu\": true,\n onBlur: this.handleBlur,\n onKeyDown: this.handleKeyDown,\n onMouseLeave: this.handleMouseLeave,\n onContextMenu: ContextMenu.handleContextMenu,\n role: \"menuitem\",\n tabIndex: 0,\n \"data-testid\": dataTestId,\n children: [menuItemElements, pendingElement]\n }), showSubmenu && activeSubMenu !== null && subMenuTop !== null && subMenuLeft !== null && /*#__PURE__*/_jsx(ContextMenu, {\n actions: menuItems[activeSubMenu].actions || [],\n closeMenu: this.handleCloseSubMenu,\n top: subMenuTop,\n left: subMenuLeft,\n updatePosition: (verifiedTop, verifiedLeft) => {\n this.setState({\n subMenuTop: verifiedTop,\n subMenuLeft: verifiedLeft\n });\n },\n subMenuParentWidth: subMenuParentWidth,\n subMenuParentHeight: subMenuParentHeight\n }, \"sub-\".concat(activeSubMenu))]\n });\n }\n}\n_defineProperty(ContextMenu, \"defaultProps\", {\n subMenuParentWidth: 0,\n subMenuParentHeight: 0,\n closeMenu() {\n // no-op\n },\n onMenuOpened() {\n // no-op\n },\n onMenuClosed() {\n // no-op\n },\n options: {},\n menuStyle: {},\n 'data-testid': undefined\n});\nexport default ContextMenu;\n//# sourceMappingURL=ContextMenu.js.map","function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nimport React, { Component } from 'react';\nimport classNames from 'classnames';\nimport ContextMenu from \"./ContextMenu.js\";\nimport ContextActionUtils from \"./ContextActionUtils.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\n/**\n * Put at your root container, any contextmenu events that are unhandled in the root container will be handled by this\n */\nclass ContextMenuRoot extends Component {\n constructor(props) {\n super(props);\n _defineProperty(this, \"container\", void 0);\n _defineProperty(this, \"openMenu\", void 0);\n this.handleMenuClose = this.handleMenuClose.bind(this);\n this.handleContextMenu = this.handleContextMenu.bind(this);\n this.container = /*#__PURE__*/React.createRef();\n this.openMenu = /*#__PURE__*/React.createRef();\n this.state = {\n actions: null,\n left: 0,\n top: 0\n };\n }\n componentDidMount() {\n var _this$container$curre;\n if ((_this$container$curre = this.container.current) !== null && _this$container$curre !== void 0 && _this$container$curre.parentElement) {\n this.container.current.parentElement.addEventListener('contextmenu', this.handleContextMenu);\n }\n }\n componentWillUnmount() {\n var _this$container$curre2;\n if ((_this$container$curre2 = this.container.current) !== null && _this$container$curre2 !== void 0 && _this$container$curre2.parentElement) {\n this.container.current.parentElement.removeEventListener('contextmenu', this.handleContextMenu);\n }\n }\n handleContextMenu(e) {\n if (!this.container.current) {\n return;\n }\n var parentRect = this.container.current.getBoundingClientRect();\n var top = e.clientY - parentRect.top;\n var left = e.clientX - parentRect.left;\n var {\n actions\n } = this.state;\n\n // Context menu is open and user clicked on the context-root blocking layer\n // Mac and Linux appear to trigger contextmenu events on mousedown vs. mouseup on Windows\n // Mouseup on Windows triggers blur before contextmenu which effectively does what this path does\n if (actions != null && e.target === this.container.current) {\n // re-emit right clicks that hit the context-root blocking layer\n // while we already have a custom context menu open\n e.preventDefault();\n\n // Set actions to null removes the menu\n // That allows a new menu to be opened on a different element so initial position is set properly\n // Otherwise the instance of this menu may be reused\n // A new contextmenu event is triggered on the element at the location the user clicked on the blocking layer\n this.setState({\n actions: null\n }, () => {\n var element = document.elementFromPoint(left, top); // x y\n\n var mouseEvent = new MouseEvent('contextmenu', {\n clientX: e.clientX,\n clientY: e.clientY,\n bubbles: true,\n cancelable: true\n });\n element === null || element === void 0 ? void 0 : element.dispatchEvent(mouseEvent);\n });\n return;\n }\n if (!ContextActionUtils.isContextActionEvent(e)) {\n // Open native menu if no custom context actions\n return;\n }\n if (e.metaKey || e.ctrlKey) {\n // debug escape hatch to native menu\n return;\n }\n var contextActions = ContextActionUtils.getMenuItems(e.contextActions);\n if (contextActions.length === 0) {\n // No actions after filtering. Use native menu\n return;\n }\n\n // new clicks, set actions\n e.preventDefault();\n this.setState({\n actions: contextActions,\n top,\n left\n });\n }\n handleMenuClose(menu) {\n if (menu === this.openMenu.current) {\n this.setState({\n actions: null\n });\n }\n }\n render() {\n var menu = null;\n var {\n 'data-testid': dataTestId\n } = this.props;\n var {\n actions,\n top,\n left\n } = this.state;\n if (actions) {\n menu = /*#__PURE__*/_jsx(ContextMenu, {\n ref: this.openMenu,\n actions: actions,\n onMenuClosed: this.handleMenuClose,\n top: top,\n left: left,\n updatePosition: (verifiedTop, verifiedLeft) => {\n this.setState({\n top: verifiedTop,\n left: verifiedLeft\n });\n },\n \"data-testid\": dataTestId\n });\n }\n return /*#__PURE__*/_jsx(\"div\", {\n className: classNames('context-menu-root', {\n active: actions\n }),\n ref: this.container,\n children: menu\n });\n }\n}\nexport default ContextMenuRoot;\n//# sourceMappingURL=ContextMenuRoot.js.map","function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\n// Port of https://github.com/react-bootstrap/react-bootstrap/blob/master/src/Collapse.js\nimport React, { Component } from 'react';\nimport classNames from 'classnames';\nimport PropTypes from 'prop-types';\nimport { CSSTransition } from 'react-transition-group';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nclass Collapse extends Component {\n static handleEnter(elemParam) {\n var elem = elemParam;\n elem.style.height = '0';\n }\n static handleEntering(elemParam) {\n var elem = elemParam;\n elem.style.height = \"\".concat(Collapse.getHeight(elem), \"px\");\n }\n static handleExiting(elemParam) {\n var elem = elemParam;\n elem.style.height = '0';\n }\n static handleExit(elemParam) {\n var elem = elemParam;\n elem.style.height = \"\".concat(Collapse.getHeight(elem), \"px\");\n }\n static getHeight(elem) {\n var scrollBarWidth = elem.scrollWidth - elem.clientWidth;\n return elem.scrollHeight - scrollBarWidth;\n }\n constructor(props) {\n super(props);\n this.handleEntered = this.handleEntered.bind(this);\n }\n handleEntered(elemParam) {\n var elem = elemParam;\n elem.style.height = '';\n var {\n autoFocusOnShow\n } = this.props;\n if (autoFocusOnShow !== undefined && autoFocusOnShow) {\n var input = elem.querySelector('input, select, textarea');\n if (input != null) {\n input.focus();\n }\n }\n }\n render() {\n var {\n children: _children,\n className,\n in: inTransition,\n 'data-testid': dataTestId\n } = this.props;\n return /*#__PURE__*/_jsx(CSSTransition, {\n in: inTransition,\n classNames: {\n enterActive: 'collapsing',\n enterDone: 'collapse show',\n exitActive: 'collapsing',\n exitDone: 'collapse'\n },\n onEnter: Collapse.handleEnter,\n onEntering: Collapse.handleEntering,\n onEntered: this.handleEntered,\n onExit: Collapse.handleExit,\n onExiting: Collapse.handleExiting,\n timeout: 350,\n children: state => /*#__PURE__*/_jsx(\"div\", {\n className: classNames({\n collapse: state === 'exited'\n }, className),\n \"data-testid\": dataTestId,\n children: _children\n })\n });\n }\n}\n_defineProperty(Collapse, \"propTypes\", {\n className: PropTypes.string,\n in: PropTypes.bool.isRequired,\n children: PropTypes.node.isRequired,\n autoFocusOnShow: PropTypes.bool,\n 'data-testid': PropTypes.string\n});\n_defineProperty(Collapse, \"defaultProps\", {\n className: '',\n autoFocusOnShow: false,\n 'data-testid': undefined\n});\nexport default Collapse;\n//# sourceMappingURL=Collapse.js.map","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nimport React, { memo } from 'react';\nimport classNames from 'classnames';\nimport { Draggable } from 'react-beautiful-dnd';\nimport { vsClose } from '@deephaven/icons';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport Button from \"../Button.js\";\nimport ContextActions from \"../context-actions/ContextActions.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nvar NavTab = /*#__PURE__*/memo(_ref => {\n var {\n tab,\n onClose,\n onSelect,\n isActive,\n activeRef,\n index,\n isDraggable,\n contextActions\n } = _ref;\n var {\n key,\n isClosable = onClose != null,\n title,\n icon\n } = tab;\n var iconElem;\n if (icon != null) {\n iconElem = /*#__PURE__*/React.isValidElement(icon) ? icon : /*#__PURE__*/_jsx(FontAwesomeIcon, {\n icon: icon\n });\n }\n return /*#__PURE__*/_jsx(Draggable, {\n draggableId: key,\n index: index,\n isDragDisabled: !isDraggable,\n children: (provided, snapshot) => /*#__PURE__*/_jsxs(\"div\", {\n className: \"context-menu-wrapper\",\n ref: isActive ? activeRef : null,\n children: [/*#__PURE__*/_jsxs(\"div\", _objectSpread(_objectSpread(_objectSpread({\n ref: provided.innerRef\n // eslint-disable-next-line react/jsx-props-no-spreading\n }, provided.draggableProps), provided.dragHandleProps), {}, {\n className: classNames('btn btn-link btn-nav-tab', {\n active: isActive\n }, {\n dragging: snapshot.isDragging\n }),\n \"data-testid\": \"btn-nav-tab-\".concat(title),\n role: \"tab\",\n tabIndex: 0,\n onAuxClick: e => {\n // Middle mouse button was clicked, and no buttons remain pressed\n if (isClosable && e.button === 1 && e.buttons === 0) {\n onClose === null || onClose === void 0 ? void 0 : onClose(key);\n }\n },\n onClick: e => {\n // have to have seperate check onClick for Safari not supporting AuxClick\n if (isClosable && e.button === 1 && e.buttons === 0) {\n onClose === null || onClose === void 0 ? void 0 : onClose(key);\n return;\n }\n // Left mouse button was clicked, and no buttons remain pressed\n if (e.button === 0 && e.buttons === 0) {\n // focus is normally set on mousedown, but dnd calls preventDefault for drag purposes\n // so we can call focus on the firing of the actual click event manually\n e.target.focus();\n onSelect(key);\n }\n },\n onKeyPress: event => {\n if (event.key === 'Enter') onSelect(key);\n },\n children: [iconElem, title, isClosable && /*#__PURE__*/_jsx(Button, {\n kind: \"ghost\",\n className: \"btn-nav-tab-close\",\n onClick: event => {\n onClose === null || onClose === void 0 ? void 0 : onClose(key);\n event.stopPropagation();\n event.preventDefault();\n },\n icon: vsClose,\n tooltip: \"Close\"\n })]\n })), /*#__PURE__*/_jsx(ContextActions, {\n actions: contextActions\n })]\n })\n }, key);\n});\nNavTab.displayName = 'NavTab';\nexport default NavTab;\n//# sourceMappingURL=NavTab.js.map","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nimport React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport classNames from 'classnames';\nimport clamp from 'lodash.clamp';\nimport { DragDropContext, Droppable } from 'react-beautiful-dnd';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { vsChevronRight, vsChevronLeft } from '@deephaven/icons';\nimport { useResizeObserver } from '@deephaven/react-hooks';\nimport DragUtils from \"../DragUtils.js\";\nimport Button from \"../Button.js\";\nimport NavTab from \"./NavTab.js\";\nimport \"./NavTabList.css\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\n// mouse hold timeout to act as hold instead of click\nvar CLICK_TIMEOUT = 500;\n\n// mouse hold acceleration\nvar START_SPEED = 0.01;\nvar ACCELERATION = 0.0005;\nfunction isScrolledLeft(element) {\n return element.scrollLeft === 0;\n}\nfunction isScrolledRight(element) {\n return element.scrollLeft + element.clientWidth === element.scrollWidth || element.scrollWidth === 0;\n}\nfunction makeBaseContextActions(tab, tabs, onClose) {\n var {\n isClosable = false,\n key\n } = tab;\n var contextActions = [];\n if (isClosable && onClose != null) {\n contextActions.push({\n title: 'Close',\n order: 10,\n group: 20,\n action: () => {\n onClose(key);\n }\n });\n var disabled = true;\n for (var i = tabs.length - 1; i > 0; i -= 1) {\n if (tabs[i].key === tab.key) break;\n if (tabs[i].isClosable === true) {\n disabled = false;\n break;\n }\n }\n contextActions.push({\n title: 'Close to the Right',\n order: 20,\n group: 20,\n action: () => {\n for (var _i = tabs.length - 1; _i > 0; _i -= 1) {\n if (tabs[_i].key === key) break;\n if (tabs[_i].isClosable === true) onClose(tabs[_i].key);\n }\n },\n disabled\n });\n contextActions.push({\n title: 'Close All',\n order: 30,\n group: 20,\n action: () => {\n tabs.forEach(t => {\n if (t.isClosable === true) onClose(t.key);\n });\n }\n });\n }\n return contextActions;\n}\nfunction NavTabList(_ref) {\n var {\n activeKey,\n tabs,\n onSelect,\n onReorder,\n onClose,\n makeContextActions\n } = _ref;\n var containerRef = useRef();\n var [isOverflowing, setIsOverflowing] = useState(true);\n var [disableScrollLeft, setDisableScrollLeft] = useState(true);\n var [disableScrollRight, setDisableScrollRight] = useState(true);\n var handleResize = useCallback(() => {\n if (containerRef.current == null) {\n return;\n }\n if (containerRef.current.clientWidth < containerRef.current.scrollWidth && tabs.length > 0) {\n setIsOverflowing(true);\n } else {\n setIsOverflowing(false);\n }\n setDisableScrollLeft(isScrolledLeft(containerRef.current));\n setDisableScrollRight(isScrolledRight(containerRef.current));\n }, [tabs]);\n useResizeObserver(containerRef.current, handleResize);\n var onDragEnd = useCallback(result => {\n DragUtils.stopDragging();\n\n // dropped outside the list\n if (!result.destination) {\n return;\n }\n onReorder === null || onReorder === void 0 ? void 0 : onReorder(result.source.index, result.destination.index);\n }, [onReorder]);\n var handleScroll = useCallback(() => {\n if (containerRef.current == null) {\n return;\n }\n var shouldDisableScrollLeft = isScrolledLeft(containerRef.current);\n if (shouldDisableScrollLeft !== disableScrollLeft) {\n setDisableScrollLeft(shouldDisableScrollLeft);\n }\n var shouldDisableScrollRight = isScrolledRight(containerRef.current);\n if (shouldDisableScrollRight !== disableScrollRight) {\n setDisableScrollRight(shouldDisableScrollRight);\n }\n }, [disableScrollLeft, disableScrollRight]);\n var continuousScrollRef = useRef({\n cancelClick: false\n });\n var handleLeftClick = useCallback(() => {\n if (containerRef.current == null || continuousScrollRef.current.cancelClick) {\n return;\n }\n var {\n children\n } = containerRef.current;\n for (var i = children.length - 1; i >= 0; i -= 1) {\n var child = children[i];\n // Subtract 5px from left edge to account for rounding of offset values\n if (child.offsetLeft < containerRef.current.scrollLeft - 5) {\n child.scrollIntoView({\n behavior: 'smooth',\n block: 'nearest',\n inline: 'start'\n });\n return;\n }\n }\n }, []);\n var handleRightClick = useCallback(() => {\n if (containerRef.current == null || continuousScrollRef.current.cancelClick) {\n return;\n }\n var {\n children\n } = containerRef.current;\n for (var i = 0; i < children.length; i += 1) {\n var child = children[i];\n // Add 5px to right edge to account for rounding of offset values\n if (child.offsetLeft + 5 > containerRef.current.scrollLeft + containerRef.current.offsetWidth) {\n child.scrollIntoView({\n behavior: 'smooth',\n block: 'nearest',\n inline: 'end'\n });\n return;\n }\n }\n }, []);\n\n /**\n * Recurively called after initial timeout on mousedown. Continuously scroll with acceleration.\n * Cancelled by mouseup handler cancelling the animationFrame.\n * @param direction of scroll, left or right\n * @param startX starting position of scroll\n * @param deltaX delta from intial startX calculated recursively\n * @param prevTimestamp called on subsequent delta frames\n */\n var handleMouseRepeat = useCallback(function (direction, startX) {\n var deltaX = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;\n var prevTimestamp = arguments.length > 3 ? arguments[3] : undefined;\n var container = containerRef.current;\n if (container == null) {\n return;\n }\n continuousScrollRef.current.cancelClick = true;\n if (direction === 'left') {\n // eslint-disable-next-line no-param-reassign\n container.scrollLeft = startX - deltaX;\n } else if (direction === 'right') {\n // eslint-disable-next-line no-param-reassign\n container.scrollLeft = startX + deltaX;\n }\n\n // eslint-disable-next-line no-param-reassign\n continuousScrollRef.current.rAF = requestAnimationFrame(timestamp => {\n var startTime = prevTimestamp !== null && prevTimestamp !== void 0 ? prevTimestamp : timestamp;\n var deltaTime = timestamp - startTime;\n var newDeltaX = START_SPEED * deltaTime + 0.5 * ACCELERATION * deltaTime ** 2;\n newDeltaX = Math.min(newDeltaX, container.scrollWidth);\n // scrollLeft enforces a limit but no point letting delta increment beyond scrollWidth\n\n handleMouseRepeat(direction, startX, newDeltaX, startTime);\n });\n }, []);\n var endContinuousScroll = useCallback(() => {\n var {\n holdTimer,\n rAF\n } = continuousScrollRef.current;\n if (holdTimer != null) {\n clearTimeout(holdTimer);\n continuousScrollRef.current.holdTimer = undefined;\n }\n if (rAF != null) {\n cancelAnimationFrame(rAF);\n continuousScrollRef.current.rAF = undefined;\n }\n window.removeEventListener('mouseup', endContinuousScroll);\n }, []);\n useEffect(() => () => window.removeEventListener('mouseup', endContinuousScroll), [endContinuousScroll]);\n var handleMouseDown = useCallback(direction => {\n if (containerRef.current != null) {\n continuousScrollRef.current.holdTimer = window.setTimeout(handleMouseRepeat, CLICK_TIMEOUT, direction, containerRef.current.scrollLeft);\n }\n continuousScrollRef.current.cancelClick = false;\n window.addEventListener('mouseup', endContinuousScroll);\n }, [endContinuousScroll, handleMouseRepeat]);\n var handleMouseDownLeft = useCallback(() => {\n handleMouseDown('left');\n }, [handleMouseDown]);\n var handleMouseDownRight = useCallback(() => {\n handleMouseDown('right');\n }, [handleMouseDown]);\n\n // React binds to the root as a passive listener for wheel\n // This prevents the wheel event from being canceled\n // Bypass React's event system so we can prevent the default behavior\n // https://github.com/facebook/react/issues/14856\n useEffect(function handleWheel() {\n var _containerRef$current;\n var onWheel = e => {\n e.stopPropagation();\n e.preventDefault();\n var nav = e.currentTarget;\n var delta = Math.abs(e.deltaY) > Math.abs(e.deltaX) ? e.deltaY : e.deltaX;\n\n // Scrolling jumps too far sometimes, so clamp to get a smoother scroll\n nav.scrollLeft += clamp(delta, -30, 30);\n };\n (_containerRef$current = containerRef.current) === null || _containerRef$current === void 0 ? void 0 : _containerRef$current.addEventListener('wheel', onWheel);\n return () => {\n var _containerRef$current2;\n (_containerRef$current2 = containerRef.current) === null || _containerRef$current2 === void 0 ? void 0 : _containerRef$current2.removeEventListener('wheel', onWheel);\n };\n }, []);\n var tabContextActionMap = useMemo(() => {\n var tabContextActions = new Map();\n tabs.forEach(tab => {\n var {\n key\n } = tab;\n var contextActions = [() => makeBaseContextActions(tab, tabs, onClose), () => {\n var _makeContextActions;\n return (_makeContextActions = makeContextActions === null || makeContextActions === void 0 ? void 0 : makeContextActions(tab)) !== null && _makeContextActions !== void 0 ? _makeContextActions : [];\n }];\n tabContextActions.set(key, contextActions);\n });\n return tabContextActions;\n }, [makeContextActions, tabs, onClose]);\n var activeTabRef = useRef(null);\n var activeTab = tabs.find(tab => tab.key === activeKey);\n var navTabs = tabs.map((tab, index) => {\n var {\n key\n } = tab;\n var isActive = tab === activeTab;\n return /*#__PURE__*/_jsx(NavTab, {\n tab: tab,\n index: index,\n isActive: isActive,\n activeRef: activeTabRef,\n onSelect: onSelect,\n onClose: onClose,\n isDraggable: onReorder != null,\n contextActions: tabContextActionMap.get(key)\n }, key);\n });\n useEffect(\n // Needs to be in a useEffect so the ref is updated\n function scrollActiveTabIntoView() {\n if (activeTabRef.current != null) {\n activeTabRef.current.scrollIntoView({\n block: 'nearest',\n inline: 'nearest'\n });\n }\n }, [activeKey]);\n return /*#__PURE__*/_jsxs(\"nav\", {\n className: \"nav-container\",\n children: [isOverflowing && /*#__PURE__*/_jsx(Button, {\n kind: \"ghost\",\n icon: /*#__PURE__*/_jsx(FontAwesomeIcon, {\n icon: vsChevronLeft,\n transform: \"grow-4\"\n }),\n className: \"tab-controls-btn tab-controls-btn-left\",\n tooltip: \"Scroll left\",\n onClick: handleLeftClick,\n onMouseDown: handleMouseDownLeft,\n disabled: disableScrollLeft\n }), /*#__PURE__*/_jsx(DragDropContext, {\n onDragStart: DragUtils.startDragging,\n onDragEnd: onDragEnd,\n children: /*#__PURE__*/_jsx(Droppable, {\n droppableId: \"droppable-tab-navigation\",\n direction: \"horizontal\",\n children: (provided, snapshot) => /*#__PURE__*/_jsxs(\"div\", _objectSpread(_objectSpread({\n ref: r => {\n if (r == null) {\n return;\n }\n containerRef.current = r;\n provided.innerRef(r);\n }\n // eslint-disable-next-line react/jsx-props-no-spreading\n }, provided.droppableProps), {}, {\n className: classNames('nav nav-tabs', {\n dragging: snapshot.draggingFromThisWith\n }),\n role: \"tablist\",\n onScroll: handleScroll,\n children: [navTabs, provided.placeholder]\n }))\n })\n }), isOverflowing && /*#__PURE__*/_jsx(Button, {\n kind: \"ghost\",\n icon: /*#__PURE__*/_jsx(FontAwesomeIcon, {\n icon: vsChevronRight,\n transform: \"grow-4\"\n }),\n className: \"tab-controls-btn tab-controls-btn-right\",\n tooltip: \"Scroll right\",\n onClick: handleRightClick,\n onMouseDown: handleMouseDownRight,\n disabled: disableScrollRight\n })]\n });\n}\nexport default NavTabList;\n//# sourceMappingURL=NavTabList.js.map","import { useEffect, useMemo } from 'react';\nimport useApi from \"./useApi.js\";\nexport function useCreateClient(serverUrl, options) {\n var api = useApi();\n var client = useMemo(() => new api.CoreClient(serverUrl, options), [api, serverUrl, options]);\n useEffect(() => () => {\n client.disconnect();\n }, [client]);\n return client;\n}\nexport default useCreateClient;\n//# sourceMappingURL=useCreateClient.js.map","import React, { createContext } from 'react';\nimport useCreateClient from \"./useCreateClient.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport var ClientContext = /*#__PURE__*/createContext(null);\n/**\n * ClientBootstrap component. Handles creating the client.\n */\nexport function ClientBootstrap(_ref) {\n var {\n serverUrl,\n options,\n children\n } = _ref;\n var client = useCreateClient(serverUrl, options);\n return /*#__PURE__*/_jsx(ClientContext.Provider, {\n value: client,\n children: children\n });\n}\nexport default ClientBootstrap;\n//# sourceMappingURL=ClientBootstrap.js.map","import { useContextOrThrow } from '@deephaven/react-hooks';\nimport { ClientContext } from \"./ClientBootstrap.js\";\nexport function useClient() {\n return useContextOrThrow(ClientContext, 'No Client available in useClient. Was code wrapped in ClientBootstrap or ClientContext.Provider?');\n}\nexport default useClient;\n//# sourceMappingURL=useClient.js.map","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\nimport { nanoid } from 'nanoid';\nimport Log from '@deephaven/log';\nimport { TimeoutError } from '@deephaven/utils';\nvar log = Log.module('MessageUtils');\nexport var LOGIN_OPTIONS_REQUEST = 'io.deephaven.message.LoginOptions.request';\nexport var SESSION_DETAILS_REQUEST = 'io.deephaven.message.SessionDetails.request';\n\n/**\n * Use a BroadcastChannel for sending messages between tabs, such as when the user logs out.\n */\nexport var BROADCAST_CHANNEL_NAME = 'io.deephaven.broadcast';\n\n/**\n * Event emitted when the user has logged in successfully\n */\nexport var BROADCAST_LOGIN_MESSAGE = 'io.deephaven.broadcast.Login';\n\n/**\n * Event emitted when the user has logged out\n */\nexport var BROADCAST_LOGOUT_MESSAGE = 'io.deephaven.broadcast.Logout';\nexport function isMessage(obj) {\n var message = obj;\n return message != null && typeof message.id === 'string' && typeof message.message === 'string';\n}\nexport function isBroadcastLoginMessage(obj) {\n return isMessage(obj) && obj.message === BROADCAST_LOGIN_MESSAGE;\n}\nexport function isBroadcastLogoutMessage(obj) {\n return isMessage(obj) && obj.message === BROADCAST_LOGOUT_MESSAGE;\n}\nexport function isResponse(obj) {\n var response = obj;\n return response != null && typeof response.id === 'string';\n}\n\n/**\n * Make message object with optional payload\n * @param message Message string\n * @param id Unique message id\n * @param payload Payload to send\n * @returns Message\n */\nexport function makeMessage(message) {\n var id = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : nanoid();\n var payload = arguments.length > 2 ? arguments[2] : undefined;\n return {\n message,\n id,\n payload\n };\n}\n\n/**\n * Make response object for given message id\n * @param messageId Id of the request message to respond to\n * @param payload Payload to respond with\n * @returns Response\n */\nexport function makeResponse(messageId, payload) {\n return {\n id: messageId,\n payload\n };\n}\nexport function getWindowParent() {\n if (window.opener != null) {\n return window.opener;\n }\n if (window.parent != null && window.parent !== window) {\n return window.parent;\n }\n return null;\n}\n\n/**\n * Request data from the parent window and wait for response\n * @param request Request message to send to the parent window\n * @param timeout Timeout in ms\n * @returns Payload of the given type, or undefined\n */\nexport function requestParentResponse(_x) {\n return _requestParentResponse.apply(this, arguments);\n}\nfunction _requestParentResponse() {\n _requestParentResponse = _asyncToGenerator(function* (request) {\n var timeout = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 30000;\n var parent = getWindowParent();\n if (parent == null) {\n throw new Error('window parent is null, unable to send request.');\n }\n return new Promise((resolve, reject) => {\n var timeoutId;\n var id = nanoid();\n var listener = event => {\n var {\n data\n } = event;\n if (!isResponse(data)) {\n log.debug('Ignoring non-deephaven response', data);\n return;\n }\n log.debug('Received message', data);\n if ((data === null || data === void 0 ? void 0 : data.id) !== id) {\n log.debug(\"Ignore message, id doesn't match\", data);\n return;\n }\n window.clearTimeout(timeoutId);\n window.removeEventListener('message', listener);\n resolve(data.payload);\n };\n window.addEventListener('message', listener);\n timeoutId = window.setTimeout(() => {\n window.removeEventListener('message', listener);\n reject(new TimeoutError('Request timed out'));\n }, timeout);\n parent.postMessage(makeMessage(request, id), '*');\n });\n });\n return _requestParentResponse.apply(this, arguments);\n}\n//# sourceMappingURL=MessageUtils.js.map","function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nexport class NoConsolesError extends Error {\n constructor() {\n super(...arguments);\n _defineProperty(this, \"isNoConsolesError\", true);\n }\n}\nexport function isNoConsolesError(error) {\n return error.isNoConsolesError;\n}\nexport default NoConsolesError;\n//# sourceMappingURL=NoConsolesError.js.map","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\nimport Log from '@deephaven/log';\nimport { nanoid } from 'nanoid';\nimport { requestParentResponse, SESSION_DETAILS_REQUEST } from \"./MessageUtils.js\";\nimport NoConsolesError, { isNoConsolesError } from \"./NoConsolesError.js\";\nvar log = Log.module('SessionUtils');\n/**\n * @returns New connection to the server\n */\nexport function createConnection(dh, websocketUrl) {\n log.info(\"Starting connection to '\".concat(websocketUrl, \"'...\"));\n return new dh.IdeConnection(websocketUrl);\n}\n\n/**\n * Create a new session using the default URL\n * @returns A session and config that is ready to use\n */\nexport function createSessionWrapper(_x, _x2, _x3) {\n return _createSessionWrapper.apply(this, arguments);\n}\nfunction _createSessionWrapper() {\n _createSessionWrapper = _asyncToGenerator(function* (dh, connection, details) {\n log.info('Getting console types...');\n var types = yield connection.getConsoleTypes();\n if (types.length === 0) {\n throw new NoConsolesError('No console types available');\n }\n log.info('Available types:', types);\n var type = types[0];\n log.info('Starting session with type', type);\n var session = yield connection.startSession(type);\n var config = {\n type,\n id: nanoid()\n };\n log.info('Console session established', config);\n return {\n session,\n config,\n connection,\n details,\n dh\n };\n });\n return _createSessionWrapper.apply(this, arguments);\n}\nexport function createCoreClient(dh, websocketUrl, options) {\n log.info('createCoreClient', websocketUrl);\n return new dh.CoreClient(websocketUrl, options);\n}\nfunction isSessionDetails(obj) {\n return obj != null && typeof obj === 'object';\n}\nfunction requestParentSessionDetails() {\n return _requestParentSessionDetails.apply(this, arguments);\n}\nfunction _requestParentSessionDetails() {\n _requestParentSessionDetails = _asyncToGenerator(function* () {\n var response = yield requestParentResponse(SESSION_DETAILS_REQUEST);\n if (!isSessionDetails(response)) {\n throw new Error(\"Unexpected session details response: \".concat(response));\n }\n return response;\n });\n return _requestParentSessionDetails.apply(this, arguments);\n}\nexport function getSessionDetails() {\n return _getSessionDetails.apply(this, arguments);\n}\nfunction _getSessionDetails() {\n _getSessionDetails = _asyncToGenerator(function* () {\n var searchParams = new URLSearchParams(window.location.search);\n switch (searchParams.get('authProvider')) {\n case 'parent':\n return requestParentSessionDetails();\n }\n return {};\n });\n return _getSessionDetails.apply(this, arguments);\n}\nexport function loadSessionWrapper(_x4, _x5, _x6) {\n return _loadSessionWrapper.apply(this, arguments);\n}\nfunction _loadSessionWrapper() {\n _loadSessionWrapper = _asyncToGenerator(function* (dh, connection, sessionDetails) {\n var sessionWrapper;\n try {\n sessionWrapper = yield createSessionWrapper(dh, connection, sessionDetails);\n } catch (e) {\n // Consoles may be disabled on the server, but we should still be able to start up and open existing objects\n if (!isNoConsolesError(e)) {\n throw e;\n }\n }\n return sessionWrapper;\n });\n return _loadSessionWrapper.apply(this, arguments);\n}\n//# sourceMappingURL=SessionUtils.js.map","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nimport React, { useEffect, useMemo, useRef, useState } from 'react';\nimport throttle from 'lodash.throttle';\nimport GoldenLayout from '@deephaven/golden-layout';\nimport { useResizeObserver } from '@deephaven/react-hooks';\nimport \"./layout/GoldenLayout.css\";\nimport LayoutUtils from \"./layout/LayoutUtils.js\";\nimport PanelPlaceholder from \"./PanelPlaceholder.js\";\nimport DashboardLayout from \"./DashboardLayout.js\";\nimport \"./Dashboard.css\";\nimport { LayoutManagerContext } from \"./layout/index.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nvar RESIZE_THROTTLE = 100;\nvar DEFAULT_CALLBACK = () => undefined;\nvar EMPTY_OBJECT = Object.freeze({});\nexport function Dashboard(_ref) {\n var {\n id = 'default',\n children,\n emptyDashboard,\n layoutConfig,\n layoutSettings = EMPTY_OBJECT,\n onLayoutConfigChange = DEFAULT_CALLBACK,\n onGoldenLayoutChange = DEFAULT_CALLBACK,\n onLayoutInitialized = DEFAULT_CALLBACK,\n fallbackComponent = PanelPlaceholder,\n hydrate,\n dehydrate,\n panelWrapper\n } = _ref;\n var layoutElement = useRef(null);\n var [isInitialized, setIsInitialized] = useState(false);\n var [layout, setLayout] = useState();\n useEffect(function initDashboard() {\n if (!layoutElement.current) {\n setLayout(undefined);\n return;\n }\n var config = _objectSpread({}, LayoutUtils.makeDefaultLayout());\n if (config.settings === undefined) {\n config.settings = {};\n }\n Object.assign(config.settings, layoutSettings);\n\n // Load our content later after plugins have registered\n config.content = [];\n var newLayout = new GoldenLayout(config, layoutElement.current);\n var onInit = () => {\n newLayout.off('initialised', onInit);\n setIsInitialized(true);\n };\n newLayout.on('initialised', onInit);\n if (fallbackComponent != null) {\n newLayout.setFallbackComponent(fallbackComponent);\n }\n newLayout.init();\n setLayout(newLayout);\n onGoldenLayoutChange(newLayout);\n return () => {\n newLayout.destroy();\n };\n }, [layoutSettings, fallbackComponent, onGoldenLayoutChange, setIsInitialized, setLayout]);\n var handleResize = useMemo(() => throttle(() => {\n if (layout != null && layout.isInitialised) {\n layout === null || layout === void 0 ? void 0 : layout.updateSize();\n }\n }, RESIZE_THROTTLE), [layout]);\n useResizeObserver(layoutElement.current, handleResize);\n return /*#__PURE__*/_jsxs(\"div\", {\n className: \"dashboard-container w-100 h-100\",\n children: [/*#__PURE__*/_jsx(\"div\", {\n className: \"w-100 h-100\",\n ref: layoutElement\n }), isInitialized && layout && /*#__PURE__*/_jsx(LayoutManagerContext.Provider, {\n value: layout,\n children: /*#__PURE__*/_jsx(DashboardLayout, {\n emptyDashboard: emptyDashboard,\n id: id,\n layout: layout,\n layoutConfig: layoutConfig,\n onLayoutChange: onLayoutConfigChange,\n onLayoutInitialized: onLayoutInitialized,\n hydrate: hydrate,\n dehydrate: dehydrate,\n panelWrapper: panelWrapper,\n children: children\n })\n })]\n });\n}\nexport default Dashboard;\n//# sourceMappingURL=Dashboard.js.map","export var CREATE_DASHBOARD = 'CREATE_DASHBOARD';\nexport function stopListenForCreateDashboard(eventHub, handler) {\n try {\n eventHub.off(CREATE_DASHBOARD, handler);\n } catch (_unused) {\n // golden-layout throws if the handler is not found. Instead catch it and no-op\n }\n}\nexport function listenForCreateDashboard(eventHub, handler) {\n eventHub.on(CREATE_DASHBOARD, handler);\n return () => stopListenForCreateDashboard(eventHub, handler);\n}\nexport function emitCreateDashboard(eventHub, payload) {\n eventHub.emit(CREATE_DASHBOARD, payload);\n}\n//# sourceMappingURL=DashboardEvents.js.map","var _excluded = [\"id\", \"isActive\", \"plugins\"];\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport React, { useCallback, useState } from 'react';\nimport { useDispatch } from 'react-redux';\nimport { LoadingOverlay } from '@deephaven/components';\nimport { updateWorkspaceData } from '@deephaven/redux';\nimport { Dashboard } from \"./Dashboard.js\";\nimport { updateDashboardData } from \"./redux/index.js\";\nimport { DEFAULT_DASHBOARD_ID } from \"./DashboardConstants.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport function LazyDashboard(_ref) {\n var {\n id,\n isActive,\n plugins\n } = _ref,\n rest = _objectWithoutProperties(_ref, _excluded);\n var [isLoaded, setIsLoaded] = useState(isActive);\n var dispatch = useDispatch();\n var handleLayoutConfigChange = useCallback(config => {\n // TODO: #1746 Call updateDashboardData for every dashboard\n // This currently allows the default dashboard to keep its layout since\n // other dashboards are not persistent yet and we read workspaceData\n // for the default dashboard layout\n if (id === DEFAULT_DASHBOARD_ID) {\n dispatch(updateWorkspaceData({\n layoutConfig: config\n }));\n } else {\n dispatch(updateDashboardData(id, {\n layoutConfig: config\n }));\n }\n }, [id, dispatch]);\n if (!isLoaded && isActive) {\n setIsLoaded(true);\n }\n if (!isLoaded) {\n return /*#__PURE__*/_jsx(LoadingOverlay, {});\n }\n return /*#__PURE__*/_jsx(Dashboard, _objectSpread(_objectSpread({\n id: id,\n onLayoutConfigChange: handleLayoutConfigChange\n // eslint-disable-next-line react/jsx-props-no-spreading\n }, rest), {}, {\n children: plugins\n }));\n}\nexport default LazyDashboard;\n//# sourceMappingURL=LazyDashboard.js.map","import { useMemo } from 'react';\nimport { isDashboardPlugin, isLegacyDashboardPlugin } from \"./PluginTypes.js\";\nimport { usePlugins } from \"./usePlugins.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport function getDashboardPlugins(plugins) {\n var dbPlugins = [...plugins.entries()].filter(_ref => {\n var [, plugin] = _ref;\n return isDashboardPlugin(plugin) || isLegacyDashboardPlugin(plugin);\n });\n return dbPlugins.map(_ref2 => {\n var [pluginName, plugin] = _ref2;\n if (isLegacyDashboardPlugin(plugin)) {\n var {\n DashboardPlugin: _DPlugin\n } = plugin;\n return /*#__PURE__*/_jsx(_DPlugin, {}, pluginName);\n }\n var {\n component: DPlugin\n } = plugin;\n return /*#__PURE__*/_jsx(DPlugin, {}, pluginName);\n });\n}\n\n/**\n * Get all DashboardPlugin elements from the plugins context\n * @returns Array of DashboardPlugin elements\n */\nexport function useDashboardPlugins() {\n var plugins = usePlugins();\n var dashboardPlugins = useMemo(() => getDashboardPlugins(plugins), [plugins]);\n return dashboardPlugins;\n}\nexport default useDashboardPlugins;\n//# sourceMappingURL=useDashboardPlugins.js.map","import { createContext } from 'react';\nexport var UserOverrideContext = /*#__PURE__*/createContext({});\nexport var UserPermissionsOverrideContext = /*#__PURE__*/createContext({});\nexport var UserContext = /*#__PURE__*/createContext(null);\n//# sourceMappingURL=UserContexts.js.map","import { createContext } from 'react';\nexport var ConnectionContext = /*#__PURE__*/createContext(null);\nexport default ConnectionContext;\n//# sourceMappingURL=ConnectionContext.js.map","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\nimport React, { createContext, useEffect, useState } from 'react';\nimport { LoadingOverlay } from '@deephaven/components';\nimport { useClient } from '@deephaven/jsapi-bootstrap';\nimport { getErrorMessage } from '@deephaven/utils';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport var ServerConfigContext = /*#__PURE__*/createContext(null);\n/**\n * ServerConfigBootstrap component. Handles loading the server config.\n */\nexport function ServerConfigBootstrap(_ref) {\n var {\n children\n } = _ref;\n var client = useClient();\n var [serverConfig, setServerConfig] = useState();\n var [error, setError] = useState();\n useEffect(function initServerConfigValues() {\n var isCanceled = false;\n function loadServerConfigValues() {\n return _loadServerConfigValues.apply(this, arguments);\n }\n function _loadServerConfigValues() {\n _loadServerConfigValues = _asyncToGenerator(function* () {\n try {\n var newServerConfigValues = yield client.getServerConfigValues();\n if (!isCanceled) {\n setServerConfig(new Map(newServerConfigValues));\n }\n } catch (e) {\n if (!isCanceled) {\n setError(e);\n }\n }\n });\n return _loadServerConfigValues.apply(this, arguments);\n }\n loadServerConfigValues();\n return () => {\n isCanceled = true;\n };\n }, [client]);\n var isLoading = serverConfig == null;\n if (isLoading || error != null) {\n return /*#__PURE__*/_jsx(LoadingOverlay, {\n isLoading: isLoading && error == null,\n errorMessage: getErrorMessage(error)\n });\n }\n return /*#__PURE__*/_jsx(ServerConfigContext.Provider, {\n value: serverConfig,\n children: children\n });\n}\nexport default ServerConfigBootstrap;\n//# sourceMappingURL=ServerConfigBootstrap.js.map","import { useContextOrThrow } from '@deephaven/react-hooks';\nimport { ServerConfigContext } from \"./ServerConfigBootstrap.js\";\nexport function useServerConfig() {\n return useContextOrThrow(ServerConfigContext, 'No server config available in useServerConfig. Was code wrapped in ServerConfigBootstrap or ServerConfigContext.Provider?');\n}\nexport default useServerConfig;\n//# sourceMappingURL=useServerConfig.js.map","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nimport React, { useCallback } from 'react';\nimport classNames from 'classnames';\nimport { DashboardUtils, LazyDashboard } from '@deephaven/dashboard';\nimport { useObjectFetcher } from '@deephaven/jsapi-bootstrap';\nimport { LoadingOverlay } from '@deephaven/components';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport function AppDashboards(_ref) {\n var {\n dashboards,\n activeDashboard,\n onLayoutInitialized,\n onGoldenLayoutChange,\n plugins,\n emptyDashboard = /*#__PURE__*/_jsx(LoadingOverlay, {})\n } = _ref;\n var fetchObject = useObjectFetcher();\n var hydratePanel = useCallback((hydrateProps, id) => {\n var {\n metadata\n } = hydrateProps;\n try {\n if (metadata != null) {\n return _objectSpread(_objectSpread({\n fetch: function () {\n var _fetch = _asyncToGenerator(function* () {\n return fetchObject(metadata);\n });\n function fetch() {\n return _fetch.apply(this, arguments);\n }\n return fetch;\n }()\n }, hydrateProps), {}, {\n localDashboardId: id\n });\n }\n } catch (e) {\n // Ignore being unable to get the variable descriptor, do the default dashboard hydration\n }\n return DashboardUtils.hydrate(hydrateProps, id);\n }, [fetchObject]);\n return /*#__PURE__*/_jsx(\"div\", {\n className: \"tab-content\",\n children: dashboards.map(d => /*#__PURE__*/_jsx(\"div\", {\n className: classNames('tab-pane', {\n active: d.id === activeDashboard\n }),\n children: /*#__PURE__*/_jsx(LazyDashboard, {\n id: d.id,\n isActive: d.id === activeDashboard,\n emptyDashboard: emptyDashboard,\n layoutConfig: d.layoutConfig,\n layoutSettings: d.layoutSettings,\n onLayoutInitialized: onLayoutInitialized,\n onGoldenLayoutChange: onGoldenLayoutChange,\n hydrate: hydratePanel,\n plugins: plugins\n }, d.key)\n }, d.id))\n });\n}\nexport default AppDashboards;\n//# sourceMappingURL=AppDashboards.js.map","import { useContextOrThrow } from '@deephaven/react-hooks';\nimport { ConnectionContext } from \"./ConnectionContext.js\";\n/**\n * Retrieve the connection for the current context.\n *\n * @returns Connection for the current context\n */\nexport function useConnection() {\n return useContextOrThrow(ConnectionContext, 'No IdeConnection available in useConnection. Was code wrapped in ConnectionContext.Provider?');\n}\nexport default useConnection;\n//# sourceMappingURL=useConnection.js.map","import { useContextOrThrow } from '@deephaven/react-hooks';\nimport { UserContext } from '@deephaven/auth-plugins';\nexport function useUser() {\n return useContextOrThrow(UserContext, 'No user available in useUser. Was code wrapped in UserBootstrap or UserContext.Provider?');\n}\nexport default useUser;\n//# sourceMappingURL=useUser.js.map","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\n/* eslint-disable class-methods-use-this */\n\nimport Log from '@deephaven/log';\nimport { CanceledPromiseError, PromiseUtils } from '@deephaven/utils';\nimport { FileUtils } from '@deephaven/file-explorer';\nimport debounce from 'lodash.debounce';\nvar log = Log.module('GrpcFileStorageTable');\n\n/**\n * Implementation of FileStorageTable for gRPC service.\n * Takes a path to specify what root this table should start at.\n */\nexport class GrpcFileStorageTable {\n /**\n * Map of expanded directory paths to the tables that manage that path.\n * We use a tree of tables to query the server so we just get the directories that are expanded.\n */\n\n /**\n * @param storageService The storage service to use\n * @param baseRoot Base root for the service\n * @param root The root path for this storage table\n */\n constructor(storageService) {\n var baseRoot = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n var root = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : baseRoot;\n _defineProperty(this, \"storageService\", void 0);\n _defineProperty(this, \"baseRoot\", void 0);\n _defineProperty(this, \"root\", void 0);\n _defineProperty(this, \"currentSize\", 0);\n _defineProperty(this, \"currentViewport\", void 0);\n _defineProperty(this, \"listeners\", []);\n _defineProperty(this, \"viewportUpdatePromise\", void 0);\n _defineProperty(this, \"currentViewportData\", void 0);\n _defineProperty(this, \"childTables\", new Map());\n this.storageService = storageService;\n this.baseRoot = baseRoot;\n this.root = root;\n if (root === baseRoot) {\n this.doRefresh = debounce(this.doRefresh.bind(this), GrpcFileStorageTable.REFRESH_DEBOUNCE);\n }\n }\n removeBaseRoot(filename) {\n return FileUtils.removeRoot(this.baseRoot, filename);\n }\n getViewportData() {\n var _this$viewportUpdateP;\n if (!this.viewportUpdatePromise) {\n this.refreshInternal();\n }\n return (_this$viewportUpdateP = this.viewportUpdatePromise) !== null && _this$viewportUpdateP !== void 0 ? _this$viewportUpdateP : Promise.resolve({\n items: [],\n offset: 0\n });\n }\n getSnapshot(sortedRanges) {\n throw new Error('Method not implemented.');\n }\n get size() {\n return this.currentSize;\n }\n setExpanded(path, expanded) {\n var paths = path.split('/');\n var nextPath = paths.shift();\n if (nextPath === undefined || nextPath === '') {\n nextPath = paths.shift();\n }\n if (nextPath === undefined || nextPath === '') {\n throw new Error(\"Invalid path: \".concat(path));\n }\n var remainingPath = paths.join('/');\n if (expanded) {\n if (!this.childTables.has(nextPath)) {\n var childTable = new GrpcFileStorageTable(this.storageService, this.baseRoot, \"\".concat(this.root, \"/\").concat(nextPath));\n this.childTables.set(nextPath, childTable);\n }\n if (remainingPath) {\n var _childTable = this.childTables.get(nextPath);\n _childTable === null || _childTable === void 0 ? void 0 : _childTable.setExpanded(remainingPath, expanded);\n }\n } else if (this.childTables.has(nextPath)) {\n if (remainingPath) {\n var _childTable2 = this.childTables.get(nextPath);\n _childTable2 === null || _childTable2 === void 0 ? void 0 : _childTable2.setExpanded(remainingPath, expanded);\n } else {\n this.childTables.delete(nextPath);\n }\n }\n if (this.currentViewport) {\n this.refreshInternal();\n }\n }\n collapseAll() {\n this.childTables.clear();\n if (this.currentViewport) {\n this.refreshInternal();\n }\n }\n\n // eslint-disable-next-line class-methods-use-this\n setSearch(search) {\n throw new Error('Method not implemented.');\n }\n setViewport(viewport) {\n this.currentViewport = viewport;\n this.refreshInternal();\n }\n setFilters() {\n throw new Error('Method not implemented.');\n }\n setSorts() {\n throw new Error('Method not implemented.');\n }\n setReversed() {\n throw new Error('Method not implemented.');\n }\n close() {\n this.listeners = [];\n }\n onUpdate(callback) {\n this.listeners = [...this.listeners, callback];\n return () => {\n this.listeners = this.listeners.filter(other => other !== callback);\n };\n }\n doRefresh(callback) {\n log.debug2('doRefresh', this.root);\n callback(this.fetchData());\n }\n refresh() {\n var _this$viewportUpdateP2;\n log.debug2('refresh', this.root);\n (_this$viewportUpdateP2 = this.viewportUpdatePromise) === null || _this$viewportUpdateP2 === void 0 ? void 0 : _this$viewportUpdateP2.cancel();\n var refreshPromise = new Promise(resolve => {\n this.doRefresh(resolve);\n });\n var viewportUpdatePromise = PromiseUtils.makeCancelable(refreshPromise.then(viewportData => {\n if (this.viewportUpdatePromise !== viewportUpdatePromise) {\n throw new CanceledPromiseError();\n }\n this.currentViewportData = viewportData;\n this.sendUpdate();\n return viewportData;\n }));\n\n // Add a catch here as we're not catching the promises anywhere else\n viewportUpdatePromise.catch(e => {\n if (!PromiseUtils.isCanceled(e)) {\n log.error('Error updating viewport', e);\n }\n });\n this.viewportUpdatePromise = viewportUpdatePromise;\n }\n\n /**\n * Refreshes data, but catches any errors and logs them\n */\n refreshInternal() {\n try {\n this.refresh();\n } catch (e) {\n if (!PromiseUtils.isCanceled(e)) {\n log.error('Unable to refresh data', e);\n }\n }\n }\n fetchData() {\n var _this = this;\n return _asyncToGenerator(function* () {\n var {\n currentViewport: viewport\n } = _this;\n if (!viewport) {\n throw new Error('No viewport set');\n }\n\n // First get the root directory contents\n var dirContents = yield _this.storageService.listItems(_this.root);\n var items = dirContents.map(file => ({\n type: file.type,\n filename: _this.removeBaseRoot(file.filename),\n basename: file.basename,\n id: _this.removeBaseRoot(file.filename),\n isExpanded: file.type === 'directory' ? _this.childTables.has(file.basename) : undefined\n })).sort((a, b) => {\n if (a.type !== b.type) {\n return a.type === 'directory' ? -1 : 1;\n }\n return a.basename.localeCompare(b.basename);\n });\n\n // Get the data from all expanded directories\n for (var i = 0; i < items.length; i += 1) {\n var item = items[i];\n var {\n basename,\n filename\n } = item;\n if (filename === _this.removeBaseRoot(\"\".concat(_this.root, \"/\").concat(basename)) && item.type === 'directory') {\n var childTable = _this.childTables.get(basename);\n if (childTable != null) {\n childTable.setViewport({\n top: 0,\n bottom: viewport.bottom - i\n });\n // eslint-disable-next-line no-await-in-loop\n var childViewportData = yield childTable.getViewportData();\n items.splice(i + 1, 0, ...childViewportData.items);\n }\n }\n }\n _this.currentSize = items.length;\n log.debug2(_this.root, 'items', items, viewport);\n\n // Slice it to the correct viewport\n items = items.slice(viewport.top, viewport.bottom);\n return {\n items,\n offset: viewport.top\n };\n })();\n }\n sendUpdate() {\n var _this$currentViewport;\n // Retain a reference to it in case a listener gets removed while sending an update\n var {\n listeners\n } = this;\n var data = (_this$currentViewport = this.currentViewportData) !== null && _this$currentViewport !== void 0 ? _this$currentViewport : {\n items: [],\n offset: 0\n };\n for (var i = 0; i < listeners.length; i += 1) {\n listeners[i](data);\n }\n }\n}\n_defineProperty(GrpcFileStorageTable, \"REFRESH_DEBOUNCE\", 50);\nexport default GrpcFileStorageTable;\n//# sourceMappingURL=GrpcFileStorageTable.js.map","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nimport throttle from 'lodash.throttle';\nimport { FileNotFoundError, FileUtils, isFileType } from '@deephaven/file-explorer';\nimport Log from '@deephaven/log';\nimport GrpcFileStorageTable from \"./GrpcFileStorageTable.js\";\nvar log = Log.module('GrpcFileStorage');\nexport class GrpcFileStorage {\n /**\n * FileStorage implementation using gRPC\n * @param storageService Storage service to use\n * @param root Root path for this instance. Should not contain trailing slash.\n */\n constructor(dh, storageService) {\n var root = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '';\n _defineProperty(this, \"dh\", void 0);\n _defineProperty(this, \"storageService\", void 0);\n _defineProperty(this, \"tables\", []);\n _defineProperty(this, \"root\", void 0);\n _defineProperty(this, \"refreshTables\", throttle(() => {\n this.tables.forEach(table => table.refresh());\n }, GrpcFileStorage.REFRESH_THROTTLE));\n this.dh = dh;\n this.storageService = storageService;\n this.root = root;\n }\n removeRoot(filename) {\n return FileUtils.removeRoot(this.root, filename);\n }\n addRoot(path) {\n return FileUtils.addRoot(this.root, path);\n }\n createDirectory(path) {\n var _this = this;\n return _asyncToGenerator(function* () {\n yield _this.storageService.createDirectory(_this.addRoot(path));\n _this.refreshTables();\n return {\n type: 'directory',\n id: path,\n filename: path,\n basename: FileUtils.getBaseName(path)\n };\n })();\n }\n getTable() {\n var _this2 = this;\n return _asyncToGenerator(function* () {\n var table = new GrpcFileStorageTable(_this2.storageService, _this2.root);\n _this2.tables.push(table);\n return table;\n })();\n }\n saveFile(file) {\n var _this3 = this;\n return _asyncToGenerator(function* () {\n var fileContents = _this3.dh.storage.FileContents.text(file.content);\n yield _this3.storageService.saveFile(_this3.addRoot(file.filename), fileContents, true);\n _this3.refreshTables();\n return file;\n })();\n }\n loadFile(name) {\n var _this4 = this;\n return _asyncToGenerator(function* () {\n var fileContents = yield _this4.storageService.loadFile(_this4.addRoot(name));\n var content = yield fileContents.text();\n return {\n filename: name,\n basename: FileUtils.getBaseName(name),\n content\n };\n })();\n }\n copyFile(name, newName) {\n var _this5 = this;\n return _asyncToGenerator(function* () {\n var fileContents = yield _this5.storageService.loadFile(_this5.addRoot(name));\n yield _this5.storageService.saveFile(_this5.addRoot(newName), fileContents, false);\n _this5.refreshTables();\n })();\n }\n deleteFile(name) {\n var _this6 = this;\n return _asyncToGenerator(function* () {\n yield _this6.storageService.deleteItem(_this6.addRoot(name));\n _this6.refreshTables();\n })();\n }\n moveFile(name, newName) {\n var _this7 = this;\n return _asyncToGenerator(function* () {\n yield _this7.storageService.moveItem(_this7.addRoot(name), _this7.addRoot(newName));\n _this7.refreshTables();\n })();\n }\n info(name) {\n var _this8 = this;\n return _asyncToGenerator(function* () {\n var allItems = yield _this8.storageService.listItems(_this8.addRoot(FileUtils.getPath(name)), FileUtils.getBaseName(name));\n if (allItems.length === 0) {\n throw new FileNotFoundError();\n }\n if (allItems.length > 1) {\n log.error('More than one matching file found, should never happen.', allItems);\n throw new Error('More than one matching file found');\n }\n var itemDetails = allItems[0];\n if (!isFileType(itemDetails.type)) {\n throw new Error(\"Unexpected file type: \".concat(itemDetails.type));\n }\n return {\n filename: _this8.removeRoot(itemDetails.filename),\n basename: itemDetails.basename,\n id: _this8.removeRoot(itemDetails.filename),\n type: itemDetails.type\n };\n })();\n }\n}\n_defineProperty(GrpcFileStorage, \"REFRESH_THROTTLE\", 150);\nexport default GrpcFileStorage;\n//# sourceMappingURL=GrpcFileStorage.js.map","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nexport class GrpcLayoutStorage {\n /**\n *\n * @param storageService The gRPC storage service to use\n * @param root The root path where the layouts are stored\n */\n constructor(storageService) {\n var root = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n _defineProperty(this, \"storageService\", void 0);\n _defineProperty(this, \"root\", void 0);\n this.storageService = storageService;\n this.root = root;\n }\n getLayouts() {\n var _this = this;\n return _asyncToGenerator(function* () {\n var files = yield _this.storageService.listItems(_this.root, '*.json');\n return files.map(file => file.basename);\n })();\n }\n getLayout(name) {\n var _this2 = this;\n return _asyncToGenerator(function* () {\n var fileContents = yield _this2.storageService.loadFile(\"\".concat(_this2.root, \"/\").concat(name));\n var content = yield fileContents.text();\n return JSON.parse(content);\n })();\n }\n}\nexport default GrpcLayoutStorage;\n//# sourceMappingURL=GrpcLayoutStorage.js.map","/**\n * Have a different version to support legacy layout exports\n */\n\nexport function isLayoutV2(layout) {\n return layout.version === 2;\n}\nexport function isLayoutV1(layout) {\n return Array.isArray(layout);\n}\n\n/**\n * Interface for accessing layouts from wherever they are stored.\n */\n//# sourceMappingURL=LayoutStorage.js.map","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\nimport { CommandHistoryPanel, ConsolePanel, FileExplorerPanel, LogPanel } from '@deephaven/dashboard-core-plugins';\nimport Log from '@deephaven/log';\nimport { isLayoutV1, isLayoutV2 } from \"./LayoutStorage.js\";\nvar log = Log.module('UserLayoutUtils');\nexport var DEFAULT_LAYOUT_CONFIG = {\n layoutConfig: [{\n type: 'column',\n content: [{\n type: 'row',\n height: 40,\n // slightly smaller than 50-50 to allow more space for tables below\n content: [{\n type: 'stack',\n content: [{\n type: 'react-component',\n component: ConsolePanel.COMPONENT,\n title: ConsolePanel.TITLE,\n isClosable: false\n }, {\n type: 'react-component',\n component: LogPanel.COMPONENT,\n title: LogPanel.TITLE,\n isClosable: false\n }]\n }, {\n type: 'stack',\n width: 25,\n content: [{\n type: 'react-component',\n component: CommandHistoryPanel.COMPONENT,\n title: CommandHistoryPanel.TITLE,\n isClosable: false\n }, {\n type: 'react-component',\n component: FileExplorerPanel.COMPONENT,\n title: FileExplorerPanel.TITLE,\n isClosable: false\n }]\n }]\n }, {\n type: 'row',\n content: [{\n type: 'stack',\n title: 'Notebooks',\n content: []\n }]\n }]\n }],\n links: [],\n filterSets: [],\n version: 2\n};\nexport var DEFAULT_LAYOUT_CONFIG_NO_CONSOLE = {\n layoutConfig: [],\n links: [],\n filterSets: [],\n version: 2\n};\nexport function normalizeLayout(layout) {\n if (isLayoutV2(layout)) {\n return layout;\n }\n if (isLayoutV1(layout)) {\n var layoutConfig = layout;\n return {\n layoutConfig,\n links: [],\n filterSets: [],\n version: 2\n };\n }\n throw new Error(\"Unexpected layout import format: \".concat(layout));\n}\n\n/**\n * Get the default layout for the user to use. Checks layout storage for any layouts, and uses the first one if found.\n * @param layoutStorage The layout storage to get the default layouts from\n * @param isConsoleAvailable Whether console sessions are available.\n * @returns The default layout config to use\n */\nexport function getDefaultLayout(_x) {\n return _getDefaultLayout.apply(this, arguments);\n}\nfunction _getDefaultLayout() {\n _getDefaultLayout = _asyncToGenerator(function* (layoutStorage) {\n var isConsoleAvailable = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n try {\n var layouts = yield layoutStorage.getLayouts();\n if (layouts.length > 0) {\n try {\n // We found a layout on the server, use it. It could be an empty layout if they want user to build their own\n var layout = yield layoutStorage.getLayout(layouts[0]);\n return normalizeLayout(layout);\n } catch (err) {\n log.error('Unable to load layout', layouts[0], ':', err);\n log.warn('No valid layouts found, falling back to default layout');\n }\n }\n } catch (err) {\n log.error('Unable to fetch layout list', err);\n log.warn('Falling back to default layout');\n }\n // Otherwise, do the default layout\n return isConsoleAvailable ? DEFAULT_LAYOUT_CONFIG : DEFAULT_LAYOUT_CONFIG_NO_CONSOLE;\n });\n return _getDefaultLayout.apply(this, arguments);\n}\nexport function exportLayout(data) {\n var {\n filterSets,\n layoutConfig,\n links,\n pluginDataMap\n } = data;\n var exportedLayout = {\n filterSets,\n layoutConfig,\n links,\n pluginDataMap,\n version: 2\n };\n return exportedLayout;\n}\nexport default {\n exportLayout,\n getDefaultLayout,\n normalizeLayout\n};\n//# sourceMappingURL=UserLayoutUtils.js.map","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nimport Log from '@deephaven/log';\nimport { DateTimeColumnFormatter, DecimalColumnFormatter, IntegerColumnFormatter } from '@deephaven/jsapi-utils';\nimport UserLayoutUtils from \"./UserLayoutUtils.js\";\nvar log = Log.module('LocalWorkspaceStorage');\n\n/**\n * Implementation of WorkspaceStorage that just stores the workspace data in localStorage\n */\nexport class LocalWorkspaceStorage {\n static getBooleanServerConfig(serverConfigValues, key) {\n var _serverConfigValues$g, _serverConfigValues$g2;\n if ((serverConfigValues === null || serverConfigValues === void 0 ? void 0 : (_serverConfigValues$g = serverConfigValues.get(key)) === null || _serverConfigValues$g === void 0 ? void 0 : _serverConfigValues$g.toLowerCase()) === 'true') {\n return true;\n }\n if ((serverConfigValues === null || serverConfigValues === void 0 ? void 0 : (_serverConfigValues$g2 = serverConfigValues.get(key)) === null || _serverConfigValues$g2 === void 0 ? void 0 : _serverConfigValues$g2.toLowerCase()) === 'false') {\n return false;\n }\n return undefined;\n }\n static makeDefaultWorkspaceSettings(serverConfigValues) {\n var settings = {\n defaultDateTimeFormat: DateTimeColumnFormatter.DEFAULT_DATETIME_FORMAT_STRING,\n formatter: [],\n timeZone: DateTimeColumnFormatter.DEFAULT_TIME_ZONE_ID,\n showTimeZone: false,\n showTSeparator: true,\n disableMoveConfirmation: false,\n defaultDecimalFormatOptions: {\n defaultFormatString: DecimalColumnFormatter.DEFAULT_FORMAT_STRING\n },\n defaultIntegerFormatOptions: {\n defaultFormatString: IntegerColumnFormatter.DEFAULT_FORMAT_STRING\n },\n truncateNumbersWithPound: false,\n showEmptyStrings: true,\n showNullStrings: true,\n showExtraGroupColumn: true,\n defaultNotebookSettings: {\n isMinimapEnabled: false\n },\n webgl: true,\n webglEditable: true,\n gridDensity: 'regular'\n };\n var serverSettings = {\n defaultDateTimeFormat: serverConfigValues === null || serverConfigValues === void 0 ? void 0 : serverConfigValues.get('dateTimeFormat'),\n formatter: [],\n timeZone: serverConfigValues === null || serverConfigValues === void 0 ? void 0 : serverConfigValues.get('timeZone'),\n showTimeZone: LocalWorkspaceStorage.getBooleanServerConfig(serverConfigValues, 'showTimeZone'),\n showTSeparator: LocalWorkspaceStorage.getBooleanServerConfig(serverConfigValues, 'showTSeparator'),\n disableMoveConfirmation: LocalWorkspaceStorage.getBooleanServerConfig(serverConfigValues, 'disableMoveConfirmation'),\n defaultDecimalFormatOptions: (serverConfigValues === null || serverConfigValues === void 0 ? void 0 : serverConfigValues.get('decimalFormat')) !== undefined ? {\n defaultFormatString: serverConfigValues === null || serverConfigValues === void 0 ? void 0 : serverConfigValues.get('decimalFormat')\n } : undefined,\n defaultIntegerFormatOptions: (serverConfigValues === null || serverConfigValues === void 0 ? void 0 : serverConfigValues.get('integerFormat')) !== undefined ? {\n defaultFormatString: serverConfigValues === null || serverConfigValues === void 0 ? void 0 : serverConfigValues.get('integerFormat')\n } : undefined,\n truncateNumbersWithPound: LocalWorkspaceStorage.getBooleanServerConfig(serverConfigValues, 'truncateNumbersWithPound'),\n showEmptyStrings: LocalWorkspaceStorage.getBooleanServerConfig(serverConfigValues, 'showEmptyStrings'),\n showNullStrings: LocalWorkspaceStorage.getBooleanServerConfig(serverConfigValues, 'showNullStrings'),\n showExtraGroupColumn: LocalWorkspaceStorage.getBooleanServerConfig(serverConfigValues, 'showExtraGroupColumn'),\n defaultNotebookSettings: (serverConfigValues === null || serverConfigValues === void 0 ? void 0 : serverConfigValues.get('isMinimapEnabled')) !== undefined ? {\n isMinimapEnabled: LocalWorkspaceStorage.getBooleanServerConfig(serverConfigValues, 'isMinimapEnabled')\n } : undefined,\n webgl: LocalWorkspaceStorage.getBooleanServerConfig(serverConfigValues, 'web.webgl'),\n webglEditable: LocalWorkspaceStorage.getBooleanServerConfig(serverConfigValues, 'web.webgl.editable')\n };\n var keys = Object.keys(serverSettings);\n for (var i = 0; i < keys.length; i += 1) {\n var key = keys[i];\n if (serverSettings[key] !== undefined) {\n // @ts-expect-error override default for defined server settings\n settings[key] = serverSettings[key];\n }\n }\n return settings;\n }\n static makeWorkspaceData(layoutStorage, options) {\n return _asyncToGenerator(function* () {\n var {\n filterSets,\n links,\n layoutConfig,\n pluginDataMap = {}\n } = yield UserLayoutUtils.getDefaultLayout(layoutStorage, options === null || options === void 0 ? void 0 : options.isConsoleAvailable);\n return {\n settings: {},\n layoutConfig,\n closed: [{}],\n links,\n filterSets,\n pluginDataMap\n };\n })();\n }\n static makeDefaultWorkspace(layoutStorage, options) {\n return _asyncToGenerator(function* () {\n return {\n data: yield LocalWorkspaceStorage.makeWorkspaceData(layoutStorage, options)\n };\n })();\n }\n constructor(layoutStorage) {\n _defineProperty(this, \"layoutStorage\", void 0);\n this.layoutStorage = layoutStorage;\n }\n\n // eslint-disable-next-line class-methods-use-this\n load(options) {\n var _this = this;\n return _asyncToGenerator(function* () {\n try {\n var _localStorage$getItem;\n var workspace = JSON.parse((_localStorage$getItem = localStorage.getItem(LocalWorkspaceStorage.STORAGE_KEY)) !== null && _localStorage$getItem !== void 0 ? _localStorage$getItem : '');\n return workspace;\n } catch (e) {\n log.info('Unable to load workspace data, initializing to default data');\n return LocalWorkspaceStorage.makeDefaultWorkspace(_this.layoutStorage, options);\n }\n })();\n }\n\n // eslint-disable-next-line class-methods-use-this\n save(workspace) {\n return _asyncToGenerator(function* () {\n localStorage.setItem(LocalWorkspaceStorage.STORAGE_KEY, JSON.stringify(workspace));\n return workspace;\n })();\n }\n}\n_defineProperty(LocalWorkspaceStorage, \"STORAGE_KEY\", 'deephaven.WorkspaceStorage');\nexport default LocalWorkspaceStorage;\n//# sourceMappingURL=LocalWorkspaceStorage.js.map"],"names":["useResizeObserver","element","onResize","useEffect","resizeObserverInstance","ThemePicker","selectedThemeKey","setSelectedThemeKey","themes","useTheme","onSelectionChange","useCallback","key","_jsx","Picker","item","Item","Logo","_ref","className","style","classNames","_excluded","_excluded2","ownKeys","object","enumerableOnly","keys","symbols","sym","_objectSpread","target","i","source","_defineProperty","obj","value","_toPropertyKey","arg","_toPrimitive","input","hint","prim","res","_objectWithoutProperties","excluded","_objectWithoutPropertiesLoose","sourceSymbolKeys","sourceKeys","React","ref","UNSAFE_className","props","_usePickerProps","usePickerProps","defaultSelectedKey","disabledKeys","selectedKey","scrollRef","pickerProps","pickerRef","useMergeRef","SpectrumPicker","cl","Heading","forwardRef","forwardedRef","color","UNSAFE_style","rest","useMemo","colorValueStyle","SpectrumHeading","log","Log","ContextMenu","PureComponent","_this$container$curre","onMenuOpened","prevProps","prevState","actions","activeSubMenu","_this$container$curre2","_this$container$curre3","options","keyboardIndex","index","mouseIndex","menuItems","ContextActionUtils","nonPromiseItems","menuItem","promise","cancellablePromise","PromiseUtils","state","resolvedMenuItems","pendingItems","error","parentRect","_this$container$curre4","_this$container$curre5","_this$container$curre6","_this$container$curre7","updatePosition","subMenuParentWidth","subMenuParentHeight","oldTop","oldLeft","top","left","width","height","hasOverflow","isContextMenuChild","oldFocus","newFocus","openSubMenu","newSubMenu","closeAll","closeMenu","onMenuClosed","closeAllMenus","e","focusIndex","menuItemElements","subMenuTop","subMenuLeft","menuItemElement","ContextMenuItem","pendingElement","LoadingSpinner","menuStyle","dataTestId","showSubmenu","_jsxs","_Fragment","verifiedTop","verifiedLeft","ContextMenuRoot","Component","mouseEvent","contextActions","menu","ContextMenuRoot$1","Collapse","elemParam","elem","scrollBarWidth","autoFocusOnShow","_children","inTransition","CSSTransition","PropTypes","Collapse$1","NavTab","memo","tab","onClose","onSelect","isActive","activeRef","isDraggable","isClosable","title","icon","iconElem","FontAwesomeIcon","Draggable","provided","snapshot","event","Button","vsClose","ContextActions","CLICK_TIMEOUT","START_SPEED","ACCELERATION","isScrolledLeft","isScrolledRight","makeBaseContextActions","tabs","disabled","_i","t","NavTabList","activeKey","onReorder","makeContextActions","containerRef","useRef","isOverflowing","setIsOverflowing","useState","disableScrollLeft","setDisableScrollLeft","disableScrollRight","setDisableScrollRight","handleResize","onDragEnd","result","DragUtils","handleScroll","shouldDisableScrollLeft","shouldDisableScrollRight","continuousScrollRef","handleLeftClick","children","child","handleRightClick","handleMouseRepeat","direction","startX","deltaX","prevTimestamp","container","timestamp","startTime","deltaTime","newDeltaX","endContinuousScroll","holdTimer","rAF","handleMouseDown","handleMouseDownLeft","handleMouseDownRight","_containerRef$current","onWheel","nav","delta","clamp","_containerRef$current2","tabContextActionMap","tabContextActions","_makeContextActions","activeTabRef","activeTab","navTabs","vsChevronLeft","DragDropContext","Droppable","r","vsChevronRight","useCreateClient","serverUrl","api","useApi","client","ClientContext","createContext","ClientBootstrap","useClient","useContextOrThrow","asyncGeneratorStep","gen","resolve","reject","_next","_throw","info","_asyncToGenerator","fn","self","args","err","LOGIN_OPTIONS_REQUEST","SESSION_DETAILS_REQUEST","BROADCAST_CHANNEL_NAME","BROADCAST_LOGIN_MESSAGE","BROADCAST_LOGOUT_MESSAGE","isMessage","message","isBroadcastLoginMessage","isBroadcastLogoutMessage","isResponse","response","makeMessage","id","nanoid","payload","makeResponse","messageId","getWindowParent","requestParentResponse","_x","_requestParentResponse","request","timeout","parent","timeoutId","listener","data","TimeoutError","NoConsolesError","isNoConsolesError","createConnection","dh","websocketUrl","createSessionWrapper","_x2","_x3","_createSessionWrapper","connection","details","types","type","session","config","createCoreClient","isSessionDetails","requestParentSessionDetails","_requestParentSessionDetails","getSessionDetails","_getSessionDetails","searchParams","loadSessionWrapper","_x4","_x5","_x6","_loadSessionWrapper","sessionDetails","sessionWrapper","RESIZE_THROTTLE","DEFAULT_CALLBACK","EMPTY_OBJECT","Dashboard","emptyDashboard","layoutConfig","layoutSettings","onLayoutConfigChange","onGoldenLayoutChange","onLayoutInitialized","fallbackComponent","PanelPlaceholder","hydrate","dehydrate","panelWrapper","layoutElement","isInitialized","setIsInitialized","layout","setLayout","LayoutUtils","newLayout","GoldenLayout","onInit","throttle","LayoutManagerContext","DashboardLayout","CREATE_DASHBOARD","stopListenForCreateDashboard","eventHub","handler","listenForCreateDashboard","emitCreateDashboard","LazyDashboard","plugins","isLoaded","setIsLoaded","dispatch","useDispatch","handleLayoutConfigChange","DEFAULT_DASHBOARD_ID","updateWorkspaceData","updateDashboardData","LoadingOverlay","getDashboardPlugins","dbPlugins","plugin","isDashboardPlugin","isLegacyDashboardPlugin","_ref2","pluginName","_DPlugin","DPlugin","useDashboardPlugins","usePlugins","dashboardPlugins","UserOverrideContext","UserPermissionsOverrideContext","UserContext","ConnectionContext","ServerConfigContext","ServerConfigBootstrap","serverConfig","setServerConfig","setError","isCanceled","loadServerConfigValues","_loadServerConfigValues","newServerConfigValues","isLoading","getErrorMessage","useServerConfig","AppDashboards","dashboards","activeDashboard","fetchObject","useObjectFetcher","hydratePanel","hydrateProps","metadata","_fetch","fetch","DashboardUtils","d","useConnection","useUser","GrpcFileStorageTable","storageService","baseRoot","root","debounce","filename","FileUtils","_this$viewportUpdateP","sortedRanges","path","expanded","paths","nextPath","remainingPath","childTable","_childTable","_childTable2","search","viewport","callback","other","_this$viewportUpdateP2","refreshPromise","viewportUpdatePromise","viewportData","CanceledPromiseError","_this","dirContents","items","file","a","b","basename","childViewportData","_this$currentViewport","listeners","GrpcFileStorage","table","_this2","_this3","fileContents","name","_this4","content","newName","_this5","_this6","_this7","_this8","allItems","FileNotFoundError","itemDetails","isFileType","GrpcLayoutStorage","files","isLayoutV2","isLayoutV1","DEFAULT_LAYOUT_CONFIG","ConsolePanel","LogPanel","CommandHistoryPanel","FileExplorerPanel","DEFAULT_LAYOUT_CONFIG_NO_CONSOLE","normalizeLayout","getDefaultLayout","_getDefaultLayout","layoutStorage","isConsoleAvailable","layouts","exportLayout","filterSets","links","pluginDataMap","exportedLayout","UserLayoutUtils","LocalWorkspaceStorage","serverConfigValues","_serverConfigValues$g","_serverConfigValues$g2","settings","DateTimeColumnFormatter","DecimalColumnFormatter","IntegerColumnFormatter","serverSettings","_localStorage$getItem","workspace"],"mappings":"ysBAOO,SAASA,GAAkBC,EAASC,EAAU,CACnDC,EAAAA,UAAU,IAAM,CACd,GAAIF,GAAW,KAGf,KAAIG,EAAyB,IAAI,OAAO,eAAeF,CAAQ,EAC/D,OAAAE,EAAuB,QAAQH,CAAO,EAC/B,IAAM,CACPA,GAAW,MACbG,EAAuB,UAAUH,CAAO,CAEhD,EACA,EAAK,CAACA,EAASC,CAAQ,CAAC,CACxB,CChBO,SAASG,IAAc,CAC5B,GAAI,CACF,iBAAAC,EACA,oBAAAC,EACA,OAAAC,CACD,EAAGC,GAAQ,EACRC,EAAoBC,EAAW,YAACC,GAAO,CACzCL,EAAoBK,CAAG,CAC3B,EAAK,CAACL,CAAmB,CAAC,EACxB,OAAoBM,EAAAA,IAAKC,GAAQ,CAC/B,MAAO,sBACP,MAAON,EACP,YAAaF,EACb,kBAAmBI,EACnB,SAAUK,GAAqBF,EAAI,IAACG,GAAM,CACxC,SAAUD,EAAK,IACrB,EAAOA,EAAK,QAAQ,CACpB,CAAG,CACH,CCnBO,SAASE,GAAKC,EAAM,CACzB,GAAI,CACF,UAAAC,EACA,MAAAC,CACD,EAAGF,EACJ,OAAoBL,EAAAA,IAAK,MAAO,CAC9B,UAAWQ,EAAW,UAAWF,CAAS,EAC1C,MAAOC,CACX,CAAG,CACH,CCZA,IAAIE,GAAY,CAAC,kBAAkB,EACjCC,GAAa,CAAC,qBAAsB,eAAgB,cAAe,KAAK,EAC1E,SAASC,GAAQC,EAAQC,EAAgB,CAAE,IAAIC,EAAO,OAAO,KAAKF,CAAM,EAAG,GAAI,OAAO,sBAAuB,CAAE,IAAIG,EAAU,OAAO,sBAAsBH,CAAM,EAAGC,IAAmBE,EAAUA,EAAQ,OAAO,SAAUC,EAAK,CAAE,OAAO,OAAO,yBAAyBJ,EAAQI,CAAG,EAAE,UAAW,CAAE,GAAIF,EAAK,KAAK,MAAMA,EAAMC,CAAO,CAAE,CAAG,OAAOD,CAAO,CACrV,SAASG,GAAcC,EAAQ,CAAE,QAASC,EAAI,EAAGA,EAAI,UAAU,OAAQA,IAAK,CAAE,IAAIC,EAAiB,UAAUD,CAAC,GAAnB,KAAuB,UAAUA,CAAC,EAAI,CAAE,EAAEA,EAAI,EAAIR,GAAQ,OAAOS,CAAM,EAAG,EAAE,EAAE,QAAQ,SAAUrB,EAAK,CAAEsB,GAAgBH,EAAQnB,EAAKqB,EAAOrB,CAAG,CAAC,CAAI,CAAA,EAAI,OAAO,0BAA4B,OAAO,iBAAiBmB,EAAQ,OAAO,0BAA0BE,CAAM,CAAC,EAAIT,GAAQ,OAAOS,CAAM,CAAC,EAAE,QAAQ,SAAUrB,EAAK,CAAE,OAAO,eAAemB,EAAQnB,EAAK,OAAO,yBAAyBqB,EAAQrB,CAAG,CAAC,CAAE,CAAE,CAAI,CAAC,OAAOmB,CAAS,CAC1f,SAASG,GAAgBC,EAAKvB,EAAKwB,EAAO,CAAE,OAAAxB,EAAMyB,GAAezB,CAAG,EAAOA,KAAOuB,EAAO,OAAO,eAAeA,EAAKvB,EAAK,CAAE,MAAOwB,EAAO,WAAY,GAAM,aAAc,GAAM,SAAU,EAAM,CAAA,EAAYD,EAAIvB,CAAG,EAAIwB,EAAgBD,CAAM,CAC5O,SAASE,GAAeC,EAAK,CAAE,IAAI1B,EAAM2B,GAAaD,EAAK,QAAQ,EAAG,OAAO,OAAO1B,GAAQ,SAAWA,EAAM,OAAOA,CAAG,CAAI,CAC3H,SAAS2B,GAAaC,EAAOC,EAAM,CAAE,GAAI,OAAOD,GAAU,UAAYA,IAAU,KAAM,OAAOA,EAAO,IAAIE,EAAOF,EAAM,OAAO,WAAW,EAAG,GAAIE,IAAS,OAAW,CAAE,IAAIC,EAAMD,EAAK,KAAKF,EAAOC,GAAQ,SAAS,EAAG,GAAI,OAAOE,GAAQ,SAAU,OAAOA,EAAK,MAAM,IAAI,UAAU,8CAA8C,CAAI,CAAC,OAAQF,IAAS,SAAW,OAAS,QAAQD,CAAK,CAAI,CACzX,SAASI,GAAyBX,EAAQY,EAAU,CAAE,GAAIZ,GAAU,KAAM,MAAO,GAAI,IAAIF,EAASe,GAA8Bb,EAAQY,CAAQ,EAAOjC,EAAK,EAAG,GAAI,OAAO,sBAAuB,CAAE,IAAImC,EAAmB,OAAO,sBAAsBd,CAAM,EAAG,IAAK,EAAI,EAAG,EAAIc,EAAiB,OAAQ,IAAOnC,EAAMmC,EAAiB,CAAC,EAAO,EAAAF,EAAS,QAAQjC,CAAG,GAAK,IAAkB,OAAO,UAAU,qBAAqB,KAAKqB,EAAQrB,CAAG,IAAamB,EAAOnB,CAAG,EAAIqB,EAAOrB,CAAG,EAAI,CAAG,OAAOmB,CAAS,CAC5e,SAASe,GAA8Bb,EAAQY,EAAU,CAAE,GAAIZ,GAAU,KAAM,MAAO,CAAE,EAAE,IAAIF,EAAS,CAAE,EAAMiB,EAAa,OAAO,KAAKf,CAAM,EAAOrB,EAAKoB,EAAG,IAAKA,EAAI,EAAGA,EAAIgB,EAAW,OAAQhB,IAAOpB,EAAMoC,EAAWhB,CAAC,EAAO,EAAAa,EAAS,QAAQjC,CAAG,GAAK,KAAamB,EAAOnB,CAAG,EAAIqB,EAAOrB,CAAG,GAAK,OAAOmB,CAAS,CAczS,IAACjB,GAAsBmC,EAAM,WAAW,SAAgB/B,EAAMgC,EAAK,CAC3E,GAAI,CACA,iBAAAC,CACN,EAAQjC,EACJkC,EAAQR,GAAyB1B,EAAMI,EAAS,EAC9C+B,EAAkBC,GAAeF,CAAK,EACxC,CACE,mBAAAG,EACA,aAAAC,EACA,YAAAC,EACA,IAAKC,CACX,EAAQL,EACJM,EAAcf,GAAyBS,EAAiB9B,EAAU,EAChEqC,EAAYC,GAAYX,EAAKQ,CAAS,EAC1C,OAAoB7C,EAAI,IAACiD,GAEvBhC,GAAcA,GAAc,CAAA,EAAI6B,CAAW,EAAG,CAAA,EAAI,CAClD,IAAKC,EACL,iBAAkBG,EAAG,YAAaZ,CAAgB,EAKlD,mBAAoBI,EACpB,aAAcC,EACd,YAAaC,CACd,CAAA,CAAC,CACJ,CAAC,EACD3C,GAAO,YAAc,SClDrB,IAAIQ,GAAY,CAAC,QAAS,cAAc,EACxC,SAASE,GAAQC,EAAQC,EAAgB,CAAE,IAAIC,EAAO,OAAO,KAAKF,CAAM,EAAG,GAAI,OAAO,sBAAuB,CAAE,IAAIG,EAAU,OAAO,sBAAsBH,CAAM,EAAGC,IAAmBE,EAAUA,EAAQ,OAAO,SAAUC,EAAK,CAAE,OAAO,OAAO,yBAAyBJ,EAAQI,CAAG,EAAE,UAAW,CAAE,GAAIF,EAAK,KAAK,MAAMA,EAAMC,CAAO,CAAE,CAAG,OAAOD,CAAO,CACrV,SAASG,EAAcC,EAAQ,CAAE,QAASC,EAAI,EAAGA,EAAI,UAAU,OAAQA,IAAK,CAAE,IAAIC,EAAiB,UAAUD,CAAC,GAAnB,KAAuB,UAAUA,CAAC,EAAI,CAAE,EAAEA,EAAI,EAAIR,GAAQ,OAAOS,CAAM,EAAG,EAAE,EAAE,QAAQ,SAAUrB,EAAK,CAAEsB,GAAgBH,EAAQnB,EAAKqB,EAAOrB,CAAG,CAAC,CAAI,CAAA,EAAI,OAAO,0BAA4B,OAAO,iBAAiBmB,EAAQ,OAAO,0BAA0BE,CAAM,CAAC,EAAIT,GAAQ,OAAOS,CAAM,CAAC,EAAE,QAAQ,SAAUrB,EAAK,CAAE,OAAO,eAAemB,EAAQnB,EAAK,OAAO,yBAAyBqB,EAAQrB,CAAG,CAAC,CAAE,CAAE,CAAI,CAAC,OAAOmB,CAAS,CAC1f,SAASG,GAAgBC,EAAKvB,EAAKwB,EAAO,CAAE,OAAAxB,EAAMyB,GAAezB,CAAG,EAAOA,KAAOuB,EAAO,OAAO,eAAeA,EAAKvB,EAAK,CAAE,MAAOwB,EAAO,WAAY,GAAM,aAAc,GAAM,SAAU,EAAM,CAAA,EAAYD,EAAIvB,CAAG,EAAIwB,EAAgBD,CAAM,CAC5O,SAASE,GAAeC,EAAK,CAAE,IAAI1B,EAAM2B,GAAaD,EAAK,QAAQ,EAAG,OAAO,OAAO1B,GAAQ,SAAWA,EAAM,OAAOA,CAAG,CAAI,CAC3H,SAAS2B,GAAaC,EAAOC,EAAM,CAAE,GAAI,OAAOD,GAAU,UAAYA,IAAU,KAAM,OAAOA,EAAO,IAAIE,EAAOF,EAAM,OAAO,WAAW,EAAG,GAAIE,IAAS,OAAW,CAAE,IAAIC,EAAMD,EAAK,KAAKF,EAAOC,GAAQ,SAAS,EAAG,GAAI,OAAOE,GAAQ,SAAU,OAAOA,EAAK,MAAM,IAAI,UAAU,8CAA8C,CAAI,CAAC,OAAQF,IAAS,SAAW,OAAS,QAAQD,CAAK,CAAI,CACzX,SAASI,GAAyBX,EAAQY,EAAU,CAAE,GAAIZ,GAAU,KAAM,MAAO,GAAI,IAAIF,EAASe,GAA8Bb,EAAQY,CAAQ,EAAOjC,EAAK,EAAG,GAAI,OAAO,sBAAuB,CAAE,IAAImC,EAAmB,OAAO,sBAAsBd,CAAM,EAAG,IAAK,EAAI,EAAG,EAAIc,EAAiB,OAAQ,IAAOnC,EAAMmC,EAAiB,CAAC,EAAO,EAAAF,EAAS,QAAQjC,CAAG,GAAK,IAAkB,OAAO,UAAU,qBAAqB,KAAKqB,EAAQrB,CAAG,IAAamB,EAAOnB,CAAG,EAAIqB,EAAOrB,CAAG,EAAI,CAAG,OAAOmB,CAAS,CAC5e,SAASe,GAA8Bb,EAAQY,EAAU,CAAE,GAAIZ,GAAU,KAAM,MAAO,CAAE,EAAE,IAAIF,EAAS,CAAE,EAAMiB,EAAa,OAAO,KAAKf,CAAM,EAAOrB,EAAKoB,EAAG,IAAKA,EAAI,EAAGA,EAAIgB,EAAW,OAAQhB,IAAOpB,EAAMoC,EAAWhB,CAAC,EAAO,EAAAa,EAAS,QAAQjC,CAAG,GAAK,KAAamB,EAAOnB,CAAG,EAAIqB,EAAOrB,CAAG,GAAK,OAAOmB,CAAS,CAgBzS,IAACiC,GAAuBC,EAAU,WAAC,CAACb,EAAOc,IAAiB,CACpE,GAAI,CACA,MAAAC,EACA,aAAAC,CACN,EAAQhB,EACJiB,EAAOzB,GAAyBQ,EAAO9B,EAAS,EAC9CF,EAAQkD,EAAO,QAAC,IAAMxC,EAAcA,EAAc,GAAIsC,CAAY,EAAG,GAAI,CAC3E,MAAOG,GAAgBJ,CAAK,CAC7B,CAAA,EAAG,CAACA,EAAOC,CAAY,CAAC,EACzB,OAAoBvD,EAAAA,IAAK2D,GAAiB1C,EAAcA,EAAc,GAAIuC,CAAI,EAAG,GAAI,CACnF,IAAKH,EACL,aAAc9C,CACf,CAAA,CAAC,CACJ,CAAC,EACD4C,GAAQ,YAAc,UCrCtB,SAASxC,GAAQC,EAAQC,EAAgB,CAAE,IAAIC,EAAO,OAAO,KAAKF,CAAM,EAAG,GAAI,OAAO,sBAAuB,CAAE,IAAIG,EAAU,OAAO,sBAAsBH,CAAM,EAAGC,IAAmBE,EAAUA,EAAQ,OAAO,SAAUC,EAAK,CAAE,OAAO,OAAO,yBAAyBJ,EAAQI,CAAG,EAAE,UAAW,CAAE,GAAIF,EAAK,KAAK,MAAMA,EAAMC,CAAO,CAAE,CAAG,OAAOD,CAAO,CACrV,SAASG,GAAcC,EAAQ,CAAE,QAASC,EAAI,EAAGA,EAAI,UAAU,OAAQA,IAAK,CAAE,IAAIC,EAAiB,UAAUD,CAAC,GAAnB,KAAuB,UAAUA,CAAC,EAAI,CAAE,EAAEA,EAAI,EAAIR,GAAQ,OAAOS,CAAM,EAAG,EAAE,EAAE,QAAQ,SAAUrB,EAAK,CAAEsB,EAAgBH,EAAQnB,EAAKqB,EAAOrB,CAAG,CAAC,CAAI,CAAA,EAAI,OAAO,0BAA4B,OAAO,iBAAiBmB,EAAQ,OAAO,0BAA0BE,CAAM,CAAC,EAAIT,GAAQ,OAAOS,CAAM,CAAC,EAAE,QAAQ,SAAUrB,EAAK,CAAE,OAAO,eAAemB,EAAQnB,EAAK,OAAO,yBAAyBqB,EAAQrB,CAAG,CAAC,CAAE,CAAE,CAAI,CAAC,OAAOmB,CAAS,CAC1f,SAASG,EAAgBC,EAAKvB,EAAKwB,EAAO,CAAE,OAAAxB,EAAMyB,GAAezB,CAAG,EAAOA,KAAOuB,EAAO,OAAO,eAAeA,EAAKvB,EAAK,CAAE,MAAOwB,EAAO,WAAY,GAAM,aAAc,GAAM,SAAU,EAAM,CAAA,EAAYD,EAAIvB,CAAG,EAAIwB,EAAgBD,CAAM,CAC5O,SAASE,GAAeC,EAAK,CAAE,IAAI1B,EAAM2B,GAAaD,EAAK,QAAQ,EAAG,OAAO,OAAO1B,GAAQ,SAAWA,EAAM,OAAOA,CAAG,CAAI,CAC3H,SAAS2B,GAAaC,EAAOC,EAAM,CAAE,GAAI,OAAOD,GAAU,UAAYA,IAAU,KAAM,OAAOA,EAAO,IAAIE,EAAOF,EAAM,OAAO,WAAW,EAAG,GAAIE,IAAS,OAAW,CAAE,IAAIC,EAAMD,EAAK,KAAKF,EAAOC,GAAQ,SAAS,EAAG,GAAI,OAAOE,GAAQ,SAAU,OAAOA,EAAK,MAAM,IAAI,UAAU,8CAA8C,CAAI,CAAC,OAAQF,IAAS,SAAW,OAAS,QAAQD,CAAK,CAAI,CAWzX,IAAIiC,GAAMC,EAAI,OAAO,aAAa,EAElC,MAAMC,UAAoBC,EAAAA,aAAc,CACtC,OAAO,kBAAkB,EAAG,CACtB,EAAE,UAGN,EAAE,gBAAe,EACjB,EAAE,eAAc,EACjB,CACD,YAAYxB,EAAO,CACjB,MAAMA,CAAK,EACXlB,EAAgB,KAAM,YAAa,MAAM,EACzCA,EAAgB,KAAM,WAAY,MAAM,EACxCA,EAAgB,KAAM,mBAAoB,MAAM,EAChDA,EAAgB,KAAM,eAAgB,MAAM,EAC5CA,EAAgB,KAAM,MAAO,MAAM,EACnCA,EAAgB,KAAM,kBAAmB,MAAM,EAC/C,KAAK,WAAa,KAAK,WAAW,KAAK,IAAI,EAC3C,KAAK,mBAAqB,KAAK,mBAAmB,KAAK,IAAI,EAC3D,KAAK,cAAgB,KAAK,cAAc,KAAK,IAAI,EACjD,KAAK,oBAAsB,KAAK,oBAAoB,KAAK,IAAI,EAC7D,KAAK,0BAA4B,KAAK,0BAA0B,KAAK,IAAI,EACzE,KAAK,wBAA0B,KAAK,wBAAwB,KAAK,IAAI,EACrE,KAAK,iBAAmB,KAAK,iBAAiB,KAAK,IAAI,EACvD,KAAK,mBAAqB,KAAK,mBAAmB,KAAK,IAAI,EAC3D,KAAK,UAAyBe,EAAM,YACpC,KAAK,SAAW,SAAS,cACzB,KAAK,iBAAgCA,EAAM,YAC3C,KAAK,aAAe,EACpB,KAAK,IAAM,EACX,KAAK,gBAAkB,CACrB,IAAKG,EAAM,IACX,KAAMA,EAAM,IAClB,EACI,KAAK,MAAQ,CACX,UAAW,CAAE,EACb,aAAc,CAAE,EAChB,cAAe,KACf,YAAa,GACb,WAAY,KACZ,YAAa,KACb,mBAAoB,EACpB,oBAAqB,EACrB,cAAe,GACf,WAAY,EAClB,CACG,CACD,mBAAoB,CAClB,KAAK,SAAQ,EACb,KAAK,eAAc,EACnB,OAAO,iBAAiB,SAAU,KAAK,kBAAkB,EAMzD,KAAK,IAAM,OAAO,sBAAsB,IAAM,CAC5C,IAAIyB,GACHA,EAAwB,KAAK,UAAU,WAAa,MAAQA,IAA0B,QAAkBA,EAAsB,MAAK,EACpI,GAAI,CACF,aAAAC,CACR,EAAU,KAAK,MACTA,EAAa,IAAI,CACvB,CAAK,CACF,CACD,mBAAmBC,EAAWC,EAAW,CACvC,GAAI,CACF,QAAAC,CACN,EAAQ,KAAK,MACL,CACF,cAAAC,CACN,EAAQ,KAAK,MACT,GAAIA,IAAkBF,EAAU,cAC9B,GAAIE,GAAiB,KAAM,CACzB,IAAIC,GAEHA,EAAyB,KAAK,UAAU,WAAa,MAAQA,IAA2B,QAAkBA,EAAuB,MAAK,CAC/I,MAEQ,KAAK,yBAAwB,EAGjC,GAAIJ,EAAU,UAAYE,IACxB,KAAK,SAAQ,EACT,KAAK,UAAU,SAAW,MAAQ,CAAC,KAAK,UAAU,QAAQ,SAAS,SAAS,aAAa,GAAG,CAC9F,IAAIG,GACHA,EAAyB,KAAK,UAAU,WAAa,MAAQA,IAA2B,QAAkBA,EAAuB,MAAK,CACxI,CAEH,KAAK,eAAc,CACpB,CACD,sBAAuB,CACrB,KAAK,eAAc,EACnB,OAAO,oBAAoB,SAAU,KAAK,kBAAkB,EAC5D,qBAAqB,KAAK,GAAG,CAC9B,CACD,kBAAmB,CACjB,GAAI,CACF,QAAAC,CACN,EAAQ,KAAK,MACT,GAAIA,EAAQ,wBAA0B,QAAaA,EAAQ,sBAAuB,CAChF,GAAI,CACF,cAAAC,CACR,EAAU,KAAK,MACT,OAAOA,CACR,CACD,OAAO,KAAK,eACb,CACD,iBAAiBC,EAAO,CACtB,GAAI,CACF,QAAAF,CACN,EAAQ,KAAK,MACLA,EAAQ,wBAA0B,QAAaA,EAAQ,sBACzD,KAAK,SAAS,CACZ,cAAeE,CACvB,CAAO,EAED,KAAK,cAAcA,CAAK,CAE3B,CACD,eAAgB,CACd,GAAI,CACF,WAAAC,CACN,EAAQ,KAAK,MACT,OAAOA,CACR,CACD,cAAcD,EAAO,CACnB,KAAK,SAAS,CACZ,WAAYA,CAClB,CAAK,CACF,CACD,UAAW,CAET,KAAK,eAAc,EACnB,qBAAqB,KAAK,GAAG,EAC7B,GAAI,CACF,QAAAF,CACN,EAAQ,KAAK,MACLC,EAAgBD,EAAQ,qBACxBC,IAAkB,SACpBA,EAAgB,IAOlB,OALI,CACF,QAAAL,CACN,EAAQ,KAAK,MACLQ,EAAYC,EAAmB,aAAaT,CAAO,EACnDU,EAAkB,CAAA,EACb3D,EAAIyD,EAAU,OAAS,EAAGzD,GAAK,EAAGA,GAAK,EAAG,CACjD,IAAI4D,EAAWH,EAAUzD,CAAC,EACtB4D,aAAoB,QACtB,KAAK,gBAAgBA,CAAQ,EAE7BD,EAAgB,KAAKC,CAAQ,CAEhC,CACD,KAAK,SAAS,CACZ,WAAY,GACZ,cAAAN,EACA,cAAe,KACf,UAAWI,EAAmB,YAAYC,CAAe,CAC/D,CAAK,CACF,CACD,gBAAgBE,EAAS,CAEvB,IAAIC,EAAqBC,EAAa,eAAeF,CAAO,EAC5D,KAAK,SAASG,IAAU,CACtB,aAAcA,EAAM,aAAa,OAAOF,CAAkB,CAC3D,EAAC,EACFA,EAAmB,KAAKG,GAAqB,CAC3C,KAAK,SAASD,GAAS,CACrB,IAAIT,EAAQS,EAAM,aAAa,QAAQF,CAAkB,EACzD,GAAIP,GAAS,EAAG,CACd,IAAIW,EAAeF,EAAM,aAAa,MAAK,EAC3C,OAAAE,EAAa,OAAOX,EAAO,CAAC,EACrB,CACL,UAAWG,EAAmB,YAAYM,EAAM,UAAU,OAAOC,CAAiB,CAAC,EACnF,aAAAC,CACZ,CACS,CAED,OAAO,IACf,CAAO,CACF,EAAEC,GAAS,CACNJ,EAAa,WAAWI,CAAK,IAKjC,KAAK,SAASH,GAAS,CACrB,IAAIT,EAAQS,EAAM,aAAa,QAAQF,CAAkB,EACzD,GAAIP,GAAS,EAAG,CACd,IAAIW,EAAeF,EAAM,aAAa,MAAK,EAC3C,OAAAE,EAAa,OAAOX,EAAO,CAAC,EACrB,CACL,aAAAW,CACZ,CACS,CACD,OAAO,IACf,CAAO,EAGDzB,GAAI,MAAM0B,CAAK,EACrB,CAAK,CACF,CACD,gBAAiB,CACf,GAAI,CACF,aAAAD,CACN,EAAQ,KAAK,MACTA,EAAa,IAAInF,GAAQA,EAAK,OAAQ,CAAA,CACvC,CAMD,0BAA2B,CACzB,GAAI,KAAK,iBAAiB,UAAY,KACtC,KAAIqF,EAAa,KAAK,iBAAiB,QAAQ,sBAAqB,EAGpE,KAAK,SAAS,CACZ,WAAYA,EAAW,IACvB,YAAaA,EAAW,MACxB,oBAAqBA,EAAW,OAChC,mBAAoBA,EAAW,KACrC,CAAK,EACF,CAUD,gBAAiB,CACf,IAAIC,EAAwBC,EAAwBC,EAAwBC,EACxE,CACF,QAAAnB,EACA,eAAAoB,EACA,mBAAAC,EACA,oBAAAC,EACA,IAAKC,EACL,KAAMC,CACZ,EAAQ,KAAK,MACT,GAAI,GAAC,KAAK,UAAU,SAAWxB,EAAQ,qBAAuB,MAAQA,EAAQ,qBAO9E,IAAI,CACF,IAAAyB,EACA,KAAAC,CACN,EAAQ,KAAK,gBACL,CACF,MAAAC,EACA,OAAAC,CACN,GAASZ,GAA0BC,EAAyB,KAAK,UAAU,WAAa,MAAQA,IAA2B,OAAS,OAASA,EAAuB,sBAAuB,KAAM,MAAQD,IAA2B,OAASA,EAAyB,CAChQ,MAAO,EACP,OAAQ,CACd,EACQa,IAAgBX,GAA0BC,EAAyB,KAAK,UAAU,WAAa,MAAQA,IAA2B,OAAS,OAASA,EAAuB,gBAAkB,MAAQD,IAA2B,OAASA,EAAyB,GAAK,OAAO,YAC9QU,IAAW,GAAKD,IAAU,IAM1BF,EAAMG,EAAS,OAAO,cAEpBH,EAAMG,EAASN,EAAsB,EAEvCG,GAAOG,EAASN,EAGhBG,EAAM,OAAO,YAAcG,GAG3BF,EAAOC,EAAQ,OAAO,aAExBD,EAAOA,EAAOC,EAAQN,IAEpBG,IAAYE,GAAQH,IAAWE,KAEjC,KAAK,SAAS,CACZ,YAAAI,CACR,CAAO,EACDT,EAAeK,EAAKC,CAAI,IAE3B,CAGD,oBAAqB,CACd,KAAK,UAAU,SAGpB,KAAK,UAAU,EAAI,CACpB,CACD,WAAW,EAAG,CACZ,GAAI,CAAC,KAAK,UAAU,QAAS,CAC3BtC,GAAI,KAAK,oBAAoB,EAC7B,MACD,CACD,GAAI,CAAC,KAAK,UAAU,QAAQ,SAAS,EAAE,aAAa,EAAG,CAGrD,QAFIxE,EAAU,EAAE,cACZkH,EAAqB,GAClBlH,GAAW,CAACkH,GACjBA,EAAqBlH,EAAQ,aAAa,sBAAsB,EAChEA,EAAUA,EAAQ,cAEfkH,GAEH,KAAK,UAAU,EAAI,CAEtB,CACF,CAGD,YAAYvG,EAAK,CACf,GAAI,CACF,KAAAmG,CACN,EAAQ,KAAK,MACT,OAAOnG,IAAQ,UAAYmG,EAAO,GAAKnG,IAAQ,cAAgBA,IAAQ,WACxE,CACD,cAAc,EAAG,CACf,GAAI,CACF,UAAA6E,CACN,EAAQ,KAAK,MACL2B,EAAW,KAAK,mBAChBC,EAAWD,EACXE,EAAc,GAClB,GAAI,EAAE,MAAQ,SAAW,EAAE,MAAQ,IAAK,CAClCF,GAAY,GAAKA,EAAW3B,EAAU,QACxC,KAAK,oBAAoBA,EAAU2B,CAAQ,EAAG,CAAC,EAEjD,MACD,CAcD,GAbI,EAAE,MAAQ,aACRA,GAAY,GAAKA,GAAY3B,EAAU,OACzC6B,EAAc,GAEdD,EAAW,EAEJ,KAAK,YAAY,EAAE,GAAG,EAC/BA,EAAW,KACF,EAAE,MAAQ,WAAa,EAAE,UAAY,EAAE,MAAQ,MACxDA,EAAW3B,EAAmB,gBAAgB2B,EAAU,GAAI5B,CAAS,GAC5D,EAAE,MAAQ,aAAe,EAAE,MAAQ,SAC5C4B,EAAW3B,EAAmB,gBAAgB2B,EAAU,EAAG5B,CAAS,GAElE6B,EAAa,CACf,KAAK,YAAYF,CAAQ,EACzB,EAAE,eAAc,EAChB,EAAE,gBAAe,EACjB,MACD,CACGA,IAAaC,IACXA,IAAa,KACf,KAAK,iBAAiBA,CAAQ,GAE9B,KAAK,UAAS,EACV,KAAK,oBAAoB,aAC3B,KAAK,SAAS,SAGlB,EAAE,eAAc,EAChB,EAAE,gBAAe,EAEpB,CACD,YAAY9B,EAAO,CACjB,GAAI,CACF,UAAAE,EACA,cAAAP,CACN,EAAQ,KAAK,MACLqC,EAAa9B,EAAUF,CAAK,EAAE,QAAUA,EAAQ,KAChDL,IAAkBqC,GACtB,KAAK,SAAS,CACZ,cAAeA,EACf,WAAY,KACZ,YAAa,IACnB,CAAK,CACF,CACD,WAAY,CACV,IAAIC,EAAW,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,GAC/E,CACF,UAAAC,EACA,aAAAC,CACN,EAAQ,KAAK,MACT,qBAAqB,KAAK,GAAG,EAC7B,KAAK,IAAM,OAAO,sBAAsB,IAAM,CAC5CD,EAAUD,CAAQ,EAClBE,EAAa,IAAI,CACvB,CAAK,CACF,CACD,cAAe,CACb,KAAK,SAAS,CACZ,cAAe,IACrB,CAAK,CACF,CACD,mBAAmBC,EAAe,CAC5BA,EACF,KAAK,UAAU,EAAI,EAEnB,KAAK,aAAY,CAEpB,CACD,oBAAoB/B,EAAUgC,EAAG,CAC/BA,EAAE,eAAc,EAChBA,EAAE,gBAAe,EACjB,GAAI,CACF,UAAAnC,CACN,EAAQ,KAAK,MACLG,GAAY,OAASA,EAAS,WAAa,QAAa,CAACA,EAAS,YAChEA,EAAS,SAAW,KACtB,KAAK,YAAYH,EAAU,QAAQG,CAAQ,CAAC,EACnCA,EAAS,QAAU,OAC5BA,EAAS,OAAOgC,EAAE,WAAW,EAC7B,KAAK,UAAU,EAAI,GAGxB,CACD,0BAA0BhC,EAAUgC,EAAG,CACjCA,EAAE,SAGN,KAAK,oBAAoBhC,EAAUgC,CAAC,CACrC,CACD,wBAAwBhC,EAAU,CAChC,GAAI,CACF,UAAAH,CACN,EAAQ,KAAK,MACLoC,EAAapC,EAAU,QAAQG,CAAQ,EAC3C,KAAK,cAAciC,CAAU,EACzBA,GAAc,GAAKA,EAAapC,EAAU,SAAWG,EAAS,WAAa,QAAa,CAACA,EAAS,WACpG,KAAK,YAAYiC,CAAU,CAE9B,CACD,kBAAmB,CACjB,KAAK,cAAc,EAAE,CACtB,CACD,QAAS,CAkBP,QAjBIC,EAAmB,CAAA,EACnB,CACF,IAAAhB,EACA,KAAAC,CACN,EAAQ,KAAK,MACL,CACF,cAAA7B,EACA,YAAAgC,EACA,cAAA5B,EACA,UAAAG,EACA,WAAAD,EACA,aAAAU,EACA,WAAA6B,EACA,YAAAC,EACA,mBAAAtB,EACA,oBAAAC,CACN,EAAQ,KAAK,MACA3E,EAAI,EAAGA,EAAIyD,EAAU,OAAQzD,GAAK,EAAG,CAC5C,IAAI4D,EAAWH,EAAUzD,CAAC,EACtBA,EAAI,GAAK4D,EAAS,QAAUH,EAAUzD,EAAI,CAAC,EAAE,OAC/C8F,EAAiB,KAAmBjH,MAAK,KAAM,CAAE,EAAE,GAAG,OAAOmB,EAAG,YAAY,CAAC,CAAC,EAEhF,IAAIiG,EAA+BpH,EAAI,IAACqH,GAAiB,CACvD,IAAKhD,IAAkBlD,EAAI,KAAK,iBAAmB,KACnD,mBAAoBsD,IAAkBtD,EACtC,gBAAiBwD,IAAexD,EAChC,SAAU4D,EACV,UAAW,KAAK,mBAChB,gBAAiB,KAAK,oBACtB,oBAAqB,KAAK,wBAC1B,sBAAuB,KAAK,yBAC7B,EAAE5D,CAAC,EACJ8F,EAAiB,KAAKG,CAAe,CACtC,CACD,IAAIE,EAAiB,KACjBjC,EAAa,OAAS,IACxBiC,EAA8BtH,EAAI,IAAC,MAAO,CACxC,UAAW,UACX,SAAuBA,EAAI,IAACuH,GAAgB,CAC1C,UAAW,gCACrB,CAAS,CACT,CAAO,GAEH,GAAI,CACF,UAAAC,EACA,cAAeC,CACrB,EAAQ,KAAK,MAGLC,EAAcrD,IAAkB,MAAQ6C,IAAe,MAAQC,IAAgB,KACnF,OAAoBQ,EAAAA,KAAMC,EAAAA,SAAW,CACnC,SAAU,CAAcD,EAAK,KAAC,MAAO,CACnC,UAAWnH,EAAW,CACpB,eAAgB6F,CACjB,EAAE,wBAAwB,EAC3B,MAAOpF,GAAc,CACnB,IAAAgF,EACA,KAAAC,CACD,EAAEsB,CAAS,EACZ,IAAK,KAAK,UACV,uBAAwB,GACxB,OAAQ,KAAK,WACb,UAAW,KAAK,cAChB,aAAc,KAAK,iBACnB,cAAe1D,EAAY,kBAC3B,KAAM,WACN,SAAU,EACV,cAAe2D,EACf,SAAU,CAACR,EAAkBK,CAAc,CACnD,CAAO,EAAGI,GAAerD,IAAkB,MAAQ6C,IAAe,MAAQC,IAAgB,MAAqBnH,EAAI,IAAC8D,EAAa,CACzH,QAASc,EAAUP,CAAa,EAAE,SAAW,CAAE,EAC/C,UAAW,KAAK,mBAChB,IAAK6C,EACL,KAAMC,EACN,eAAgB,CAACU,EAAaC,IAAiB,CAC7C,KAAK,SAAS,CACZ,WAAYD,EACZ,YAAaC,CACzB,CAAW,CACF,EACD,mBAAoBjC,EACpB,oBAAqBC,CACtB,EAAE,OAAO,OAAOzB,CAAa,CAAC,CAAC,CACtC,CAAK,CACF,CACH,CACAhD,EAAgByC,EAAa,eAAgB,CAC3C,mBAAoB,EACpB,oBAAqB,EACrB,WAAY,CAEX,EACD,cAAe,CAEd,EACD,cAAe,CAEd,EACD,QAAS,CAAE,EACX,UAAW,CAAE,EACb,cAAe,MACjB,CAAC,ECjjBD,SAASzC,GAAgBC,EAAKvB,EAAKwB,EAAO,CAAE,OAAAxB,EAAMyB,GAAezB,CAAG,EAAOA,KAAOuB,EAAO,OAAO,eAAeA,EAAKvB,EAAK,CAAE,MAAOwB,EAAO,WAAY,GAAM,aAAc,GAAM,SAAU,EAAM,CAAA,EAAYD,EAAIvB,CAAG,EAAIwB,EAAgBD,CAAM,CAC5O,SAASE,GAAeC,EAAK,CAAE,IAAI1B,EAAM2B,GAAaD,EAAK,QAAQ,EAAG,OAAO,OAAO1B,GAAQ,SAAWA,EAAM,OAAOA,CAAG,CAAI,CAC3H,SAAS2B,GAAaC,EAAOC,EAAM,CAAE,GAAI,OAAOD,GAAU,UAAYA,IAAU,KAAM,OAAOA,EAAO,IAAIE,EAAOF,EAAM,OAAO,WAAW,EAAG,GAAIE,IAAS,OAAW,CAAE,IAAIC,EAAMD,EAAK,KAAKF,EAAOC,GAAQ,SAAS,EAAG,GAAI,OAAOE,GAAQ,SAAU,OAAOA,EAAK,MAAM,IAAI,UAAU,8CAA8C,CAAI,CAAC,OAAQF,IAAS,SAAW,OAAS,QAAQD,CAAK,CAAI,CASzX,MAAMoG,WAAwBC,EAAAA,SAAU,CACtC,YAAYzF,EAAO,CACjB,MAAMA,CAAK,EACXlB,GAAgB,KAAM,YAAa,MAAM,EACzCA,GAAgB,KAAM,WAAY,MAAM,EACxC,KAAK,gBAAkB,KAAK,gBAAgB,KAAK,IAAI,EACrD,KAAK,kBAAoB,KAAK,kBAAkB,KAAK,IAAI,EACzD,KAAK,UAAyBe,EAAM,YACpC,KAAK,SAAwBA,EAAM,YACnC,KAAK,MAAQ,CACX,QAAS,KACT,KAAM,EACN,IAAK,CACX,CACG,CACD,mBAAoB,CAClB,IAAI4B,GACCA,EAAwB,KAAK,UAAU,WAAa,MAAQA,IAA0B,QAAUA,EAAsB,eACzH,KAAK,UAAU,QAAQ,cAAc,iBAAiB,cAAe,KAAK,iBAAiB,CAE9F,CACD,sBAAuB,CACrB,IAAIM,GACCA,EAAyB,KAAK,UAAU,WAAa,MAAQA,IAA2B,QAAUA,EAAuB,eAC5H,KAAK,UAAU,QAAQ,cAAc,oBAAoB,cAAe,KAAK,iBAAiB,CAEjG,CACD,kBAAkB,EAAG,CACnB,GAAK,KAAK,UAAU,QAGpB,KAAIiB,EAAa,KAAK,UAAU,QAAQ,sBAAqB,EACzDU,EAAM,EAAE,QAAUV,EAAW,IAC7BW,EAAO,EAAE,QAAUX,EAAW,KAC9B,CACF,QAAAnB,CACN,EAAQ,KAAK,MAKT,GAAIA,GAAW,MAAQ,EAAE,SAAW,KAAK,UAAU,QAAS,CAG1D,EAAE,eAAc,EAMhB,KAAK,SAAS,CACZ,QAAS,IACjB,EAAS,IAAM,CACP,IAAIhF,EAAU,SAAS,iBAAiB8G,EAAMD,CAAG,EAE7CgC,EAAa,IAAI,WAAW,cAAe,CAC7C,QAAS,EAAE,QACX,QAAS,EAAE,QACX,QAAS,GACT,WAAY,EACtB,CAAS,EACD7I,GAAY,MAAsCA,EAAQ,cAAc6I,CAAU,CAC1F,CAAO,EACD,MACD,CACD,GAAKpD,EAAmB,qBAAqB,CAAC,GAI1C,IAAE,SAAW,EAAE,SAInB,KAAIqD,EAAiBrD,EAAmB,aAAa,EAAE,cAAc,EACjEqD,EAAe,SAAW,IAM9B,EAAE,eAAc,EAChB,KAAK,SAAS,CACZ,QAASA,EACT,IAAAjC,EACA,KAAAC,CACN,CAAK,IACF,CACD,gBAAgBiC,EAAM,CAChBA,IAAS,KAAK,SAAS,SACzB,KAAK,SAAS,CACZ,QAAS,IACjB,CAAO,CAEJ,CACD,QAAS,CACP,IAAIA,EAAO,KACP,CACF,cAAeV,CACrB,EAAQ,KAAK,MACL,CACF,QAAArD,EACA,IAAA6B,EACA,KAAAC,CACN,EAAQ,KAAK,MACT,OAAI9B,IACF+D,EAAoBnI,EAAI,IAAC8D,EAAa,CACpC,IAAK,KAAK,SACV,QAASM,EACT,aAAc,KAAK,gBACnB,IAAK6B,EACL,KAAMC,EACN,eAAgB,CAAC2B,EAAaC,IAAiB,CAC7C,KAAK,SAAS,CACZ,IAAKD,EACL,KAAMC,CAClB,CAAW,CACF,EACD,cAAeL,CACvB,CAAO,GAEiBzH,EAAAA,IAAK,MAAO,CAC9B,UAAWQ,EAAW,oBAAqB,CACzC,OAAQ4D,CAChB,CAAO,EACD,IAAK,KAAK,UACV,SAAU+D,CAChB,CAAK,CACF,CACH,CACA,MAAAC,GAAeL,GC5If,SAAS1G,GAAgBC,EAAKvB,EAAKwB,EAAO,CAAE,OAAAxB,EAAMyB,GAAezB,CAAG,EAAOA,KAAOuB,EAAO,OAAO,eAAeA,EAAKvB,EAAK,CAAE,MAAOwB,EAAO,WAAY,GAAM,aAAc,GAAM,SAAU,EAAM,CAAA,EAAYD,EAAIvB,CAAG,EAAIwB,EAAgBD,CAAM,CAC5O,SAASE,GAAeC,EAAK,CAAE,IAAI1B,EAAM2B,GAAaD,EAAK,QAAQ,EAAG,OAAO,OAAO1B,GAAQ,SAAWA,EAAM,OAAOA,CAAG,CAAI,CAC3H,SAAS2B,GAAaC,EAAOC,EAAM,CAAE,GAAI,OAAOD,GAAU,UAAYA,IAAU,KAAM,OAAOA,EAAO,IAAIE,EAAOF,EAAM,OAAO,WAAW,EAAG,GAAIE,IAAS,OAAW,CAAE,IAAIC,EAAMD,EAAK,KAAKF,EAAOC,GAAQ,SAAS,EAAG,GAAI,OAAOE,GAAQ,SAAU,OAAOA,EAAK,MAAM,IAAI,UAAU,8CAA8C,CAAI,CAAC,OAAQF,IAAS,SAAW,OAAS,QAAQD,CAAK,CAAI,CAOzX,MAAM0G,UAAiBL,EAAAA,SAAU,CAC/B,OAAO,YAAYM,EAAW,CAC5B,IAAIC,EAAOD,EACXC,EAAK,MAAM,OAAS,GACrB,CACD,OAAO,eAAeD,EAAW,CAC/B,IAAIC,EAAOD,EACXC,EAAK,MAAM,OAAS,GAAG,OAAOF,EAAS,UAAUE,CAAI,EAAG,IAAI,CAC7D,CACD,OAAO,cAAcD,EAAW,CAC9B,IAAIC,EAAOD,EACXC,EAAK,MAAM,OAAS,GACrB,CACD,OAAO,WAAWD,EAAW,CAC3B,IAAIC,EAAOD,EACXC,EAAK,MAAM,OAAS,GAAG,OAAOF,EAAS,UAAUE,CAAI,EAAG,IAAI,CAC7D,CACD,OAAO,UAAUA,EAAM,CACrB,IAAIC,EAAiBD,EAAK,YAAcA,EAAK,YAC7C,OAAOA,EAAK,aAAeC,CAC5B,CACD,YAAYjG,EAAO,CACjB,MAAMA,CAAK,EACX,KAAK,cAAgB,KAAK,cAAc,KAAK,IAAI,CAClD,CACD,cAAc+F,EAAW,CACvB,IAAIC,EAAOD,EACXC,EAAK,MAAM,OAAS,GACpB,GAAI,CACF,gBAAAE,CACN,EAAQ,KAAK,MACT,GAAIA,IAAoB,QAAaA,EAAiB,CACpD,IAAI9G,EAAQ4G,EAAK,cAAc,yBAAyB,EACpD5G,GAAS,MACXA,EAAM,MAAK,CAEd,CACF,CACD,QAAS,CACP,GAAI,CACF,SAAU+G,EACV,UAAApI,EACA,GAAIqI,EACJ,cAAelB,CACrB,EAAQ,KAAK,MACT,OAAoBzH,EAAAA,IAAK4I,GAAe,CACtC,GAAID,EACJ,WAAY,CACV,YAAa,aACb,UAAW,gBACX,WAAY,aACZ,SAAU,UACX,EACD,QAASN,EAAS,YAClB,WAAYA,EAAS,eACrB,UAAW,KAAK,cAChB,OAAQA,EAAS,WACjB,UAAWA,EAAS,cACpB,QAAS,IACT,SAAUlD,GAAsBnF,EAAI,IAAC,MAAO,CAC1C,UAAWQ,EAAW,CACpB,SAAU2E,IAAU,QACrB,EAAE7E,CAAS,EACZ,cAAemH,EACf,SAAUiB,CAClB,CAAO,CACP,CAAK,CACF,CACH,CACArH,GAAgBgH,EAAU,YAAa,CACrC,UAAWQ,EAAU,OACrB,GAAIA,EAAU,KAAK,WACnB,SAAUA,EAAU,KAAK,WACzB,gBAAiBA,EAAU,KAC3B,cAAeA,EAAU,MAC3B,CAAC,EACDxH,GAAgBgH,EAAU,eAAgB,CACxC,UAAW,GACX,gBAAiB,GACjB,cAAe,MACjB,CAAC,EACD,MAAAS,GAAeT,EC1Ff,SAAS1H,GAAQC,EAAQC,EAAgB,CAAE,IAAIC,EAAO,OAAO,KAAKF,CAAM,EAAG,GAAI,OAAO,sBAAuB,CAAE,IAAIG,EAAU,OAAO,sBAAsBH,CAAM,EAAGC,IAAmBE,EAAUA,EAAQ,OAAO,SAAUC,EAAK,CAAE,OAAO,OAAO,yBAAyBJ,EAAQI,CAAG,EAAE,UAAW,CAAE,GAAIF,EAAK,KAAK,MAAMA,EAAMC,CAAO,CAAE,CAAG,OAAOD,CAAO,CACrV,SAASG,GAAcC,EAAQ,CAAE,QAASC,EAAI,EAAGA,EAAI,UAAU,OAAQA,IAAK,CAAE,IAAIC,EAAiB,UAAUD,CAAC,GAAnB,KAAuB,UAAUA,CAAC,EAAI,CAAE,EAAEA,EAAI,EAAIR,GAAQ,OAAOS,CAAM,EAAG,EAAE,EAAE,QAAQ,SAAUrB,EAAK,CAAEsB,GAAgBH,EAAQnB,EAAKqB,EAAOrB,CAAG,CAAC,CAAI,CAAA,EAAI,OAAO,0BAA4B,OAAO,iBAAiBmB,EAAQ,OAAO,0BAA0BE,CAAM,CAAC,EAAIT,GAAQ,OAAOS,CAAM,CAAC,EAAE,QAAQ,SAAUrB,EAAK,CAAE,OAAO,eAAemB,EAAQnB,EAAK,OAAO,yBAAyBqB,EAAQrB,CAAG,CAAC,CAAE,CAAE,CAAI,CAAC,OAAOmB,CAAS,CAC1f,SAASG,GAAgBC,EAAKvB,EAAKwB,EAAO,CAAE,OAAAxB,EAAMyB,GAAezB,CAAG,EAAOA,KAAOuB,EAAO,OAAO,eAAeA,EAAKvB,EAAK,CAAE,MAAOwB,EAAO,WAAY,GAAM,aAAc,GAAM,SAAU,EAAM,CAAA,EAAYD,EAAIvB,CAAG,EAAIwB,EAAgBD,CAAM,CAC5O,SAASE,GAAeC,EAAK,CAAE,IAAI1B,EAAM2B,GAAaD,EAAK,QAAQ,EAAG,OAAO,OAAO1B,GAAQ,SAAWA,EAAM,OAAOA,CAAG,CAAI,CAC3H,SAAS2B,GAAaC,EAAOC,EAAM,CAAE,GAAI,OAAOD,GAAU,UAAYA,IAAU,KAAM,OAAOA,EAAO,IAAIE,EAAOF,EAAM,OAAO,WAAW,EAAG,GAAIE,IAAS,OAAW,CAAE,IAAIC,EAAMD,EAAK,KAAKF,EAAOC,GAAQ,SAAS,EAAG,GAAI,OAAOE,GAAQ,SAAU,OAAOA,EAAK,MAAM,IAAI,UAAU,8CAA8C,CAAI,CAAC,OAAQF,IAAS,SAAW,OAAS,QAAQD,CAAK,CAAI,CAUzX,IAAIoH,GAAsBC,EAAI,KAAC3I,GAAQ,CACrC,GAAI,CACF,IAAA4I,EACA,QAAAC,EACA,SAAAC,EACA,SAAAC,EACA,UAAAC,EACA,MAAA3E,EACA,YAAA4E,EACA,eAAApB,CACD,EAAG7H,EACA,CACF,IAAAN,EACA,WAAAwJ,EAAaL,GAAW,KACxB,MAAAM,EACA,KAAAC,CACD,EAAGR,EACAS,EACJ,OAAID,GAAQ,OACVC,EAAwBtH,EAAM,eAAeqH,CAAI,EAAIA,EAAoBzJ,EAAI,IAAC2J,GAAiB,CAC7F,KAAMF,CACZ,CAAK,GAEiBzJ,EAAAA,IAAK4J,GAAW,CAClC,YAAa7J,EACb,MAAO2E,EACP,eAAgB,CAAC4E,EACjB,SAAU,CAACO,EAAUC,IAA0BnC,EAAAA,KAAM,MAAO,CAC1D,UAAW,uBACX,IAAKyB,EAAWC,EAAY,KAC5B,SAAU,CAAc1B,EAAAA,KAAM,MAAO1G,GAAcA,GAAcA,GAAc,CAC7E,IAAK4I,EAAS,QAEtB,EAASA,EAAS,cAAc,EAAGA,EAAS,eAAe,EAAG,CAAA,EAAI,CAC1D,UAAWrJ,EAAW,2BAA4B,CAChD,OAAQ4I,CAClB,EAAW,CACD,SAAUU,EAAS,UAC7B,CAAS,EACD,cAAe,eAAe,OAAON,CAAK,EAC1C,KAAM,MACN,SAAU,EACV,WAAYzC,GAAK,CAEXwC,GAAcxC,EAAE,SAAW,GAAKA,EAAE,UAAY,IAChDmC,GAAY,MAAsCA,EAAQnJ,CAAG,EAEhE,EACD,QAASgH,GAAK,CAEZ,GAAIwC,GAAcxC,EAAE,SAAW,GAAKA,EAAE,UAAY,EAAG,CACnDmC,GAAY,MAAsCA,EAAQnJ,CAAG,EAC7D,MACD,CAEGgH,EAAE,SAAW,GAAKA,EAAE,UAAY,IAGlCA,EAAE,OAAO,QACToC,EAASpJ,CAAG,EAEf,EACD,WAAYgK,GAAS,CACfA,EAAM,MAAQ,SAASZ,EAASpJ,CAAG,CACxC,EACD,SAAU,CAAC2J,EAAUF,EAAOD,GAA2BvJ,EAAAA,IAAKgK,GAAQ,CAClE,KAAM,QACN,UAAW,oBACX,QAASD,GAAS,CAChBb,GAAY,MAAsCA,EAAQnJ,CAAG,EAC7DgK,EAAM,gBAAe,EACrBA,EAAM,eAAc,CACrB,EACD,KAAME,GACN,QAAS,OACnB,CAAS,CAAC,CACV,CAAO,CAAC,EAAgBjK,EAAI,IAACkK,GAAgB,CACrC,QAAShC,CACjB,CAAO,CAAC,CACR,CAAK,CACF,EAAEnI,CAAG,CACR,CAAC,EACDgJ,GAAO,YAAc,SChGrB,SAASpI,GAAQC,EAAQC,EAAgB,CAAE,IAAIC,EAAO,OAAO,KAAKF,CAAM,EAAG,GAAI,OAAO,sBAAuB,CAAE,IAAIG,EAAU,OAAO,sBAAsBH,CAAM,EAAGC,IAAmBE,EAAUA,EAAQ,OAAO,SAAUC,EAAK,CAAE,OAAO,OAAO,yBAAyBJ,EAAQI,CAAG,EAAE,UAAW,CAAE,GAAIF,EAAK,KAAK,MAAMA,EAAMC,CAAO,CAAE,CAAG,OAAOD,CAAO,CACrV,SAASG,GAAcC,EAAQ,CAAE,QAASC,EAAI,EAAGA,EAAI,UAAU,OAAQA,IAAK,CAAE,IAAIC,EAAiB,UAAUD,CAAC,GAAnB,KAAuB,UAAUA,CAAC,EAAI,CAAE,EAAEA,EAAI,EAAIR,GAAQ,OAAOS,CAAM,EAAG,EAAE,EAAE,QAAQ,SAAUrB,EAAK,CAAEsB,GAAgBH,EAAQnB,EAAKqB,EAAOrB,CAAG,CAAC,CAAI,CAAA,EAAI,OAAO,0BAA4B,OAAO,iBAAiBmB,EAAQ,OAAO,0BAA0BE,CAAM,CAAC,EAAIT,GAAQ,OAAOS,CAAM,CAAC,EAAE,QAAQ,SAAUrB,EAAK,CAAE,OAAO,eAAemB,EAAQnB,EAAK,OAAO,yBAAyBqB,EAAQrB,CAAG,CAAC,CAAE,CAAE,CAAI,CAAC,OAAOmB,CAAS,CAC1f,SAASG,GAAgBC,EAAKvB,EAAKwB,EAAO,CAAE,OAAAxB,EAAMyB,GAAezB,CAAG,EAAOA,KAAOuB,EAAO,OAAO,eAAeA,EAAKvB,EAAK,CAAE,MAAOwB,EAAO,WAAY,GAAM,aAAc,GAAM,SAAU,EAAM,CAAA,EAAYD,EAAIvB,CAAG,EAAIwB,EAAgBD,CAAM,CAC5O,SAASE,GAAeC,EAAK,CAAE,IAAI1B,EAAM2B,GAAaD,EAAK,QAAQ,EAAG,OAAO,OAAO1B,GAAQ,SAAWA,EAAM,OAAOA,CAAG,CAAI,CAC3H,SAAS2B,GAAaC,EAAOC,EAAM,CAAE,GAAI,OAAOD,GAAU,UAAYA,IAAU,KAAM,OAAOA,EAAO,IAAIE,EAAOF,EAAM,OAAO,WAAW,EAAG,GAAIE,IAAS,OAAW,CAAE,IAAIC,EAAMD,EAAK,KAAKF,EAAOC,GAAQ,SAAS,EAAG,GAAI,OAAOE,GAAQ,SAAU,OAAOA,EAAK,MAAM,IAAI,UAAU,8CAA8C,CAAI,CAAC,OAAQF,IAAS,SAAW,OAAS,QAAQD,CAAK,CAAI,CAezX,IAAIwI,GAAgB,IAGhBC,GAAc,IACdC,GAAe,KACnB,SAASC,GAAelL,EAAS,CAC/B,OAAOA,EAAQ,aAAe,CAChC,CACA,SAASmL,GAAgBnL,EAAS,CAChC,OAAOA,EAAQ,WAAaA,EAAQ,cAAgBA,EAAQ,aAAeA,EAAQ,cAAgB,CACrG,CACA,SAASoL,GAAuBvB,EAAKwB,EAAMvB,EAAS,CAClD,GAAI,CACF,WAAAK,EAAa,GACb,IAAAxJ,CACD,EAAGkJ,EACAf,EAAiB,CAAA,EACrB,GAAIqB,GAAcL,GAAW,KAAM,CACjChB,EAAe,KAAK,CAClB,MAAO,QACP,MAAO,GACP,MAAO,GACP,OAAQ,IAAM,CACZgB,EAAQnJ,CAAG,CACZ,CACP,CAAK,EAED,QADI2K,EAAW,GACNvJ,EAAIsJ,EAAK,OAAS,EAAGtJ,EAAI,GAC5BsJ,EAAKtJ,CAAC,EAAE,MAAQ8H,EAAI,IADW9H,GAAK,EAExC,GAAIsJ,EAAKtJ,CAAC,EAAE,aAAe,GAAM,CAC/BuJ,EAAW,GACX,KACD,CAEHxC,EAAe,KAAK,CAClB,MAAO,qBACP,MAAO,GACP,MAAO,GACP,OAAQ,IAAM,CACZ,QAASyC,EAAKF,EAAK,OAAS,EAAGE,EAAK,GAC9BF,EAAKE,CAAE,EAAE,MAAQ5K,EADgB4K,GAAM,EAEvCF,EAAKE,CAAE,EAAE,aAAe,IAAMzB,EAAQuB,EAAKE,CAAE,EAAE,GAAG,CAEzD,EACD,SAAAD,CACN,CAAK,EACDxC,EAAe,KAAK,CAClB,MAAO,YACP,MAAO,GACP,MAAO,GACP,OAAQ,IAAM,CACZuC,EAAK,QAAQG,GAAK,CACZA,EAAE,aAAe,IAAM1B,EAAQ0B,EAAE,GAAG,CAClD,CAAS,CACF,CACP,CAAK,CACF,CACD,OAAO1C,CACT,CACA,SAAS2C,GAAWxK,EAAM,CACxB,GAAI,CACF,UAAAyK,EACA,KAAAL,EACA,SAAAtB,EACA,UAAA4B,EACA,QAAA7B,EACA,mBAAA8B,CACD,EAAG3K,EACA4K,EAAeC,EAAAA,SACf,CAACC,EAAeC,CAAgB,EAAIC,EAAQ,SAAC,EAAI,EACjD,CAACC,EAAmBC,CAAoB,EAAIF,EAAQ,SAAC,EAAI,EACzD,CAACG,EAAoBC,CAAqB,EAAIJ,EAAQ,SAAC,EAAI,EAC3DK,EAAe5L,EAAAA,YAAY,IAAM,CAC/BmL,EAAa,SAAW,OAGxBA,EAAa,QAAQ,YAAcA,EAAa,QAAQ,aAAeR,EAAK,OAAS,EACvFW,EAAiB,EAAI,EAErBA,EAAiB,EAAK,EAExBG,EAAqBjB,GAAeW,EAAa,OAAO,CAAC,EACzDQ,EAAsBlB,GAAgBU,EAAa,OAAO,CAAC,EAC/D,EAAK,CAACR,CAAI,CAAC,EACTtL,GAAkB8L,EAAa,QAASS,CAAY,EACpD,IAAIC,EAAY7L,EAAW,YAAC8L,GAAU,CACpCC,GAAU,aAAY,EAGjBD,EAAO,cAGZb,GAAc,MAAwCA,EAAUa,EAAO,OAAO,MAAOA,EAAO,YAAY,KAAK,EACjH,EAAK,CAACb,CAAS,CAAC,EACVe,EAAehM,EAAAA,YAAY,IAAM,CACnC,GAAImL,EAAa,SAAW,KAG5B,KAAIc,EAA0BzB,GAAeW,EAAa,OAAO,EAC7Dc,IAA4BT,GAC9BC,EAAqBQ,CAAuB,EAE9C,IAAIC,EAA2BzB,GAAgBU,EAAa,OAAO,EAC/De,IAA6BR,GAC/BC,EAAsBO,CAAwB,EAEpD,EAAK,CAACV,EAAmBE,CAAkB,CAAC,EACtCS,EAAsBf,EAAAA,OAAO,CAC/B,YAAa,EACjB,CAAG,EACGgB,EAAkBpM,EAAAA,YAAY,IAAM,CACtC,GAAI,EAAAmL,EAAa,SAAW,MAAQgB,EAAoB,QAAQ,aAMhE,OAHI,CACF,SAAAE,CACN,EAAQlB,EAAa,QACR9J,EAAIgL,EAAS,OAAS,EAAGhL,GAAK,EAAGA,GAAK,EAAG,CAChD,IAAIiL,EAAQD,EAAShL,CAAC,EAEtB,GAAIiL,EAAM,WAAanB,EAAa,QAAQ,WAAa,EAAG,CAC1DmB,EAAM,eAAe,CACnB,SAAU,SACV,MAAO,UACP,OAAQ,OAClB,CAAS,EACD,MACD,CACF,CACF,EAAE,CAAE,CAAA,EACDC,EAAmBvM,EAAAA,YAAY,IAAM,CACvC,GAAI,EAAAmL,EAAa,SAAW,MAAQgB,EAAoB,QAAQ,aAMhE,OAHI,CACF,SAAAE,CACN,EAAQlB,EAAa,QACR9J,EAAI,EAAGA,EAAIgL,EAAS,OAAQhL,GAAK,EAAG,CAC3C,IAAIiL,EAAQD,EAAShL,CAAC,EAEtB,GAAIiL,EAAM,WAAa,EAAInB,EAAa,QAAQ,WAAaA,EAAa,QAAQ,YAAa,CAC7FmB,EAAM,eAAe,CACnB,SAAU,SACV,MAAO,UACP,OAAQ,KAClB,CAAS,EACD,MACD,CACF,CACF,EAAE,CAAE,CAAA,EAUDE,EAAoBxM,EAAAA,YAAY,SAAUyM,EAAWC,EAAQ,CAC/D,IAAIC,EAAS,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,EAC7EC,EAAgB,UAAU,OAAS,EAAI,UAAU,CAAC,EAAI,OACtDC,EAAY1B,EAAa,QACzB0B,GAAa,OAGjBV,EAAoB,QAAQ,YAAc,GACtCM,IAAc,OAEhBI,EAAU,WAAaH,EAASC,EACvBF,IAAc,UAEvBI,EAAU,WAAaH,EAASC,GAIlCR,EAAoB,QAAQ,IAAM,sBAAsBW,GAAa,CACnE,IAAIC,GAAYH,GAAqEE,EACjFE,GAAYF,EAAYC,GACxBE,GAAY3C,GAAc0C,GAAY,GAAMzC,GAAeyC,IAAa,EAC5EC,GAAY,KAAK,IAAIA,GAAWJ,EAAU,WAAW,EAGrDL,EAAkBC,EAAWC,EAAQO,GAAWF,EAAS,CAC/D,CAAK,EACF,EAAE,CAAE,CAAA,EACDG,EAAsBlN,EAAAA,YAAY,IAAM,CAC1C,GAAI,CACF,UAAAmN,EACA,IAAAC,CACN,EAAQjB,EAAoB,QACpBgB,GAAa,OACf,aAAaA,CAAS,EACtBhB,EAAoB,QAAQ,UAAY,QAEtCiB,GAAO,OACT,qBAAqBA,CAAG,EACxBjB,EAAoB,QAAQ,IAAM,QAEpC,OAAO,oBAAoB,UAAWe,CAAmB,CAC1D,EAAE,CAAE,CAAA,EACL1N,YAAU,IAAM,IAAM,OAAO,oBAAoB,UAAW0N,CAAmB,EAAG,CAACA,CAAmB,CAAC,EACvG,IAAIG,EAAkBrN,EAAW,YAACyM,GAAa,CACzCtB,EAAa,SAAW,OAC1BgB,EAAoB,QAAQ,UAAY,OAAO,WAAWK,EAAmBnC,GAAeoC,EAAWtB,EAAa,QAAQ,UAAU,GAExIgB,EAAoB,QAAQ,YAAc,GAC1C,OAAO,iBAAiB,UAAWe,CAAmB,CAC1D,EAAK,CAACA,EAAqBV,CAAiB,CAAC,EACvCc,GAAsBtN,EAAAA,YAAY,IAAM,CAC1CqN,EAAgB,MAAM,CAC1B,EAAK,CAACA,CAAe,CAAC,EAChBE,GAAuBvN,EAAAA,YAAY,IAAM,CAC3CqN,EAAgB,OAAO,CAC3B,EAAK,CAACA,CAAe,CAAC,EAMpB7N,EAAS,UAAC,UAAuB,CAC/B,IAAIgO,EACAC,EAAUxG,GAAK,CACjBA,EAAE,gBAAe,EACjBA,EAAE,eAAc,EAChB,IAAIyG,EAAMzG,EAAE,cACR0G,EAAQ,KAAK,IAAI1G,EAAE,MAAM,EAAI,KAAK,IAAIA,EAAE,MAAM,EAAIA,EAAE,OAASA,EAAE,OAGnEyG,EAAI,YAAcE,GAAMD,EAAO,IAAK,EAAE,CAC5C,EACI,OAACH,EAAwBrC,EAAa,WAAa,MAAQqC,IAA0B,QAAkBA,EAAsB,iBAAiB,QAASC,CAAO,EACvJ,IAAM,CACX,IAAII,GACHA,EAAyB1C,EAAa,WAAa,MAAQ0C,IAA2B,QAAkBA,EAAuB,oBAAoB,QAASJ,CAAO,CAC1K,CACG,EAAE,CAAE,CAAA,EACL,IAAIK,GAAsBnK,EAAAA,QAAQ,IAAM,CACtC,IAAIoK,EAAoB,IAAI,IAC5B,OAAApD,EAAK,QAAQxB,GAAO,CAClB,GAAI,CACF,IAAAlJ,CACD,EAAGkJ,EACAf,EAAiB,CAAC,IAAMsC,GAAuBvB,EAAKwB,EAAMvB,CAAO,EAAG,IAAM,CAC5E,IAAI4E,EACJ,OAAQA,EAAsB9C,GAAuB,KAAwC,OAASA,EAAmB/B,CAAG,KAAO,MAAQ6E,IAAwB,OAASA,EAAsB,EAC1M,CAAO,EACDD,EAAkB,IAAI9N,EAAKmI,CAAc,CAC/C,CAAK,EACM2F,CACR,EAAE,CAAC7C,EAAoBP,EAAMvB,CAAO,CAAC,EAClC6E,EAAe7C,SAAO,IAAI,EAC1B8C,GAAYvD,EAAK,KAAKxB,GAAOA,EAAI,MAAQ6B,CAAS,EAClDmD,GAAUxD,EAAK,IAAI,CAACxB,EAAKvE,IAAU,CACrC,GAAI,CACF,IAAA3E,CACD,EAAGkJ,EACAG,EAAWH,IAAQ+E,GACvB,OAAoBhO,EAAAA,IAAK+I,GAAQ,CAC/B,IAAKE,EACL,MAAOvE,EACP,SAAU0E,EACV,UAAW2E,EACX,SAAU5E,EACV,QAASD,EACT,YAAa6B,GAAa,KAC1B,eAAgB6C,GAAoB,IAAI7N,CAAG,CAC5C,EAAEA,CAAG,CACV,CAAG,EACDT,OAAAA,EAAS,UAET,UAAmC,CAC7ByO,EAAa,SAAW,MAC1BA,EAAa,QAAQ,eAAe,CAClC,MAAO,UACP,OAAQ,SAChB,CAAO,CAEP,EAAK,CAACjD,CAAS,CAAC,EACMnD,EAAAA,KAAM,MAAO,CAC/B,UAAW,gBACX,SAAU,CAACwD,GAA8BnL,EAAI,IAACgK,GAAQ,CACpD,KAAM,QACN,KAAmBhK,EAAI,IAAC2J,GAAiB,CACvC,KAAMuE,GACN,UAAW,QACnB,CAAO,EACD,UAAW,yCACX,QAAS,cACT,QAAShC,EACT,YAAakB,GACb,SAAU9B,CAChB,CAAK,EAAgBtL,EAAI,IAACmO,GAAiB,CACrC,YAAatC,GAAU,cACvB,UAAWF,EACX,SAAuB3L,EAAI,IAACoO,GAAW,CACrC,YAAa,2BACb,UAAW,aACX,SAAU,CAACvE,EAAUC,IAA0BnC,EAAK,KAAC,MAAO1G,GAAcA,GAAc,CACtF,IAAKoN,GAAK,CACJA,GAAK,OAGTpD,EAAa,QAAUoD,EACvBxE,EAAS,SAASwE,CAAC,EACpB,CAEX,EAAWxE,EAAS,cAAc,EAAG,GAAI,CAC/B,UAAWrJ,EAAW,eAAgB,CACpC,SAAUsJ,EAAS,oBAC/B,CAAW,EACD,KAAM,UACN,SAAUgC,EACV,SAAU,CAACmC,GAASpE,EAAS,WAAW,CAClD,CAAS,CAAC,CACV,CAAO,CACP,CAAK,EAAGsB,GAA8BnL,EAAI,IAACgK,GAAQ,CAC7C,KAAM,QACN,KAAmBhK,EAAI,IAAC2J,GAAiB,CACvC,KAAM2E,GACN,UAAW,QACnB,CAAO,EACD,UAAW,0CACX,QAAS,eACT,QAASjC,EACT,YAAagB,GACb,SAAU7B,CAChB,CAAK,CAAC,CACN,CAAG,CACH,CC1VO,SAAS+C,GAAgBC,EAAWhK,EAAS,CAClD,IAAIiK,EAAMC,KACNC,EAASlL,EAAO,QAAC,IAAM,IAAIgL,EAAI,WAAWD,EAAWhK,CAAO,EAAG,CAACiK,EAAKD,EAAWhK,CAAO,CAAC,EAC5FlF,OAAAA,EAAAA,UAAU,IAAM,IAAM,CACpBqP,EAAO,WAAU,CACrB,EAAK,CAACA,CAAM,CAAC,EACJA,CACT,CCNU,IAACC,GAA6BC,EAAa,cAAC,IAAI,EAInD,SAASC,GAAgBzO,EAAM,CACpC,GAAI,CACF,UAAAmO,EACA,QAAAhK,EACA,SAAA2H,CACD,EAAG9L,EACAsO,EAASJ,GAAgBC,EAAWhK,CAAO,EAC/C,OAAoBxE,EAAI,IAAC4O,GAAc,SAAU,CAC/C,MAAOD,EACP,SAAUxC,CACd,CAAG,CACH,CChBO,SAAS4C,IAAY,CAC1B,OAAOC,EAAkBJ,GAAe,kGAAkG,CAC5I,CCJA,SAASK,GAAmBC,EAAKC,EAASC,EAAQC,EAAOC,EAAQvP,EAAK0B,EAAK,CAAE,GAAI,CAAE,IAAI8N,EAAOL,EAAInP,CAAG,EAAE0B,CAAG,EAAOF,EAAQgO,EAAK,YAAgBjK,EAAO,CAAE8J,EAAO9J,CAAK,EAAG,MAAS,CAAKiK,EAAK,KAAQJ,EAAQ5N,CAAK,EAAY,QAAQ,QAAQA,CAAK,EAAE,KAAK8N,EAAOC,CAAM,CAAM,CACzQ,SAASE,GAAkBC,EAAI,CAAE,OAAO,UAAY,CAAE,IAAIC,EAAO,KAAMC,EAAO,UAAW,OAAO,IAAI,QAAQ,SAAUR,EAASC,EAAQ,CAAE,IAAIF,EAAMO,EAAG,MAAMC,EAAMC,CAAI,EAAG,SAASN,EAAM9N,EAAO,CAAE0N,GAAmBC,EAAKC,EAASC,EAAQC,EAAOC,EAAQ,OAAQ/N,CAAK,CAAI,CAAC,SAAS+N,EAAOM,EAAK,CAAEX,GAAmBC,EAAKC,EAASC,EAAQC,EAAOC,EAAQ,QAASM,CAAG,EAAKP,EAAM,MAAS,EAAI,CAAI,CAAG,CAIrY,IAAIzL,GAAMC,EAAI,OAAO,cAAc,EACxBgM,GAAwB,4CACxBC,GAA0B,8CAK1BC,GAAyB,yBAKzBC,GAA0B,+BAK1BC,GAA2B,gCAC/B,SAASC,GAAU5O,EAAK,CAC7B,IAAI6O,EAAU7O,EACd,OAAO6O,GAAW,MAAQ,OAAOA,EAAQ,IAAO,UAAY,OAAOA,EAAQ,SAAY,QACzF,CACO,SAASC,GAAwB9O,EAAK,CAC3C,OAAO4O,GAAU5O,CAAG,GAAKA,EAAI,UAAY0O,EAC3C,CACO,SAASK,GAAyB/O,EAAK,CAC5C,OAAO4O,GAAU5O,CAAG,GAAKA,EAAI,UAAY2O,EAC3C,CACO,SAASK,GAAWhP,EAAK,CAC9B,IAAIiP,EAAWjP,EACf,OAAOiP,GAAY,MAAQ,OAAOA,EAAS,IAAO,QACpD,CASO,SAASC,GAAYL,EAAS,CACnC,IAAIM,EAAK,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAIC,GAAM,EAC/EC,EAAU,UAAU,OAAS,EAAI,UAAU,CAAC,EAAI,OACpD,MAAO,CACL,QAAAR,EACA,GAAAM,EACA,QAAAE,CACJ,CACA,CAQO,SAASC,GAAaC,EAAWF,EAAS,CAC/C,MAAO,CACL,GAAIE,EACJ,QAAAF,CACJ,CACA,CACO,SAASG,IAAkB,CAChC,OAAI,OAAO,QAAU,KACZ,OAAO,OAEZ,OAAO,QAAU,MAAQ,OAAO,SAAW,OACtC,OAAO,OAET,IACT,CAQO,SAASC,GAAsBC,EAAI,CACxC,OAAOC,GAAuB,MAAM,KAAM,SAAS,CACrD,CACA,SAASA,IAAyB,CAChC,OAAAA,GAAyBzB,GAAkB,UAAW0B,EAAS,CAC7D,IAAIC,EAAU,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,IAC9EC,EAASN,KACb,GAAIM,GAAU,KACZ,MAAM,IAAI,MAAM,gDAAgD,EAElE,OAAO,IAAI,QAAQ,CAACjC,EAASC,IAAW,CACtC,IAAIiC,EACAZ,EAAKC,KACLY,EAAWvH,GAAS,CACtB,GAAI,CACF,KAAAwH,CACD,EAAGxH,EACJ,GAAI,CAACuG,GAAWiB,CAAI,EAAG,CACrB3N,GAAI,MAAM,kCAAmC2N,CAAI,EACjD,MACD,CAED,GADA3N,GAAI,MAAM,mBAAoB2N,CAAI,GAC7BA,GAAS,KAA0B,OAASA,EAAK,MAAQd,EAAI,CAChE7M,GAAI,MAAM,mCAAoC2N,CAAI,EAClD,MACD,CACD,OAAO,aAAaF,CAAS,EAC7B,OAAO,oBAAoB,UAAWC,CAAQ,EAC9CnC,EAAQoC,EAAK,OAAO,CAC5B,EACM,OAAO,iBAAiB,UAAWD,CAAQ,EAC3CD,EAAY,OAAO,WAAW,IAAM,CAClC,OAAO,oBAAoB,UAAWC,CAAQ,EAC9ClC,EAAO,IAAIoC,GAAa,mBAAmB,CAAC,CAC7C,EAAEL,CAAO,EACVC,EAAO,YAAYZ,GAAYU,EAAST,CAAE,EAAG,GAAG,CACtD,CAAK,CACL,CAAG,EACMQ,GAAuB,MAAM,KAAM,SAAS,CACrD,CC1HA,SAAS5P,GAAgBC,EAAKvB,EAAKwB,EAAO,CAAE,OAAAxB,EAAMyB,GAAezB,CAAG,EAAOA,KAAOuB,EAAO,OAAO,eAAeA,EAAKvB,EAAK,CAAE,MAAOwB,EAAO,WAAY,GAAM,aAAc,GAAM,SAAU,EAAM,CAAA,EAAYD,EAAIvB,CAAG,EAAIwB,EAAgBD,CAAM,CAC5O,SAASE,GAAeC,EAAK,CAAE,IAAI1B,EAAM2B,GAAaD,EAAK,QAAQ,EAAG,OAAO,OAAO1B,GAAQ,SAAWA,EAAM,OAAOA,CAAG,CAAI,CAC3H,SAAS2B,GAAaC,EAAOC,EAAM,CAAE,GAAI,OAAOD,GAAU,UAAYA,IAAU,KAAM,OAAOA,EAAO,IAAIE,EAAOF,EAAM,OAAO,WAAW,EAAG,GAAIE,IAAS,OAAW,CAAE,IAAIC,EAAMD,EAAK,KAAKF,EAAOC,GAAQ,SAAS,EAAG,GAAI,OAAOE,GAAQ,SAAU,OAAOA,EAAK,MAAM,IAAI,UAAU,8CAA8C,CAAI,CAAC,OAAQF,IAAS,SAAW,OAAS,QAAQD,CAAK,CAAI,CAClX,MAAM8P,WAAwB,KAAM,CACzC,aAAc,CACZ,MAAM,GAAG,SAAS,EAClBpQ,GAAgB,KAAM,oBAAqB,EAAI,CAChD,CACH,CACO,SAASqQ,GAAkBpM,EAAO,CACvC,OAAOA,EAAM,iBACf,CCXA,SAAS2J,GAAmBC,EAAKC,EAASC,EAAQC,EAAOC,EAAQvP,EAAK0B,EAAK,CAAE,GAAI,CAAE,IAAI8N,EAAOL,EAAInP,CAAG,EAAE0B,CAAG,EAAOF,EAAQgO,EAAK,YAAgBjK,EAAO,CAAE8J,EAAO9J,CAAK,EAAG,MAAS,CAAKiK,EAAK,KAAQJ,EAAQ5N,CAAK,EAAY,QAAQ,QAAQA,CAAK,EAAE,KAAK8N,EAAOC,CAAM,CAAM,CACzQ,SAASE,EAAkBC,EAAI,CAAE,OAAO,UAAY,CAAE,IAAIC,EAAO,KAAMC,EAAO,UAAW,OAAO,IAAI,QAAQ,SAAUR,EAASC,EAAQ,CAAE,IAAIF,EAAMO,EAAG,MAAMC,EAAMC,CAAI,EAAG,SAASN,EAAM9N,EAAO,CAAE0N,GAAmBC,EAAKC,EAASC,EAAQC,EAAOC,EAAQ,OAAQ/N,CAAK,CAAI,CAAC,SAAS+N,EAAOM,EAAK,CAAEX,GAAmBC,EAAKC,EAASC,EAAQC,EAAOC,EAAQ,QAASM,CAAG,EAAKP,EAAM,MAAS,EAAI,CAAI,CAAG,CAKrY,IAAIzL,EAAMC,EAAI,OAAO,cAAc,EAI5B,SAAS8N,GAAiBC,EAAIC,EAAc,CACjDjO,OAAAA,EAAI,KAAK,2BAA2B,OAAOiO,EAAc,MAAM,CAAC,EACzD,IAAID,EAAG,cAAcC,CAAY,CAC1C,CAMO,SAASC,GAAqBd,EAAIe,EAAKC,EAAK,CACjD,OAAOC,GAAsB,MAAM,KAAM,SAAS,CACpD,CACA,SAASA,IAAwB,CAC/B,OAAAA,GAAwBzC,EAAkB,UAAWoC,EAAIM,EAAYC,EAAS,CAC5EvO,EAAI,KAAK,0BAA0B,EACnC,IAAIwO,EAAQ,MAAMF,EAAW,kBAC7B,GAAIE,EAAM,SAAW,EACnB,MAAM,IAAIX,GAAgB,4BAA4B,EAExD7N,EAAI,KAAK,mBAAoBwO,CAAK,EAClC,IAAIC,EAAOD,EAAM,CAAC,EAClBxO,EAAI,KAAK,6BAA8ByO,CAAI,EAC3C,IAAIC,EAAU,MAAMJ,EAAW,aAAaG,CAAI,EAC5CE,EAAS,CACX,KAAAF,EACA,GAAI3B,GAAQ,CAClB,EACI9M,OAAAA,EAAI,KAAK,8BAA+B2O,CAAM,EACvC,CACL,QAAAD,EACA,OAAAC,EACA,WAAAL,EACA,QAAAC,EACA,GAAAP,CACN,CACA,CAAG,EACMK,GAAsB,MAAM,KAAM,SAAS,CACpD,CACO,SAASO,GAAiBZ,EAAIC,EAAcrN,EAAS,CAC1DZ,OAAAA,EAAI,KAAK,mBAAoBiO,CAAY,EAClC,IAAID,EAAG,WAAWC,EAAcrN,CAAO,CAChD,CACA,SAASiO,GAAiBnR,EAAK,CAC7B,OAAOA,GAAO,MAAQ,OAAOA,GAAQ,QACvC,CACA,SAASoR,IAA8B,CACrC,OAAOC,GAA6B,MAAM,KAAM,SAAS,CAC3D,CACA,SAASA,IAA+B,CACtC,OAAAA,GAA+BnD,EAAkB,WAAa,CAC5D,IAAIe,EAAW,MAAMQ,GAAsBjB,EAAuB,EAClE,GAAI,CAAC2C,GAAiBlC,CAAQ,EAC5B,MAAM,IAAI,MAAM,wCAAwC,OAAOA,CAAQ,CAAC,EAE1E,OAAOA,CACX,CAAG,EACMoC,GAA6B,MAAM,KAAM,SAAS,CAC3D,CACO,SAASC,IAAoB,CAClC,OAAOC,GAAmB,MAAM,KAAM,SAAS,CACjD,CACA,SAASA,IAAqB,CAC5B,OAAAA,GAAqBrD,EAAkB,WAAa,CAClD,IAAIsD,EAAe,IAAI,gBAAgB,OAAO,SAAS,MAAM,EAC7D,OAAQA,EAAa,IAAI,cAAc,EAAC,CACtC,IAAK,SACH,OAAOJ,GAA2B,CACrC,CACD,MAAO,EACX,CAAG,EACMG,GAAmB,MAAM,KAAM,SAAS,CACjD,CACO,SAASE,GAAmBC,EAAKC,EAAKC,EAAK,CAChD,OAAOC,GAAoB,MAAM,KAAM,SAAS,CAClD,CACA,SAASA,IAAsB,CAC7B,OAAAA,GAAsB3D,EAAkB,UAAWoC,EAAIM,EAAYkB,EAAgB,CACjF,IAAIC,EACJ,GAAI,CACFA,EAAiB,MAAMvB,GAAqBF,EAAIM,EAAYkB,CAAc,CAC3E,OAAQrM,EAAG,CAEV,GAAI,CAAC2K,GAAkB3K,CAAC,EACtB,MAAMA,CAET,CACD,OAAOsM,CACX,CAAG,EACMF,GAAoB,MAAM,KAAM,SAAS,CAClD,CCnGA,SAASxS,GAAQC,EAAQC,EAAgB,CAAE,IAAIC,EAAO,OAAO,KAAKF,CAAM,EAAG,GAAI,OAAO,sBAAuB,CAAE,IAAIG,EAAU,OAAO,sBAAsBH,CAAM,EAAGC,IAAmBE,EAAUA,EAAQ,OAAO,SAAUC,EAAK,CAAE,OAAO,OAAO,yBAAyBJ,EAAQI,CAAG,EAAE,UAAW,CAAE,GAAIF,EAAK,KAAK,MAAMA,EAAMC,CAAO,CAAE,CAAG,OAAOD,CAAO,CACrV,SAASG,GAAcC,EAAQ,CAAE,QAASC,EAAI,EAAGA,EAAI,UAAU,OAAQA,IAAK,CAAE,IAAIC,EAAiB,UAAUD,CAAC,GAAnB,KAAuB,UAAUA,CAAC,EAAI,CAAE,EAAEA,EAAI,EAAIR,GAAQ,OAAOS,CAAM,EAAG,EAAE,EAAE,QAAQ,SAAUrB,EAAK,CAAEsB,GAAgBH,EAAQnB,EAAKqB,EAAOrB,CAAG,CAAC,CAAI,CAAA,EAAI,OAAO,0BAA4B,OAAO,iBAAiBmB,EAAQ,OAAO,0BAA0BE,CAAM,CAAC,EAAIT,GAAQ,OAAOS,CAAM,CAAC,EAAE,QAAQ,SAAUrB,EAAK,CAAE,OAAO,eAAemB,EAAQnB,EAAK,OAAO,yBAAyBqB,EAAQrB,CAAG,CAAC,CAAE,CAAE,CAAI,CAAC,OAAOmB,CAAS,CAC1f,SAASG,GAAgBC,EAAKvB,EAAKwB,EAAO,CAAE,OAAAxB,EAAMyB,GAAezB,CAAG,EAAOA,KAAOuB,EAAO,OAAO,eAAeA,EAAKvB,EAAK,CAAE,MAAOwB,EAAO,WAAY,GAAM,aAAc,GAAM,SAAU,EAAM,CAAA,EAAYD,EAAIvB,CAAG,EAAIwB,EAAgBD,CAAM,CAC5O,SAASE,GAAeC,EAAK,CAAE,IAAI1B,EAAM2B,GAAaD,EAAK,QAAQ,EAAG,OAAO,OAAO1B,GAAQ,SAAWA,EAAM,OAAOA,CAAG,CAAI,CAC3H,SAAS2B,GAAaC,EAAOC,EAAM,CAAE,GAAI,OAAOD,GAAU,UAAYA,IAAU,KAAM,OAAOA,EAAO,IAAIE,EAAOF,EAAM,OAAO,WAAW,EAAG,GAAIE,IAAS,OAAW,CAAE,IAAIC,EAAMD,EAAK,KAAKF,EAAOC,GAAQ,SAAS,EAAG,GAAI,OAAOE,GAAQ,SAAU,OAAOA,EAAK,MAAM,IAAI,UAAU,8CAA8C,CAAI,CAAC,OAAQF,IAAS,SAAW,OAAS,QAAQD,CAAK,CAAI,CAazX,IAAI2R,GAAkB,IAClBC,GAAmB,IAAM,GACzBC,GAAe,OAAO,OAAO,CAAA,CAAE,EAC5B,SAASC,GAAUpT,EAAM,CAC9B,GAAI,CACF,GAAAoQ,EAAK,UACL,SAAAtE,EACA,eAAAuH,EACA,aAAAC,EACA,eAAAC,EAAiBJ,GACjB,qBAAAK,EAAuBN,GACvB,qBAAAO,EAAuBP,GACvB,oBAAAQ,EAAsBR,GACtB,kBAAAS,EAAoBC,GACpB,QAAAC,EACA,UAAAC,EACA,aAAAC,CACD,EAAG/T,EACAgU,EAAgBnJ,SAAO,IAAI,EAC3B,CAACoJ,EAAeC,CAAgB,EAAIlJ,EAAQ,SAAC,EAAK,EAClD,CAACmJ,EAAQC,CAAS,EAAIpJ,EAAQ,SAAA,EAClC/L,EAAS,UAAC,UAAyB,CACjC,GAAI,CAAC+U,EAAc,QAAS,CAC1BI,EAAU,MAAS,EACnB,MACD,CACD,IAAIlC,EAAStR,GAAc,CAAA,EAAIyT,GAAY,kBAAmB,CAAA,EAC1DnC,EAAO,WAAa,SACtBA,EAAO,SAAW,IAEpB,OAAO,OAAOA,EAAO,SAAUqB,CAAc,EAG7CrB,EAAO,QAAU,GACjB,IAAIoC,EAAY,IAAIC,GAAarC,EAAQ8B,EAAc,OAAO,EAC1DQ,EAAS,IAAM,CACjBF,EAAU,IAAI,cAAeE,CAAM,EACnCN,EAAiB,EAAI,CAC3B,EACI,OAAAI,EAAU,GAAG,cAAeE,CAAM,EAC9Bb,GAAqB,MACvBW,EAAU,qBAAqBX,CAAiB,EAElDW,EAAU,KAAI,EACdF,EAAUE,CAAS,EACnBb,EAAqBa,CAAS,EACvB,IAAM,CACXA,EAAU,QAAO,CACvB,CACA,EAAK,CAACf,EAAgBI,EAAmBF,EAAsBS,EAAkBE,CAAS,CAAC,EACzF,IAAI/I,EAAejI,EAAAA,QAAQ,IAAMqR,GAAS,IAAM,CAC1CN,GAAU,MAAQA,EAAO,gBAC3BA,GAAW,MAAqCA,EAAO,aAE1D,EAAElB,EAAe,EAAG,CAACkB,CAAM,CAAC,EAC7B,OAAArV,GAAkBkV,EAAc,QAAS3I,CAAY,EACjC/D,EAAAA,KAAM,MAAO,CAC/B,UAAW,kCACX,SAAU,CAAc3H,EAAI,IAAC,MAAO,CAClC,UAAW,cACX,IAAKqU,CACN,CAAA,EAAGC,GAAiBE,GAAuBxU,EAAAA,IAAK+U,GAAqB,SAAU,CAC9E,MAAOP,EACP,SAAuBxU,EAAI,IAACgV,GAAiB,CAC3C,eAAgBtB,EAChB,GAAIjD,EACJ,OAAQ+D,EACR,aAAcb,EACd,eAAgBE,EAChB,oBAAqBE,EACrB,QAASG,EACT,UAAWC,EACX,aAAcC,EACd,SAAUjI,CAClB,CAAO,CACP,CAAK,CAAC,CACN,CAAG,CACH,CC9FU,IAAC8I,GAAmB,mBACvB,SAASC,GAA6BC,EAAUC,EAAS,CAC9D,GAAI,CACFD,EAAS,IAAIF,GAAkBG,CAAO,CACvC,MAAiB,CAEjB,CACH,CACO,SAASC,GAAyBF,EAAUC,EAAS,CAC1D,OAAAD,EAAS,GAAGF,GAAkBG,CAAO,EAC9B,IAAMF,GAA6BC,EAAUC,CAAO,CAC7D,CACO,SAASE,GAAoBH,EAAUxE,EAAS,CACrDwE,EAAS,KAAKF,GAAkBtE,CAAO,CACzC,CCdA,IAAIlQ,GAAY,CAAC,KAAM,WAAY,SAAS,EAC5C,SAASE,GAAQC,EAAQC,EAAgB,CAAE,IAAIC,EAAO,OAAO,KAAKF,CAAM,EAAG,GAAI,OAAO,sBAAuB,CAAE,IAAIG,EAAU,OAAO,sBAAsBH,CAAM,EAAGC,IAAmBE,EAAUA,EAAQ,OAAO,SAAUC,EAAK,CAAE,OAAO,OAAO,yBAAyBJ,EAAQI,CAAG,EAAE,UAAW,CAAE,GAAIF,EAAK,KAAK,MAAMA,EAAMC,CAAO,CAAE,CAAG,OAAOD,CAAO,CACrV,SAASG,GAAcC,EAAQ,CAAE,QAASC,EAAI,EAAGA,EAAI,UAAU,OAAQA,IAAK,CAAE,IAAIC,EAAiB,UAAUD,CAAC,GAAnB,KAAuB,UAAUA,CAAC,EAAI,CAAE,EAAEA,EAAI,EAAIR,GAAQ,OAAOS,CAAM,EAAG,EAAE,EAAE,QAAQ,SAAUrB,EAAK,CAAEsB,GAAgBH,EAAQnB,EAAKqB,EAAOrB,CAAG,CAAC,CAAI,CAAA,EAAI,OAAO,0BAA4B,OAAO,iBAAiBmB,EAAQ,OAAO,0BAA0BE,CAAM,CAAC,EAAIT,GAAQ,OAAOS,CAAM,CAAC,EAAE,QAAQ,SAAUrB,EAAK,CAAE,OAAO,eAAemB,EAAQnB,EAAK,OAAO,yBAAyBqB,EAAQrB,CAAG,CAAC,CAAE,CAAE,CAAI,CAAC,OAAOmB,CAAS,CAC1f,SAASG,GAAgBC,EAAKvB,EAAKwB,EAAO,CAAE,OAAAxB,EAAMyB,GAAezB,CAAG,EAAOA,KAAOuB,EAAO,OAAO,eAAeA,EAAKvB,EAAK,CAAE,MAAOwB,EAAO,WAAY,GAAM,aAAc,GAAM,SAAU,EAAM,CAAA,EAAYD,EAAIvB,CAAG,EAAIwB,EAAgBD,CAAM,CAC5O,SAASE,GAAeC,EAAK,CAAE,IAAI1B,EAAM2B,GAAaD,EAAK,QAAQ,EAAG,OAAO,OAAO1B,GAAQ,SAAWA,EAAM,OAAOA,CAAG,CAAI,CAC3H,SAAS2B,GAAaC,EAAOC,EAAM,CAAE,GAAI,OAAOD,GAAU,UAAYA,IAAU,KAAM,OAAOA,EAAO,IAAIE,EAAOF,EAAM,OAAO,WAAW,EAAG,GAAIE,IAAS,OAAW,CAAE,IAAIC,EAAMD,EAAK,KAAKF,EAAOC,GAAQ,SAAS,EAAG,GAAI,OAAOE,GAAQ,SAAU,OAAOA,EAAK,MAAM,IAAI,UAAU,8CAA8C,CAAI,CAAC,OAAQF,IAAS,SAAW,OAAS,QAAQD,CAAK,CAAI,CACzX,SAASI,GAAyBX,EAAQY,EAAU,CAAE,GAAIZ,GAAU,KAAM,MAAO,GAAI,IAAIF,EAASe,GAA8Bb,EAAQY,CAAQ,EAAOjC,EAAK,EAAG,GAAI,OAAO,sBAAuB,CAAE,IAAImC,EAAmB,OAAO,sBAAsBd,CAAM,EAAG,IAAK,EAAI,EAAG,EAAIc,EAAiB,OAAQ,IAAOnC,EAAMmC,EAAiB,CAAC,EAAO,EAAAF,EAAS,QAAQjC,CAAG,GAAK,IAAkB,OAAO,UAAU,qBAAqB,KAAKqB,EAAQrB,CAAG,IAAamB,EAAOnB,CAAG,EAAIqB,EAAOrB,CAAG,EAAI,CAAG,OAAOmB,CAAS,CAC5e,SAASe,GAA8Bb,EAAQY,EAAU,CAAE,GAAIZ,GAAU,KAAM,MAAO,CAAE,EAAE,IAAIF,EAAS,CAAE,EAAMiB,EAAa,OAAO,KAAKf,CAAM,EAAOrB,EAAKoB,EAAG,IAAKA,EAAI,EAAGA,EAAIgB,EAAW,OAAQhB,IAAOpB,EAAMoC,EAAWhB,CAAC,EAAO,EAAAa,EAAS,QAAQjC,CAAG,GAAK,KAAamB,EAAOnB,CAAG,EAAIqB,EAAOrB,CAAG,GAAK,OAAOmB,CAAS,CAS5S,SAASqU,GAAclV,EAAM,CAClC,GAAI,CACA,GAAAoQ,EACA,SAAArH,EACA,QAAAoM,CACN,EAAQnV,EACJmD,EAAOzB,GAAyB1B,EAAMI,EAAS,EAC7C,CAACgV,EAAUC,CAAW,EAAIrK,EAAQ,SAACjC,CAAQ,EAC3CuM,EAAWC,KACXC,EAA2B/V,EAAW,YAACyS,GAAU,CAMjDoD,EADElF,IAAOqF,GACAC,GAAoB,CAC3B,aAAcxD,CACf,CAAA,EAEQyD,GAAoBvF,EAAI,CAC/B,aAAc8B,CACf,CAAA,CAJC,CAMR,EAAK,CAAC9B,EAAIkF,CAAQ,CAAC,EAIjB,MAHI,CAACF,GAAYrM,GACfsM,EAAY,EAAI,EAEbD,EAGezV,MAAKyT,GAAWxS,GAAcA,GAAc,CAC9D,GAAIwP,EACJ,qBAAsBoF,CAE1B,EAAKrS,CAAI,EAAG,GAAI,CACZ,SAAUgS,CACX,CAAA,CAAC,EARoBxV,EAAI,IAACiW,GAAgB,CAAA,CAAE,CAS/C,CCjDO,SAASC,GAAoBV,EAAS,CAC3C,IAAIW,EAAY,CAAC,GAAGX,EAAQ,QAAO,CAAE,EAAE,OAAOnV,GAAQ,CACpD,GAAI,CAAG,CAAA+V,CAAM,EAAI/V,EACjB,OAAOgW,GAAkBD,CAAM,GAAKE,GAAwBF,CAAM,CACtE,CAAG,EACD,OAAOD,EAAU,IAAII,GAAS,CAC5B,GAAI,CAACC,EAAYJ,CAAM,EAAIG,EAC3B,GAAID,GAAwBF,CAAM,EAAG,CACnC,GAAI,CACF,gBAAiBK,CAClB,EAAGL,EACJ,OAAoBpW,MAAKyW,EAAU,CAAE,EAAED,CAAU,CAClD,CACD,GAAI,CACF,UAAWE,CACZ,EAAGN,EACJ,OAAoBpW,MAAK0W,EAAS,CAAE,EAAEF,CAAU,CACpD,CAAG,CACH,CAMO,SAASG,IAAsB,CACpC,IAAInB,EAAUoB,KACVC,EAAmBpT,EAAAA,QAAQ,IAAMyS,GAAoBV,CAAO,EAAG,CAACA,CAAO,CAAC,EAC5E,OAAOqB,CACT,CC/BU,IAACC,GAAmCjI,EAAa,cAAC,EAAE,EACnDkI,GAA8ClI,EAAa,cAAC,EAAE,EAC9DmI,GAA2BnI,EAAa,cAAC,IAAI,ECF7CoI,GAAiCpI,EAAa,cAAC,IAAI,ECD9D,SAASI,GAAmBC,EAAKC,EAASC,EAAQC,EAAOC,EAAQvP,EAAK0B,EAAK,CAAE,GAAI,CAAE,IAAI8N,EAAOL,EAAInP,CAAG,EAAE0B,CAAG,EAAOF,EAAQgO,EAAK,YAAgBjK,EAAO,CAAE8J,EAAO9J,CAAK,EAAG,MAAS,CAAKiK,EAAK,KAAQJ,EAAQ5N,CAAK,EAAY,QAAQ,QAAQA,CAAK,EAAE,KAAK8N,EAAOC,CAAM,CAAM,CACzQ,SAASE,GAAkBC,EAAI,CAAE,OAAO,UAAY,CAAE,IAAIC,EAAO,KAAMC,EAAO,UAAW,OAAO,IAAI,QAAQ,SAAUR,EAASC,EAAQ,CAAE,IAAIF,EAAMO,EAAG,MAAMC,EAAMC,CAAI,EAAG,SAASN,EAAM9N,EAAO,CAAE0N,GAAmBC,EAAKC,EAASC,EAAQC,EAAOC,EAAQ,OAAQ/N,CAAK,CAAI,CAAC,SAAS+N,EAAOM,EAAK,CAAEX,GAAmBC,EAAKC,EAASC,EAAQC,EAAOC,EAAQ,QAASM,CAAG,EAAKP,EAAM,MAAS,EAAI,CAAI,CAAG,CAM9X,IAAI6H,GAAmCrI,EAAAA,cAAc,IAAI,EAIzD,SAASsI,GAAsB9W,EAAM,CAC1C,GAAI,CACF,SAAA8L,CACD,EAAG9L,EACAsO,EAASI,KACT,CAACqI,EAAcC,CAAe,EAAIhM,EAAQ,SAAA,EAC1C,CAAC/F,EAAOgS,CAAQ,EAAIjM,EAAQ,SAAA,EAChC/L,EAAS,UAAC,UAAkC,CAC1C,IAAIiY,EAAa,GACjB,SAASC,GAAyB,CAChC,OAAOC,EAAwB,MAAM,KAAM,SAAS,CACrD,CACD,SAASA,GAA0B,CACjC,OAAAA,EAA0BjI,GAAkB,WAAa,CACvD,GAAI,CACF,IAAIkI,EAAwB,MAAM/I,EAAO,wBACpC4I,GACHF,EAAgB,IAAI,IAAIK,CAAqB,CAAC,CAEjD,OAAQ3Q,EAAG,CACLwQ,GACHD,EAASvQ,CAAC,CAEb,CACT,CAAO,EACM0Q,EAAwB,MAAM,KAAM,SAAS,CACrD,CACD,OAAAD,IACO,IAAM,CACXD,EAAa,EACnB,CACA,EAAK,CAAC5I,CAAM,CAAC,EACX,IAAIgJ,EAAYP,GAAgB,KAChC,OAAIO,GAAarS,GAAS,KACJtF,EAAAA,IAAKiW,GAAgB,CACvC,UAAW0B,GAAarS,GAAS,KACjC,aAAcsS,GAAgBtS,CAAK,CACzC,CAAK,EAEiBtF,EAAI,IAACkX,GAAoB,SAAU,CACrD,MAAOE,EACP,SAAUjL,CACd,CAAG,CACH,CCpDO,SAAS0L,IAAkB,CAChC,OAAO7I,EAAkBkI,GAAqB,2HAA2H,CAC3K,CCJA,SAASjI,GAAmBC,EAAKC,EAASC,EAAQC,EAAOC,EAAQvP,EAAK0B,EAAK,CAAE,GAAI,CAAE,IAAI8N,EAAOL,EAAInP,CAAG,EAAE0B,CAAG,EAAOF,EAAQgO,EAAK,YAAgBjK,EAAO,CAAE8J,EAAO9J,CAAK,EAAG,MAAS,CAAKiK,EAAK,KAAQJ,EAAQ5N,CAAK,EAAY,QAAQ,QAAQA,CAAK,EAAE,KAAK8N,EAAOC,CAAM,CAAM,CACzQ,SAASE,GAAkBC,EAAI,CAAE,OAAO,UAAY,CAAE,IAAIC,EAAO,KAAMC,EAAO,UAAW,OAAO,IAAI,QAAQ,SAAUR,EAASC,EAAQ,CAAE,IAAIF,EAAMO,EAAG,MAAMC,EAAMC,CAAI,EAAG,SAASN,EAAM9N,EAAO,CAAE0N,GAAmBC,EAAKC,EAASC,EAAQC,EAAOC,EAAQ,OAAQ/N,CAAK,CAAI,CAAC,SAAS+N,EAAOM,EAAK,CAAEX,GAAmBC,EAAKC,EAASC,EAAQC,EAAOC,EAAQ,QAASM,CAAG,EAAKP,EAAM,MAAS,EAAI,CAAI,CAAG,CACrY,SAAS1O,GAAQC,EAAQC,EAAgB,CAAE,IAAIC,EAAO,OAAO,KAAKF,CAAM,EAAG,GAAI,OAAO,sBAAuB,CAAE,IAAIG,EAAU,OAAO,sBAAsBH,CAAM,EAAGC,IAAmBE,EAAUA,EAAQ,OAAO,SAAUC,EAAK,CAAE,OAAO,OAAO,yBAAyBJ,EAAQI,CAAG,EAAE,UAAW,CAAE,GAAIF,EAAK,KAAK,MAAMA,EAAMC,CAAO,CAAE,CAAG,OAAOD,CAAO,CACrV,SAASG,GAAcC,EAAQ,CAAE,QAASC,EAAI,EAAGA,EAAI,UAAU,OAAQA,IAAK,CAAE,IAAIC,EAAiB,UAAUD,CAAC,GAAnB,KAAuB,UAAUA,CAAC,EAAI,CAAE,EAAEA,EAAI,EAAIR,GAAQ,OAAOS,CAAM,EAAG,EAAE,EAAE,QAAQ,SAAUrB,EAAK,CAAEsB,GAAgBH,EAAQnB,EAAKqB,EAAOrB,CAAG,CAAC,CAAI,CAAA,EAAI,OAAO,0BAA4B,OAAO,iBAAiBmB,EAAQ,OAAO,0BAA0BE,CAAM,CAAC,EAAIT,GAAQ,OAAOS,CAAM,CAAC,EAAE,QAAQ,SAAUrB,EAAK,CAAE,OAAO,eAAemB,EAAQnB,EAAK,OAAO,yBAAyBqB,EAAQrB,CAAG,CAAC,CAAE,CAAE,CAAI,CAAC,OAAOmB,CAAS,CAC1f,SAASG,GAAgBC,EAAKvB,EAAKwB,EAAO,CAAE,OAAAxB,EAAMyB,GAAezB,CAAG,EAAOA,KAAOuB,EAAO,OAAO,eAAeA,EAAKvB,EAAK,CAAE,MAAOwB,EAAO,WAAY,GAAM,aAAc,GAAM,SAAU,EAAM,CAAA,EAAYD,EAAIvB,CAAG,EAAIwB,EAAgBD,CAAM,CAC5O,SAASE,GAAeC,EAAK,CAAE,IAAI1B,EAAM2B,GAAaD,EAAK,QAAQ,EAAG,OAAO,OAAO1B,GAAQ,SAAWA,EAAM,OAAOA,CAAG,CAAI,CAC3H,SAAS2B,GAAaC,EAAOC,EAAM,CAAE,GAAI,OAAOD,GAAU,UAAYA,IAAU,KAAM,OAAOA,EAAO,IAAIE,EAAOF,EAAM,OAAO,WAAW,EAAG,GAAIE,IAAS,OAAW,CAAE,IAAIC,EAAMD,EAAK,KAAKF,EAAOC,GAAQ,SAAS,EAAG,GAAI,OAAOE,GAAQ,SAAU,OAAOA,EAAK,MAAM,IAAI,UAAU,8CAA8C,CAAI,CAAC,OAAQF,IAAS,SAAW,OAAS,QAAQD,CAAK,CAAI,CAOlX,SAASmW,GAAczX,EAAM,CAClC,GAAI,CACF,WAAA0X,EACA,gBAAAC,EACA,oBAAAjE,EACA,qBAAAD,EACA,QAAA0B,EACA,eAAA9B,EAA8B1T,EAAAA,IAAKiW,GAAgB,EAAE,CACtD,EAAG5V,EACA4X,EAAcC,KACdC,EAAerY,EAAAA,YAAY,CAACsY,EAAc3H,IAAO,CACnD,GAAI,CACF,SAAA4H,CACD,EAAGD,EACJ,GAAI,CACF,GAAIC,GAAY,KACd,OAAOpX,GAAcA,GAAc,CACjC,MAAO,UAAY,CACjB,IAAIqX,EAAS9I,GAAkB,WAAa,CAC1C,OAAOyI,EAAYI,CAAQ,CACzC,CAAa,EACD,SAASE,GAAQ,CACf,OAAOD,EAAO,MAAM,KAAM,SAAS,CACpC,CACD,OAAOC,CACnB,EAAa,CACb,EAAWH,CAAY,EAAG,GAAI,CACpB,iBAAkB3H,CAC5B,CAAS,CAEJ,MAAW,CAEX,CACD,OAAO+H,GAAe,QAAQJ,EAAc3H,CAAE,CAClD,EAAK,CAACwH,CAAW,CAAC,EAChB,OAAoBjY,EAAAA,IAAK,MAAO,CAC9B,UAAW,cACX,SAAU+X,EAAW,IAAIU,GAAkBzY,EAAAA,IAAK,MAAO,CACrD,UAAWQ,EAAW,WAAY,CAChC,OAAQiY,EAAE,KAAOT,CACzB,CAAO,EACD,SAAuBhY,EAAI,IAACuV,GAAe,CACzC,GAAIkD,EAAE,GACN,SAAUA,EAAE,KAAOT,EACnB,eAAgBtE,EAChB,aAAc+E,EAAE,aAChB,eAAgBA,EAAE,eAClB,oBAAqB1E,EACrB,qBAAsBD,EACtB,QAASqE,EACT,QAAS3C,CACjB,EAASiD,EAAE,GAAG,CACd,EAAOA,EAAE,EAAE,CAAC,CACZ,CAAG,CACH,CC5DO,SAASC,IAAgB,CAC9B,OAAO1J,EAAkBiI,GAAmB,8FAA8F,CAC5I,CCPO,SAAS0B,IAAU,CACxB,OAAO3J,EAAkBgI,GAAa,0FAA0F,CAClI,CCJA,SAAS/H,GAAmBC,EAAKC,EAASC,EAAQC,EAAOC,EAAQvP,EAAK0B,EAAK,CAAE,GAAI,CAAE,IAAI8N,EAAOL,EAAInP,CAAG,EAAE0B,CAAG,EAAOF,EAAQgO,EAAK,YAAgBjK,EAAO,CAAE8J,EAAO9J,CAAK,EAAG,MAAS,CAAKiK,EAAK,KAAQJ,EAAQ5N,CAAK,EAAY,QAAQ,QAAQA,CAAK,EAAE,KAAK8N,EAAOC,CAAM,CAAM,CACzQ,SAASE,GAAkBC,EAAI,CAAE,OAAO,UAAY,CAAE,IAAIC,EAAO,KAAMC,EAAO,UAAW,OAAO,IAAI,QAAQ,SAAUR,EAASC,EAAQ,CAAE,IAAIF,EAAMO,EAAG,MAAMC,EAAMC,CAAI,EAAG,SAASN,EAAM9N,EAAO,CAAE0N,GAAmBC,EAAKC,EAASC,EAAQC,EAAOC,EAAQ,OAAQ/N,CAAK,CAAI,CAAC,SAAS+N,EAAOM,EAAK,CAAEX,GAAmBC,EAAKC,EAASC,EAAQC,EAAOC,EAAQ,QAASM,CAAG,EAAKP,EAAM,MAAS,EAAI,CAAI,CAAG,CACrY,SAAShO,EAAgBC,EAAKvB,EAAKwB,EAAO,CAAE,OAAAxB,EAAMyB,GAAezB,CAAG,EAAOA,KAAOuB,EAAO,OAAO,eAAeA,EAAKvB,EAAK,CAAE,MAAOwB,EAAO,WAAY,GAAM,aAAc,GAAM,SAAU,EAAM,CAAA,EAAYD,EAAIvB,CAAG,EAAIwB,EAAgBD,CAAM,CAC5O,SAASE,GAAeC,EAAK,CAAE,IAAI1B,EAAM2B,GAAaD,EAAK,QAAQ,EAAG,OAAO,OAAO1B,GAAQ,SAAWA,EAAM,OAAOA,CAAG,CAAI,CAC3H,SAAS2B,GAAaC,EAAOC,EAAM,CAAE,GAAI,OAAOD,GAAU,UAAYA,IAAU,KAAM,OAAOA,EAAO,IAAIE,EAAOF,EAAM,OAAO,WAAW,EAAG,GAAIE,IAAS,OAAW,CAAE,IAAIC,EAAMD,EAAK,KAAKF,EAAOC,GAAQ,SAAS,EAAG,GAAI,OAAOE,GAAQ,SAAU,OAAOA,EAAK,MAAM,IAAI,UAAU,8CAA8C,CAAI,CAAC,OAAQF,IAAS,SAAW,OAAS,QAAQD,CAAK,CAAI,CAOzX,IAAIiC,EAAMC,EAAI,OAAO,sBAAsB,EAMpC,MAAM+U,CAAqB,CAWhC,YAAYC,EAAgB,CAC1B,IAAIC,EAAW,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,GAC/EC,EAAO,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAID,EAC/EzX,EAAgB,KAAM,iBAAkB,MAAM,EAC9CA,EAAgB,KAAM,WAAY,MAAM,EACxCA,EAAgB,KAAM,OAAQ,MAAM,EACpCA,EAAgB,KAAM,cAAe,CAAC,EACtCA,EAAgB,KAAM,kBAAmB,MAAM,EAC/CA,EAAgB,KAAM,YAAa,CAAA,CAAE,EACrCA,EAAgB,KAAM,wBAAyB,MAAM,EACrDA,EAAgB,KAAM,sBAAuB,MAAM,EACnDA,EAAgB,KAAM,cAAe,IAAI,GAAK,EAC9C,KAAK,eAAiBwX,EACtB,KAAK,SAAWC,EAChB,KAAK,KAAOC,EACRA,IAASD,IACX,KAAK,UAAYE,GAAS,KAAK,UAAU,KAAK,IAAI,EAAGJ,EAAqB,gBAAgB,EAE7F,CACD,eAAeK,EAAU,CACvB,OAAOC,EAAU,WAAW,KAAK,SAAUD,CAAQ,CACpD,CACD,iBAAkB,CAChB,IAAIE,EACJ,OAAK,KAAK,uBACR,KAAK,gBAAe,GAEdA,EAAwB,KAAK,yBAA2B,MAAQA,IAA0B,OAASA,EAAwB,QAAQ,QAAQ,CACjJ,MAAO,CAAE,EACT,OAAQ,CACd,CAAK,CACF,CACD,YAAYC,EAAc,CACxB,MAAM,IAAI,MAAM,yBAAyB,CAC1C,CACD,IAAI,MAAO,CACT,OAAO,KAAK,WACb,CACD,YAAYC,EAAMC,EAAU,CAC1B,IAAIC,EAAQF,EAAK,MAAM,GAAG,EACtBG,EAAWD,EAAM,QAIrB,IAHIC,IAAa,QAAaA,IAAa,MACzCA,EAAWD,EAAM,SAEfC,IAAa,QAAaA,IAAa,GACzC,MAAM,IAAI,MAAM,iBAAiB,OAAOH,CAAI,CAAC,EAE/C,IAAII,EAAgBF,EAAM,KAAK,GAAG,EAClC,GAAID,EAAU,CACZ,GAAI,CAAC,KAAK,YAAY,IAAIE,CAAQ,EAAG,CACnC,IAAIE,EAAa,IAAId,EAAqB,KAAK,eAAgB,KAAK,SAAU,GAAG,OAAO,KAAK,KAAM,GAAG,EAAE,OAAOY,CAAQ,CAAC,EACxH,KAAK,YAAY,IAAIA,EAAUE,CAAU,CAC1C,CACD,GAAID,EAAe,CACjB,IAAIE,EAAc,KAAK,YAAY,IAAIH,CAAQ,EAC/CG,GAAgB,MAA0CA,EAAY,YAAYF,EAAeH,CAAQ,CAC1G,CACF,SAAU,KAAK,YAAY,IAAIE,CAAQ,EACtC,GAAIC,EAAe,CACjB,IAAIG,EAAe,KAAK,YAAY,IAAIJ,CAAQ,EAChDI,GAAiB,MAA2CA,EAAa,YAAYH,EAAeH,CAAQ,CACpH,MACQ,KAAK,YAAY,OAAOE,CAAQ,EAGhC,KAAK,iBACP,KAAK,gBAAe,CAEvB,CACD,aAAc,CACZ,KAAK,YAAY,QACb,KAAK,iBACP,KAAK,gBAAe,CAEvB,CAGD,UAAUK,EAAQ,CAChB,MAAM,IAAI,MAAM,yBAAyB,CAC1C,CACD,YAAYC,EAAU,CACpB,KAAK,gBAAkBA,EACvB,KAAK,gBAAe,CACrB,CACD,YAAa,CACX,MAAM,IAAI,MAAM,yBAAyB,CAC1C,CACD,UAAW,CACT,MAAM,IAAI,MAAM,yBAAyB,CAC1C,CACD,aAAc,CACZ,MAAM,IAAI,MAAM,yBAAyB,CAC1C,CACD,OAAQ,CACN,KAAK,UAAY,EAClB,CACD,SAASC,EAAU,CACjB,YAAK,UAAY,CAAC,GAAG,KAAK,UAAWA,CAAQ,EACtC,IAAM,CACX,KAAK,UAAY,KAAK,UAAU,OAAOC,GAASA,IAAUD,CAAQ,CACxE,CACG,CACD,UAAUA,EAAU,CAClBnW,EAAI,OAAO,YAAa,KAAK,IAAI,EACjCmW,EAAS,KAAK,UAAS,CAAE,CAC1B,CACD,SAAU,CACR,IAAIE,EACJrW,EAAI,OAAO,UAAW,KAAK,IAAI,GAC9BqW,EAAyB,KAAK,yBAA2B,MAAQA,IAA2B,QAAkBA,EAAuB,OAAM,EAC5I,IAAIC,EAAiB,IAAI,QAAQ/K,GAAW,CAC1C,KAAK,UAAUA,CAAO,CAC5B,CAAK,EACGgL,EAAwBjV,EAAa,eAAegV,EAAe,KAAKE,GAAgB,CAC1F,GAAI,KAAK,wBAA0BD,EACjC,MAAM,IAAIE,GAEZ,YAAK,oBAAsBD,EAC3B,KAAK,WAAU,EACRA,CACR,CAAA,CAAC,EAGFD,EAAsB,MAAMpT,GAAK,CAC1B7B,EAAa,WAAW6B,CAAC,GAC5BnD,EAAI,MAAM,0BAA2BmD,CAAC,CAE9C,CAAK,EACD,KAAK,sBAAwBoT,CAC9B,CAKD,iBAAkB,CAChB,GAAI,CACF,KAAK,QAAO,CACb,OAAQ,EAAG,CACLjV,EAAa,WAAW,CAAC,GAC5BtB,EAAI,MAAM,yBAA0B,CAAC,CAExC,CACF,CACD,WAAY,CACV,IAAI0W,EAAQ,KACZ,OAAO9K,GAAkB,WAAa,CACpC,GAAI,CACF,gBAAiBsK,CAClB,EAAGQ,EACJ,GAAI,CAACR,EACH,MAAM,IAAI,MAAM,iBAAiB,EAmBnC,QAfIS,EAAc,MAAMD,EAAM,eAAe,UAAUA,EAAM,IAAI,EAC7DE,EAAQD,EAAY,IAAIE,IAAS,CACnC,KAAMA,EAAK,KACX,SAAUH,EAAM,eAAeG,EAAK,QAAQ,EAC5C,SAAUA,EAAK,SACf,GAAIH,EAAM,eAAeG,EAAK,QAAQ,EACtC,WAAYA,EAAK,OAAS,YAAcH,EAAM,YAAY,IAAIG,EAAK,QAAQ,EAAI,MAChF,EAAC,EAAE,KAAK,CAACC,EAAGC,IACPD,EAAE,OAASC,EAAE,KACRD,EAAE,OAAS,YAAc,GAAK,EAEhCA,EAAE,SAAS,cAAcC,EAAE,QAAQ,CAC3C,EAGQxZ,EAAI,EAAGA,EAAIqZ,EAAM,OAAQrZ,GAAK,EAAG,CACxC,IAAIjB,EAAOsa,EAAMrZ,CAAC,EACd,CACF,SAAAyZ,EACA,SAAA3B,CACD,EAAG/Y,EACJ,GAAI+Y,IAAaqB,EAAM,eAAe,GAAG,OAAOA,EAAM,KAAM,GAAG,EAAE,OAAOM,CAAQ,CAAC,GAAK1a,EAAK,OAAS,YAAa,CAC/G,IAAIwZ,EAAaY,EAAM,YAAY,IAAIM,CAAQ,EAC/C,GAAIlB,GAAc,KAAM,CACtBA,EAAW,YAAY,CACrB,IAAK,EACL,OAAQI,EAAS,OAAS3Y,CACxC,CAAa,EAED,IAAI0Z,EAAoB,MAAMnB,EAAW,kBACzCc,EAAM,OAAOrZ,EAAI,EAAG,EAAG,GAAG0Z,EAAkB,KAAK,CAClD,CACF,CACF,CACD,OAAAP,EAAM,YAAcE,EAAM,OAC1B5W,EAAI,OAAO0W,EAAM,KAAM,QAASE,EAAOV,CAAQ,EAG/CU,EAAQA,EAAM,MAAMV,EAAS,IAAKA,EAAS,MAAM,EAC1C,CACL,MAAAU,EACA,OAAQV,EAAS,GACzB,CACK,CAAA,GACF,CACD,YAAa,CAUX,QATIgB,EAEA,CACF,UAAAC,CACD,EAAG,KACAxJ,GAAQuJ,EAAwB,KAAK,uBAAyB,MAAQA,IAA0B,OAASA,EAAwB,CACnI,MAAO,CAAE,EACT,OAAQ,CACd,EACa,EAAI,EAAG,EAAIC,EAAU,OAAQ,GAAK,EACzCA,EAAU,CAAC,EAAExJ,CAAI,CAEpB,CACH,CACAlQ,EAAgBuX,EAAsB,mBAAoB,EAAE,EClP5D,SAAS3J,GAAmBC,EAAKC,EAASC,EAAQC,EAAOC,EAAQvP,EAAK0B,EAAK,CAAE,GAAI,CAAE,IAAI8N,EAAOL,EAAInP,CAAG,EAAE0B,CAAG,EAAOF,EAAQgO,EAAK,YAAgBjK,EAAO,CAAE8J,EAAO9J,CAAK,EAAG,MAAS,CAAKiK,EAAK,KAAQJ,EAAQ5N,CAAK,EAAY,QAAQ,QAAQA,CAAK,EAAE,KAAK8N,EAAOC,CAAM,CAAM,CACzQ,SAASE,EAAkBC,EAAI,CAAE,OAAO,UAAY,CAAE,IAAIC,EAAO,KAAMC,EAAO,UAAW,OAAO,IAAI,QAAQ,SAAUR,EAASC,EAAQ,CAAE,IAAIF,EAAMO,EAAG,MAAMC,EAAMC,CAAI,EAAG,SAASN,EAAM9N,EAAO,CAAE0N,GAAmBC,EAAKC,EAASC,EAAQC,EAAOC,EAAQ,OAAQ/N,CAAK,CAAI,CAAC,SAAS+N,EAAOM,EAAK,CAAEX,GAAmBC,EAAKC,EAASC,EAAQC,EAAOC,EAAQ,QAASM,CAAG,EAAKP,EAAM,MAAS,EAAI,CAAI,CAAG,CACrY,SAAShO,EAAgBC,EAAKvB,EAAKwB,EAAO,CAAE,OAAAxB,EAAMyB,GAAezB,CAAG,EAAOA,KAAOuB,EAAO,OAAO,eAAeA,EAAKvB,EAAK,CAAE,MAAOwB,EAAO,WAAY,GAAM,aAAc,GAAM,SAAU,EAAM,CAAA,EAAYD,EAAIvB,CAAG,EAAIwB,EAAgBD,CAAM,CAC5O,SAASE,GAAeC,EAAK,CAAE,IAAI1B,EAAM2B,GAAaD,EAAK,QAAQ,EAAG,OAAO,OAAO1B,GAAQ,SAAWA,EAAM,OAAOA,CAAG,CAAI,CAC3H,SAAS2B,GAAaC,EAAOC,EAAM,CAAE,GAAI,OAAOD,GAAU,UAAYA,IAAU,KAAM,OAAOA,EAAO,IAAIE,EAAOF,EAAM,OAAO,WAAW,EAAG,GAAIE,IAAS,OAAW,CAAE,IAAIC,EAAMD,EAAK,KAAKF,EAAOC,GAAQ,SAAS,EAAG,GAAI,OAAOE,GAAQ,SAAU,OAAOA,EAAK,MAAM,IAAI,UAAU,8CAA8C,CAAI,CAAC,OAAQF,IAAS,SAAW,OAAS,QAAQD,CAAK,CAAI,CAKzX,IAAIiC,GAAMC,EAAI,OAAO,iBAAiB,EAC/B,MAAMmX,EAAgB,CAM3B,YAAYpJ,EAAIiH,EAAgB,CAC9B,IAAIE,EAAO,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,GAC/E1X,EAAgB,KAAM,KAAM,MAAM,EAClCA,EAAgB,KAAM,iBAAkB,MAAM,EAC9CA,EAAgB,KAAM,SAAU,CAAA,CAAE,EAClCA,EAAgB,KAAM,OAAQ,MAAM,EACpCA,EAAgB,KAAM,gBAAiByT,GAAS,IAAM,CACpD,KAAK,OAAO,QAAQmG,GAASA,EAAM,QAAO,CAAE,CAClD,EAAOD,GAAgB,gBAAgB,CAAC,EACpC,KAAK,GAAKpJ,EACV,KAAK,eAAiBiH,EACtB,KAAK,KAAOE,CACb,CACD,WAAWE,EAAU,CACnB,OAAOC,EAAU,WAAW,KAAK,KAAMD,CAAQ,CAChD,CACD,QAAQI,EAAM,CACZ,OAAOH,EAAU,QAAQ,KAAK,KAAMG,CAAI,CACzC,CACD,gBAAgBA,EAAM,CACpB,IAAIiB,EAAQ,KACZ,OAAO9K,EAAkB,WAAa,CACpC,aAAM8K,EAAM,eAAe,gBAAgBA,EAAM,QAAQjB,CAAI,CAAC,EAC9DiB,EAAM,cAAa,EACZ,CACL,KAAM,YACN,GAAIjB,EACJ,SAAUA,EACV,SAAUH,EAAU,YAAYG,CAAI,CAC5C,CACK,CAAA,GACF,CACD,UAAW,CACT,IAAI6B,EAAS,KACb,OAAO1L,EAAkB,WAAa,CACpC,IAAIyL,EAAQ,IAAIrC,EAAqBsC,EAAO,eAAgBA,EAAO,IAAI,EACvE,OAAAA,EAAO,OAAO,KAAKD,CAAK,EACjBA,CACR,CAAA,GACF,CACD,SAASR,EAAM,CACb,IAAIU,EAAS,KACb,OAAO3L,EAAkB,WAAa,CACpC,IAAI4L,EAAeD,EAAO,GAAG,QAAQ,aAAa,KAAKV,EAAK,OAAO,EACnE,aAAMU,EAAO,eAAe,SAASA,EAAO,QAAQV,EAAK,QAAQ,EAAGW,EAAc,EAAI,EACtFD,EAAO,cAAa,EACbV,CACR,CAAA,GACF,CACD,SAASY,EAAM,CACb,IAAIC,EAAS,KACb,OAAO9L,EAAkB,WAAa,CACpC,IAAI4L,EAAe,MAAME,EAAO,eAAe,SAASA,EAAO,QAAQD,CAAI,CAAC,EACxEE,EAAU,MAAMH,EAAa,OACjC,MAAO,CACL,SAAUC,EACV,SAAUnC,EAAU,YAAYmC,CAAI,EACpC,QAAAE,CACR,CACK,CAAA,GACF,CACD,SAASF,EAAMG,EAAS,CACtB,IAAIC,EAAS,KACb,OAAOjM,EAAkB,WAAa,CACpC,IAAI4L,EAAe,MAAMK,EAAO,eAAe,SAASA,EAAO,QAAQJ,CAAI,CAAC,EAC5E,MAAMI,EAAO,eAAe,SAASA,EAAO,QAAQD,CAAO,EAAGJ,EAAc,EAAK,EACjFK,EAAO,cAAa,CACrB,CAAA,GACF,CACD,WAAWJ,EAAM,CACf,IAAIK,EAAS,KACb,OAAOlM,EAAkB,WAAa,CACpC,MAAMkM,EAAO,eAAe,WAAWA,EAAO,QAAQL,CAAI,CAAC,EAC3DK,EAAO,cAAa,CACrB,CAAA,GACF,CACD,SAASL,EAAMG,EAAS,CACtB,IAAIG,EAAS,KACb,OAAOnM,EAAkB,WAAa,CACpC,MAAMmM,EAAO,eAAe,SAASA,EAAO,QAAQN,CAAI,EAAGM,EAAO,QAAQH,CAAO,CAAC,EAClFG,EAAO,cAAa,CACrB,CAAA,GACF,CACD,KAAKN,EAAM,CACT,IAAIO,EAAS,KACb,OAAOpM,EAAkB,WAAa,CACpC,IAAIqM,EAAW,MAAMD,EAAO,eAAe,UAAUA,EAAO,QAAQ1C,EAAU,QAAQmC,CAAI,CAAC,EAAGnC,EAAU,YAAYmC,CAAI,CAAC,EACzH,GAAIQ,EAAS,SAAW,EACtB,MAAM,IAAIC,GAEZ,GAAID,EAAS,OAAS,EACpBjY,MAAAA,GAAI,MAAM,0DAA2DiY,CAAQ,EACvE,IAAI,MAAM,mCAAmC,EAErD,IAAIE,EAAcF,EAAS,CAAC,EAC5B,GAAI,CAACG,GAAWD,EAAY,IAAI,EAC9B,MAAM,IAAI,MAAM,yBAAyB,OAAOA,EAAY,IAAI,CAAC,EAEnE,MAAO,CACL,SAAUH,EAAO,WAAWG,EAAY,QAAQ,EAChD,SAAUA,EAAY,SACtB,GAAIH,EAAO,WAAWG,EAAY,QAAQ,EAC1C,KAAMA,EAAY,IAC1B,CACK,CAAA,GACF,CACH,CACA1a,EAAgB2Z,GAAiB,mBAAoB,GAAG,EC3HxD,SAAS/L,GAAmBC,EAAKC,EAASC,EAAQC,EAAOC,EAAQvP,EAAK0B,EAAK,CAAE,GAAI,CAAE,IAAI8N,EAAOL,EAAInP,CAAG,EAAE0B,CAAG,EAAOF,EAAQgO,EAAK,YAAgBjK,EAAO,CAAE8J,EAAO9J,CAAK,EAAG,MAAS,CAAKiK,EAAK,KAAQJ,EAAQ5N,CAAK,EAAY,QAAQ,QAAQA,CAAK,EAAE,KAAK8N,EAAOC,CAAM,CAAM,CACzQ,SAASE,GAAkBC,EAAI,CAAE,OAAO,UAAY,CAAE,IAAIC,EAAO,KAAMC,EAAO,UAAW,OAAO,IAAI,QAAQ,SAAUR,EAASC,EAAQ,CAAE,IAAIF,EAAMO,EAAG,MAAMC,EAAMC,CAAI,EAAG,SAASN,EAAM9N,EAAO,CAAE0N,GAAmBC,EAAKC,EAASC,EAAQC,EAAOC,EAAQ,OAAQ/N,CAAK,CAAI,CAAC,SAAS+N,EAAOM,EAAK,CAAEX,GAAmBC,EAAKC,EAASC,EAAQC,EAAOC,EAAQ,QAASM,CAAG,EAAKP,EAAM,MAAS,EAAI,CAAI,CAAG,CACrY,SAAShO,GAAgBC,EAAKvB,EAAKwB,EAAO,CAAE,OAAAxB,EAAMyB,GAAezB,CAAG,EAAOA,KAAOuB,EAAO,OAAO,eAAeA,EAAKvB,EAAK,CAAE,MAAOwB,EAAO,WAAY,GAAM,aAAc,GAAM,SAAU,EAAM,CAAA,EAAYD,EAAIvB,CAAG,EAAIwB,EAAgBD,CAAM,CAC5O,SAASE,GAAeC,EAAK,CAAE,IAAI1B,EAAM2B,GAAaD,EAAK,QAAQ,EAAG,OAAO,OAAO1B,GAAQ,SAAWA,EAAM,OAAOA,CAAG,CAAI,CAC3H,SAAS2B,GAAaC,EAAOC,EAAM,CAAE,GAAI,OAAOD,GAAU,UAAYA,IAAU,KAAM,OAAOA,EAAO,IAAIE,EAAOF,EAAM,OAAO,WAAW,EAAG,GAAIE,IAAS,OAAW,CAAE,IAAIC,EAAMD,EAAK,KAAKF,EAAOC,GAAQ,SAAS,EAAG,GAAI,OAAOE,GAAQ,SAAU,OAAOA,EAAK,MAAM,IAAI,UAAU,8CAA8C,CAAI,CAAC,OAAQF,IAAS,SAAW,OAAS,QAAQD,CAAK,CAAI,CAClX,MAAMsa,EAAkB,CAM7B,YAAYpD,EAAgB,CAC1B,IAAIE,EAAO,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,GAC/E1X,GAAgB,KAAM,iBAAkB,MAAM,EAC9CA,GAAgB,KAAM,OAAQ,MAAM,EACpC,KAAK,eAAiBwX,EACtB,KAAK,KAAOE,CACb,CACD,YAAa,CACX,IAAIuB,EAAQ,KACZ,OAAO9K,GAAkB,WAAa,CACpC,IAAI0M,EAAQ,MAAM5B,EAAM,eAAe,UAAUA,EAAM,KAAM,QAAQ,EACrE,OAAO4B,EAAM,IAAIzB,GAAQA,EAAK,QAAQ,CACvC,CAAA,GACF,CACD,UAAUY,EAAM,CACd,IAAIH,EAAS,KACb,OAAO1L,GAAkB,WAAa,CACpC,IAAI4L,EAAe,MAAMF,EAAO,eAAe,SAAS,GAAG,OAAOA,EAAO,KAAM,GAAG,EAAE,OAAOG,CAAI,CAAC,EAC5FE,EAAU,MAAMH,EAAa,OACjC,OAAO,KAAK,MAAMG,CAAO,CAC1B,CAAA,GACF,CACH,CC7BO,SAASY,GAAW3H,EAAQ,CACjC,OAAOA,EAAO,UAAY,CAC5B,CACO,SAAS4H,GAAW5H,EAAQ,CACjC,OAAO,MAAM,QAAQA,CAAM,CAC7B,CCTA,SAASvF,GAAmBC,EAAKC,EAASC,EAAQC,EAAOC,EAAQvP,EAAK0B,EAAK,CAAE,GAAI,CAAE,IAAI8N,EAAOL,EAAInP,CAAG,EAAE0B,CAAG,EAAOF,EAAQgO,EAAK,YAAgBjK,EAAO,CAAE8J,EAAO9J,CAAK,EAAG,MAAS,CAAKiK,EAAK,KAAQJ,EAAQ5N,CAAK,EAAY,QAAQ,QAAQA,CAAK,EAAE,KAAK8N,EAAOC,CAAM,CAAM,CACzQ,SAASE,GAAkBC,EAAI,CAAE,OAAO,UAAY,CAAE,IAAIC,EAAO,KAAMC,EAAO,UAAW,OAAO,IAAI,QAAQ,SAAUR,EAASC,EAAQ,CAAE,IAAIF,EAAMO,EAAG,MAAMC,EAAMC,CAAI,EAAG,SAASN,EAAM9N,EAAO,CAAE0N,GAAmBC,EAAKC,EAASC,EAAQC,EAAOC,EAAQ,OAAQ/N,CAAK,CAAI,CAAC,SAAS+N,EAAOM,EAAK,CAAEX,GAAmBC,EAAKC,EAASC,EAAQC,EAAOC,EAAQ,QAASM,CAAG,EAAKP,EAAM,MAAS,EAAI,CAAI,CAAG,CAIrY,IAAIzL,EAAMC,EAAI,OAAO,iBAAiB,EAC3BwY,GAAwB,CACjC,aAAc,CAAC,CACb,KAAM,SACN,QAAS,CAAC,CACR,KAAM,MACN,OAAQ,GAER,QAAS,CAAC,CACR,KAAM,QACN,QAAS,CAAC,CACR,KAAM,kBACN,UAAWC,GAAa,UACxB,MAAOA,GAAa,MACpB,WAAY,EACtB,EAAW,CACD,KAAM,kBACN,UAAWC,GAAS,UACpB,MAAOA,GAAS,MAChB,WAAY,EACtB,CAAS,CACT,EAAS,CACD,KAAM,QACN,MAAO,GACP,QAAS,CAAC,CACR,KAAM,kBACN,UAAWC,GAAoB,UAC/B,MAAOA,GAAoB,MAC3B,WAAY,EACtB,EAAW,CACD,KAAM,kBACN,UAAWC,GAAkB,UAC7B,MAAOA,GAAkB,MACzB,WAAY,EACtB,CAAS,CACT,CAAO,CACP,EAAO,CACD,KAAM,MACN,QAAS,CAAC,CACR,KAAM,QACN,MAAO,YACP,QAAS,CAAE,CACnB,CAAO,CACP,CAAK,CACL,CAAG,EACD,MAAO,CAAE,EACT,WAAY,CAAE,EACd,QAAS,CACX,EACWC,GAAmC,CAC5C,aAAc,CAAE,EAChB,MAAO,CAAE,EACT,WAAY,CAAE,EACd,QAAS,CACX,EACO,SAASC,GAAgBnI,EAAQ,CACtC,GAAI2H,GAAW3H,CAAM,EACnB,OAAOA,EAET,GAAI4H,GAAW5H,CAAM,EAAG,CACtB,IAAIb,EAAea,EACnB,MAAO,CACL,aAAAb,EACA,MAAO,CAAE,EACT,WAAY,CAAE,EACd,QAAS,CACf,CACG,CACD,MAAM,IAAI,MAAM,oCAAoC,OAAOa,CAAM,CAAC,CACpE,CAQO,SAASoI,GAAiB5L,EAAI,CACnC,OAAO6L,GAAkB,MAAM,KAAM,SAAS,CAChD,CACA,SAASA,IAAoB,CAC3B,OAAAA,GAAoBrN,GAAkB,UAAWsN,EAAe,CAC9D,IAAIC,EAAqB,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,GAC7F,GAAI,CACF,IAAIC,EAAU,MAAMF,EAAc,aAClC,GAAIE,EAAQ,OAAS,EACnB,GAAI,CAEF,IAAIxI,EAAS,MAAMsI,EAAc,UAAUE,EAAQ,CAAC,CAAC,EACrD,OAAOL,GAAgBnI,CAAM,CAC9B,OAAQ5E,EAAK,CACZhM,EAAI,MAAM,wBAAyBoZ,EAAQ,CAAC,EAAG,IAAKpN,CAAG,EACvDhM,EAAI,KAAK,wDAAwD,CAClE,CAEJ,OAAQgM,EAAK,CACZhM,EAAI,MAAM,8BAA+BgM,CAAG,EAC5ChM,EAAI,KAAK,gCAAgC,CAC1C,CAED,OAAOmZ,EAAqBV,GAAwBK,EACxD,CAAG,EACMG,GAAkB,MAAM,KAAM,SAAS,CAChD,CACO,SAASI,GAAa1L,EAAM,CACjC,GAAI,CACF,WAAA2L,EACA,aAAAvJ,EACA,MAAAwJ,EACA,cAAAC,CACD,EAAG7L,EACA8L,EAAiB,CACnB,WAAAH,EACA,aAAAvJ,EACA,MAAAwJ,EACA,cAAAC,EACA,QAAS,CACb,EACE,OAAOC,CACT,CACA,MAAeC,GAAA,CACb,aAAAL,GACA,iBAAAL,GACA,gBAAAD,EACF,ECjIA,SAAS1N,GAAmBC,EAAKC,EAASC,EAAQC,EAAOC,EAAQvP,EAAK0B,EAAK,CAAE,GAAI,CAAE,IAAI8N,EAAOL,EAAInP,CAAG,EAAE0B,CAAG,EAAOF,EAAQgO,EAAK,YAAgBjK,EAAO,CAAE8J,EAAO9J,CAAK,EAAG,MAAS,CAAKiK,EAAK,KAAQJ,EAAQ5N,CAAK,EAAY,QAAQ,QAAQA,CAAK,EAAE,KAAK8N,EAAOC,CAAM,CAAM,CACzQ,SAASE,EAAkBC,EAAI,CAAE,OAAO,UAAY,CAAE,IAAIC,EAAO,KAAMC,EAAO,UAAW,OAAO,IAAI,QAAQ,SAAUR,EAASC,EAAQ,CAAE,IAAIF,EAAMO,EAAG,MAAMC,EAAMC,CAAI,EAAG,SAASN,EAAM9N,EAAO,CAAE0N,GAAmBC,EAAKC,EAASC,EAAQC,EAAOC,EAAQ,OAAQ/N,CAAK,CAAI,CAAC,SAAS+N,EAAOM,EAAK,CAAEX,GAAmBC,EAAKC,EAASC,EAAQC,EAAOC,EAAQ,QAASM,CAAG,EAAKP,EAAM,MAAS,EAAI,CAAI,CAAG,CACrY,SAAShO,GAAgBC,EAAKvB,EAAKwB,EAAO,CAAE,OAAAxB,EAAMyB,GAAezB,CAAG,EAAOA,KAAOuB,EAAO,OAAO,eAAeA,EAAKvB,EAAK,CAAE,MAAOwB,EAAO,WAAY,GAAM,aAAc,GAAM,SAAU,EAAM,CAAA,EAAYD,EAAIvB,CAAG,EAAIwB,EAAgBD,CAAM,CAC5O,SAASE,GAAeC,EAAK,CAAE,IAAI1B,EAAM2B,GAAaD,EAAK,QAAQ,EAAG,OAAO,OAAO1B,GAAQ,SAAWA,EAAM,OAAOA,CAAG,CAAI,CAC3H,SAAS2B,GAAaC,EAAOC,EAAM,CAAE,GAAI,OAAOD,GAAU,UAAYA,IAAU,KAAM,OAAOA,EAAO,IAAIE,EAAOF,EAAM,OAAO,WAAW,EAAG,GAAIE,IAAS,OAAW,CAAE,IAAIC,EAAMD,EAAK,KAAKF,EAAOC,GAAQ,SAAS,EAAG,GAAI,OAAOE,GAAQ,SAAU,OAAOA,EAAK,MAAM,IAAI,UAAU,8CAA8C,CAAI,CAAC,OAAQF,IAAS,SAAW,OAAS,QAAQD,CAAK,CAAI,CAIzX,IAAIiC,GAAMC,EAAI,OAAO,uBAAuB,EAKrC,MAAM0Z,CAAsB,CACjC,OAAO,uBAAuBC,EAAoBzd,EAAK,CACrD,IAAI0d,EAAuBC,EAC3B,IAAKF,GAAuB,OAAkDC,EAAwBD,EAAmB,IAAIzd,CAAG,KAAO,MAAQ0d,IAA0B,OAArG,OAAuHA,EAAsB,YAAa,KAAM,OAClO,MAAO,GAET,IAAKD,GAAuB,OAAkDE,EAAyBF,EAAmB,IAAIzd,CAAG,KAAO,MAAQ2d,IAA2B,OAAvG,OAAyHA,EAAuB,YAAa,KAAM,QACrO,MAAO,EAGV,CACD,OAAO,6BAA6BF,EAAoB,CAiDtD,QAhDIG,EAAW,CACb,sBAAuBC,GAAwB,+BAC/C,UAAW,CAAE,EACb,SAAUA,GAAwB,qBAClC,aAAc,GACd,eAAgB,GAChB,wBAAyB,GACzB,4BAA6B,CAC3B,oBAAqBC,GAAuB,qBAC7C,EACD,4BAA6B,CAC3B,oBAAqBC,GAAuB,qBAC7C,EACD,yBAA0B,GAC1B,iBAAkB,GAClB,gBAAiB,GACjB,qBAAsB,GACtB,wBAAyB,CACvB,iBAAkB,EACnB,EACD,MAAO,GACP,cAAe,GACf,YAAa,SACnB,EACQC,EAAiB,CACnB,sBAAuBP,GAAuB,KAAwC,OAASA,EAAmB,IAAI,gBAAgB,EACtI,UAAW,CAAE,EACb,SAAUA,GAAuB,KAAwC,OAASA,EAAmB,IAAI,UAAU,EACnH,aAAcD,EAAsB,uBAAuBC,EAAoB,cAAc,EAC7F,eAAgBD,EAAsB,uBAAuBC,EAAoB,gBAAgB,EACjG,wBAAyBD,EAAsB,uBAAuBC,EAAoB,yBAAyB,EACnH,6BAA8BA,GAAuB,KAAwC,OAASA,EAAmB,IAAI,eAAe,KAAO,OAAY,CAC7J,oBAAqBA,GAAuB,KAAwC,OAASA,EAAmB,IAAI,eAAe,CAC3I,EAAU,OACJ,6BAA8BA,GAAuB,KAAwC,OAASA,EAAmB,IAAI,eAAe,KAAO,OAAY,CAC7J,oBAAqBA,GAAuB,KAAwC,OAASA,EAAmB,IAAI,eAAe,CAC3I,EAAU,OACJ,yBAA0BD,EAAsB,uBAAuBC,EAAoB,0BAA0B,EACrH,iBAAkBD,EAAsB,uBAAuBC,EAAoB,kBAAkB,EACrG,gBAAiBD,EAAsB,uBAAuBC,EAAoB,iBAAiB,EACnG,qBAAsBD,EAAsB,uBAAuBC,EAAoB,sBAAsB,EAC7G,yBAA0BA,GAAuB,KAAwC,OAASA,EAAmB,IAAI,kBAAkB,KAAO,OAAY,CAC5J,iBAAkBD,EAAsB,uBAAuBC,EAAoB,kBAAkB,CAC7G,EAAU,OACJ,MAAOD,EAAsB,uBAAuBC,EAAoB,WAAW,EACnF,cAAeD,EAAsB,uBAAuBC,EAAoB,oBAAoB,CAC1G,EACQ1c,EAAO,OAAO,KAAKid,CAAc,EAC5B5c,EAAI,EAAGA,EAAIL,EAAK,OAAQK,GAAK,EAAG,CACvC,IAAIpB,EAAMe,EAAKK,CAAC,EACZ4c,EAAehe,CAAG,IAAM,SAE1B4d,EAAS5d,CAAG,EAAIge,EAAehe,CAAG,EAErC,CACD,OAAO4d,CACR,CACD,OAAO,kBAAkBb,EAAetY,EAAS,CAC/C,OAAOgL,EAAkB,WAAa,CACpC,GAAI,CACF,WAAA0N,EACA,MAAAC,EACA,aAAAxJ,EACA,cAAAyJ,EAAgB,CAAE,CACnB,EAAG,MAAME,GAAgB,iBAAiBR,EAAetY,GAAY,KAA6B,OAASA,EAAQ,kBAAkB,EACtI,MAAO,CACL,SAAU,CAAE,EACZ,aAAAmP,EACA,OAAQ,CAAC,CAAA,CAAE,EACX,MAAAwJ,EACA,WAAAD,EACA,cAAAE,CACR,CACK,CAAA,GACF,CACD,OAAO,qBAAqBN,EAAetY,EAAS,CAClD,OAAOgL,EAAkB,WAAa,CACpC,MAAO,CACL,KAAM,MAAM+N,EAAsB,kBAAkBT,EAAetY,CAAO,CAClF,CACK,CAAA,GACF,CACD,YAAYsY,EAAe,CACzBzb,GAAgB,KAAM,gBAAiB,MAAM,EAC7C,KAAK,cAAgByb,CACtB,CAGD,KAAKtY,EAAS,CACZ,IAAI8V,EAAQ,KACZ,OAAO9K,EAAkB,WAAa,CACpC,GAAI,CACF,IAAIwO,EACAC,EAAY,KAAK,OAAOD,EAAwB,aAAa,QAAQT,EAAsB,WAAW,KAAO,MAAQS,IAA0B,OAASA,EAAwB,EAAE,EACtL,OAAOC,CACR,MAAW,CACV,OAAAra,GAAI,KAAK,6DAA6D,EAC/D2Z,EAAsB,qBAAqBjD,EAAM,cAAe9V,CAAO,CAC/E,CACF,CAAA,GACF,CAGD,KAAKyZ,EAAW,CACd,OAAOzO,EAAkB,WAAa,CACpC,oBAAa,QAAQ+N,EAAsB,YAAa,KAAK,UAAUU,CAAS,CAAC,EAC1EA,CACR,CAAA,GACF,CACH,CACA5c,GAAgBkc,EAAuB,cAAe,4BAA4B"}