jqtree 1.6.3 → 1.7.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 (64) hide show
  1. package/.github/workflows/ci.yml +21 -19
  2. package/.tool-versions +1 -0
  3. package/README.md +1 -1
  4. package/bower.json +10 -3
  5. package/config/production +2 -2
  6. package/config/{rollup.config.js → rollup.config.mjs} +3 -8
  7. package/docs/Gemfile.lock +3 -3
  8. package/docs/_config.yml +1 -1
  9. package/docs/_entries/10_changelog.md +9 -0
  10. package/docs/_entries/93_getnextnode.md +4 -1
  11. package/docs/_entries/{95_getpreviousnode.md → 95_getnextvisiblenode.md} +1 -1
  12. package/docs/_entries/96_getpreviousnode.md +0 -0
  13. package/docs/_entries/{96_getprevioussibling.md → 97_getprevioussibling.md} +0 -0
  14. package/docs/_entries/98_getpreviousvisiblenode.md +14 -0
  15. package/docs/_entries/{97_parent.md → 99_parent.md} +0 -0
  16. package/docs/package.json +7 -7
  17. package/docs/pnpm-lock.yaml +138 -108
  18. package/docs/static/bower.json +1 -1
  19. package/docs/static/bower_components/jquery/dist/jquery.js +209 -97
  20. package/docs/static/bower_components/jquery/dist/jquery.min.js +2 -2
  21. package/docs/static/documentation.css +224 -84
  22. package/docs/static/example.css +0 -1
  23. package/docs/tree.jquery.js +2 -2
  24. package/lib/dataLoader.js +5 -31
  25. package/lib/dragAndDropHandler.js +19 -132
  26. package/lib/elementsRenderer.js +29 -59
  27. package/lib/keyHandler.js +8 -32
  28. package/lib/mouse.widget.js +13 -74
  29. package/lib/node.js +60 -125
  30. package/lib/nodeElement.js +5 -72
  31. package/lib/playwright/coverage.js +58 -97
  32. package/lib/playwright/playwright.test.js +148 -210
  33. package/lib/playwright/testUtils.js +116 -182
  34. package/lib/saveStateHandler.js +12 -61
  35. package/lib/scrollHandler.js +17 -74
  36. package/lib/selectNodeHandler.js +5 -24
  37. package/lib/simple.widget.js +18 -53
  38. package/lib/test/jqTree/create.test.js +0 -4
  39. package/lib/test/jqTree/events.test.js +0 -7
  40. package/lib/test/jqTree/keyboard.test.js +0 -6
  41. package/lib/test/jqTree/loadOnDemand.test.js +84 -121
  42. package/lib/test/jqTree/methods.test.js +107 -150
  43. package/lib/test/jqTree/options.test.js +32 -54
  44. package/lib/test/node.test.js +127 -72
  45. package/lib/test/nodeUtil.test.js +0 -1
  46. package/lib/test/support/jqTreeMatchers.js +4 -9
  47. package/lib/test/support/setupTests.js +0 -4
  48. package/lib/test/support/testUtil.js +2 -11
  49. package/lib/test/support/treeStructure.js +0 -6
  50. package/lib/test/util.test.js +0 -1
  51. package/lib/tree.jquery.js +28 -239
  52. package/lib/util.js +0 -6
  53. package/lib/version.js +1 -1
  54. package/package.json +40 -39
  55. package/src/keyHandler.ts +3 -3
  56. package/src/node.ts +43 -12
  57. package/src/test/.eslintrc +3 -1
  58. package/src/test/node.test.ts +146 -54
  59. package/src/tree.jquery.ts +6 -5
  60. package/src/version.ts +1 -1
  61. package/tree.jquery.debug.js +202 -855
  62. package/tree.jquery.debug.js.map +1 -1
  63. package/tree.jquery.js +2 -2
  64. package/tree.jquery.js.map +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"tree.jquery.debug.js","sources":["src/version.ts","src/node.ts","src/dragAndDropHandler.ts","src/util.ts","src/elementsRenderer.ts","src/dataLoader.ts","src/keyHandler.ts","src/simple.widget.ts","src/mouse.widget.ts","src/saveStateHandler.ts","src/scrollHandler.ts","src/selectNodeHandler.ts","src/nodeElement.ts","src/tree.jquery.ts"],"sourcesContent":["const version = \"1.6.2\";\n\nexport default version;\n","interface NodeRecordWithChildren extends NodeRecord {\n children: NodeData[];\n}\n\nexport enum Position {\n Before = 1,\n After,\n Inside,\n None,\n}\n\nconst positionNames: Record<string, Position> = {\n before: Position.Before,\n after: Position.After,\n inside: Position.Inside,\n none: Position.None,\n};\n\ntype IterateCallback = (node: Node, level: number) => boolean;\n\nexport const getPositionName = (position: Position): string => {\n for (const name in positionNames) {\n if (Object.prototype.hasOwnProperty.call(positionNames, name)) {\n if (positionNames[name] === position) {\n return name;\n }\n }\n }\n\n return \"\";\n};\n\nexport const getPosition = (name: string): Position | undefined =>\n positionNames[name];\n\nconst isNodeRecordWithChildren = (\n data: NodeData\n): data is NodeRecordWithChildren =>\n typeof data === \"object\" &&\n \"children\" in data &&\n data[\"children\"] instanceof Array;\n\nexport class Node implements INode {\n public id?: NodeId;\n public name: string;\n public children: Node[];\n public parent: Node | null;\n public idMapping: Map<NodeId, Node>;\n public tree?: Node;\n public nodeClass?: typeof Node;\n public load_on_demand: boolean;\n public is_open: boolean;\n public element: HTMLElement;\n public is_loading: boolean;\n public isEmptyFolder: boolean;\n\n [key: string]: unknown;\n\n constructor(o: NodeData | null = null, isRoot = false, nodeClass = Node) {\n this.name = \"\";\n this.isEmptyFolder = false;\n this.load_on_demand = false;\n\n this.setData(o);\n\n this.children = [];\n this.parent = null;\n\n if (isRoot) {\n this.idMapping = new Map<NodeId, Node>();\n this.tree = this;\n this.nodeClass = nodeClass;\n }\n }\n\n /*\n Set the data of this node.\n\n setData(string): set the name of the node\n setdata(object): set attributes of the node\n\n Examples:\n setdata('node1')\n\n setData({ name: 'node1', id: 1});\n\n setData({ name: 'node2', id: 2, color: 'green'});\n\n * This is an internal function; it is not in the docs\n * Does not remove existing node values\n */\n public setData(o: NodeData | null): void {\n if (!o) {\n return;\n } else if (typeof o === \"string\") {\n this.name = o;\n } else if (typeof o === \"object\") {\n for (const key in o) {\n if (Object.prototype.hasOwnProperty.call(o, key)) {\n const value = o[key];\n\n if (key === \"label\" || key === \"name\") {\n // You can use the 'label' key instead of 'name'; this is a legacy feature\n if (typeof value === \"string\") {\n this.name = value;\n }\n } else if (key !== \"children\" && key !== \"parent\") {\n // You can't update the children or the parent using this function\n this[key] = value;\n }\n }\n }\n }\n }\n\n /*\n Create tree from data.\n\n Structure of data is:\n [\n {\n name: 'node1',\n children: [\n { name: 'child1' },\n { name: 'child2' }\n ]\n },\n {\n name: 'node2'\n }\n ]\n */\n public loadFromData(data: NodeData[]): Node {\n this.removeChildren();\n\n for (const o of data) {\n const node = this.createNode(o);\n this.addChild(node);\n\n if (isNodeRecordWithChildren(o)) {\n if (o.children.length === 0) {\n node.isEmptyFolder = true;\n } else {\n node.loadFromData(o.children);\n }\n }\n }\n\n return this;\n }\n\n /*\n Add child.\n\n tree.addChild(\n new Node('child1')\n );\n */\n public addChild(node: Node): void {\n this.children.push(node);\n node.setParent(this);\n }\n\n /*\n Add child at position. Index starts at 0.\n\n tree.addChildAtPosition(\n new Node('abc'),\n 1\n );\n */\n public addChildAtPosition(node: Node, index: number): void {\n this.children.splice(index, 0, node);\n node.setParent(this);\n }\n\n /*\n Remove child. This also removes the children of the node.\n\n tree.removeChild(tree.children[0]);\n */\n public removeChild(node: Node): void {\n // remove children from the index\n node.removeChildren();\n\n this.doRemoveChild(node);\n }\n\n /*\n Get child index.\n\n var index = getChildIndex(node);\n */\n public getChildIndex(node: Node): number {\n return this.children.indexOf(node);\n }\n\n /*\n Does the tree have children?\n\n if (tree.hasChildren()) {\n //\n }\n */\n public hasChildren(): boolean {\n return this.children.length !== 0;\n }\n\n public isFolder(): boolean {\n return this.hasChildren() || this.load_on_demand;\n }\n\n /*\n Iterate over all the nodes in the tree.\n\n Calls callback with (node, level).\n\n The callback must return true to continue the iteration on current node.\n\n tree.iterate(\n function(node, level) {\n console.log(node.name);\n\n // stop iteration after level 2\n return (level <= 2);\n }\n );\n\n */\n public iterate(callback: IterateCallback): void {\n const _iterate = (node: Node, level: number): void => {\n if (node.children) {\n for (const child of node.children) {\n const result = callback(child, level);\n\n if (result && child.hasChildren()) {\n _iterate(child, level + 1);\n }\n }\n }\n };\n\n _iterate(this, 0);\n }\n\n /*\n Move node relative to another node.\n\n Argument position: Position.BEFORE, Position.AFTER or Position.Inside\n\n // move node1 after node2\n tree.moveNode(node1, node2, Position.AFTER);\n */\n public moveNode(\n movedNode: Node,\n targetNode: Node,\n position: Position\n ): boolean {\n if (!movedNode.parent || movedNode.isParentOf(targetNode)) {\n // - Node is parent of target node\n // - Or, parent is empty\n return false;\n } else {\n movedNode.parent.doRemoveChild(movedNode);\n\n switch (position) {\n case Position.After: {\n if (targetNode.parent) {\n targetNode.parent.addChildAtPosition(\n movedNode,\n targetNode.parent.getChildIndex(targetNode) + 1\n );\n return true;\n }\n return false;\n }\n\n case Position.Before: {\n if (targetNode.parent) {\n targetNode.parent.addChildAtPosition(\n movedNode,\n targetNode.parent.getChildIndex(targetNode)\n );\n return true;\n }\n return false;\n }\n\n case Position.Inside: {\n // move inside as first child\n targetNode.addChildAtPosition(movedNode, 0);\n return true;\n }\n\n default:\n return false;\n }\n }\n }\n\n /*\n Get the tree as data.\n */\n public getData(includeParent = false): NodeRecord[] {\n const getDataFromNodes = (nodes: Node[]): Record<string, unknown>[] => {\n return nodes.map((node) => {\n const tmpNode: Record<string, unknown> = {};\n\n for (const k in node) {\n if (\n [\n \"parent\",\n \"children\",\n \"element\",\n \"idMapping\",\n \"load_on_demand\",\n \"nodeClass\",\n \"tree\",\n \"isEmptyFolder\",\n ].indexOf(k) === -1 &&\n Object.prototype.hasOwnProperty.call(node, k)\n ) {\n const v = node[k];\n tmpNode[k] = v;\n }\n }\n\n if (node.hasChildren()) {\n tmpNode[\"children\"] = getDataFromNodes(node.children);\n }\n\n return tmpNode;\n });\n };\n\n if (includeParent) {\n return getDataFromNodes([this]);\n } else {\n return getDataFromNodes(this.children);\n }\n }\n\n public getNodeByName(name: string): Node | null {\n return this.getNodeByCallback((node: Node) => node.name === name);\n }\n\n public getNodeByNameMustExist(name: string): Node {\n const node = this.getNodeByCallback((n: Node) => n.name === name);\n\n if (!node) {\n throw `Node with name ${name} not found`;\n }\n\n return node;\n }\n\n public getNodeByCallback(callback: (node: Node) => boolean): Node | null {\n let result: Node | null = null;\n\n this.iterate((node: Node) => {\n if (result) {\n return false;\n } else if (callback(node)) {\n result = node;\n return false;\n } else {\n return true;\n }\n });\n\n return result;\n }\n\n public addAfter(nodeInfo: NodeData): Node | null {\n if (!this.parent) {\n return null;\n } else {\n const node = this.createNode(nodeInfo);\n\n const childIndex = this.parent.getChildIndex(this);\n this.parent.addChildAtPosition(node, childIndex + 1);\n\n if (\n isNodeRecordWithChildren(nodeInfo) &&\n nodeInfo.children.length\n ) {\n node.loadFromData(nodeInfo.children);\n }\n\n return node;\n }\n }\n\n public addBefore(nodeInfo: NodeData): Node | null {\n if (!this.parent) {\n return null;\n } else {\n const node = this.createNode(nodeInfo);\n\n const childIndex = this.parent.getChildIndex(this);\n this.parent.addChildAtPosition(node, childIndex);\n\n if (\n isNodeRecordWithChildren(nodeInfo) &&\n nodeInfo.children.length\n ) {\n node.loadFromData(nodeInfo.children);\n }\n\n return node;\n }\n }\n\n public addParent(nodeInfo: NodeData): Node | null {\n if (!this.parent) {\n return null;\n } else {\n const newParent = this.createNode(nodeInfo);\n\n if (this.tree) {\n newParent.setParent(this.tree);\n }\n const originalParent = this.parent;\n\n for (const child of originalParent.children) {\n newParent.addChild(child);\n }\n\n originalParent.children = [];\n originalParent.addChild(newParent);\n return newParent;\n }\n }\n\n public remove(): void {\n if (this.parent) {\n this.parent.removeChild(this);\n this.parent = null;\n }\n }\n\n public append(nodeInfo: NodeData): Node {\n const node = this.createNode(nodeInfo);\n this.addChild(node);\n\n if (isNodeRecordWithChildren(nodeInfo) && nodeInfo.children.length) {\n node.loadFromData(nodeInfo.children);\n }\n\n return node;\n }\n\n public prepend(nodeInfo: NodeData): Node {\n const node = this.createNode(nodeInfo);\n this.addChildAtPosition(node, 0);\n\n if (isNodeRecordWithChildren(nodeInfo) && nodeInfo.children.length) {\n node.loadFromData(nodeInfo.children);\n }\n\n return node;\n }\n\n public isParentOf(node: Node): boolean {\n let parent = node.parent;\n\n while (parent) {\n if (parent === this) {\n return true;\n }\n\n parent = parent.parent;\n }\n\n return false;\n }\n\n public getLevel(): number {\n let level = 0;\n let node: Node = this; // eslint-disable-line @typescript-eslint/no-this-alias\n\n while (node.parent) {\n level += 1;\n node = node.parent;\n }\n\n return level;\n }\n\n public getNodeById(nodeId: NodeId): Node | null {\n return this.idMapping.get(nodeId) || null;\n }\n\n public addNodeToIndex(node: Node): void {\n if (node.id != null) {\n this.idMapping.set(node.id, node);\n }\n }\n\n public removeNodeFromIndex(node: Node): void {\n if (node.id != null) {\n this.idMapping.delete(node.id);\n }\n }\n\n public removeChildren(): void {\n this.iterate((child: Node) => {\n this.tree?.removeNodeFromIndex(child);\n return true;\n });\n\n this.children = [];\n }\n\n public getPreviousSibling(): Node | null {\n if (!this.parent) {\n return null;\n } else {\n const previousIndex = this.parent.getChildIndex(this) - 1;\n if (previousIndex >= 0) {\n return this.parent.children[previousIndex];\n } else {\n return null;\n }\n }\n }\n\n public getNextSibling(): Node | null {\n if (!this.parent) {\n return null;\n } else {\n const nextIndex = this.parent.getChildIndex(this) + 1;\n if (nextIndex < this.parent.children.length) {\n return this.parent.children[nextIndex];\n } else {\n return null;\n }\n }\n }\n\n public getNodesByProperty(key: string, value: unknown): Node[] {\n return this.filter((node: Node) => node[key] === value);\n }\n\n public filter(f: (node: Node) => boolean): Node[] {\n const result: Node[] = [];\n\n this.iterate((node: Node) => {\n if (f(node)) {\n result.push(node);\n }\n\n return true;\n });\n\n return result;\n }\n\n public getNextNode(includeChildren = true): Node | null {\n if (includeChildren && this.hasChildren() && this.is_open) {\n // First child\n return this.children[0];\n } else {\n if (!this.parent) {\n return null;\n } else {\n const nextSibling = this.getNextSibling();\n if (nextSibling) {\n // Next sibling\n return nextSibling;\n } else {\n // Next node of parent\n return this.parent.getNextNode(false);\n }\n }\n }\n }\n\n public getPreviousNode(): Node | null {\n if (!this.parent) {\n return null;\n } else {\n const previousSibling = this.getPreviousSibling();\n if (previousSibling) {\n if (\n !previousSibling.hasChildren() ||\n !previousSibling.is_open\n ) {\n // Previous sibling\n return previousSibling;\n } else {\n // Last child of previous sibling\n return previousSibling.getLastChild();\n }\n } else {\n return this.getParent();\n }\n }\n }\n\n public getParent(): Node | null {\n // Return parent except if it is the root node\n if (!this.parent) {\n return null;\n } else if (!this.parent.parent) {\n // Root node -> null\n return null;\n } else {\n return this.parent;\n }\n }\n\n public getLastChild(): Node | null {\n if (!this.hasChildren()) {\n return null;\n } else {\n const lastChild = this.children[this.children.length - 1];\n if (!(lastChild.hasChildren() && lastChild.is_open)) {\n return lastChild;\n } else {\n return lastChild.getLastChild();\n }\n }\n }\n\n // Init Node from data without making it the root of the tree\n public initFromData(data: NodeData): void {\n const addNode = (nodeData: NodeData): void => {\n this.setData(nodeData);\n\n if (\n isNodeRecordWithChildren(nodeData) &&\n nodeData.children.length\n ) {\n addChildren(nodeData.children);\n }\n };\n\n const addChildren = (childrenData: NodeData[]): void => {\n for (const child of childrenData) {\n const node = this.createNode();\n node.initFromData(child);\n this.addChild(node);\n }\n };\n\n addNode(data);\n }\n\n private setParent(parent: Node): void {\n this.parent = parent;\n this.tree = parent.tree;\n this.tree?.addNodeToIndex(this);\n }\n\n private doRemoveChild(node: Node): void {\n this.children.splice(this.getChildIndex(node), 1);\n this.tree?.removeNodeFromIndex(node);\n }\n\n private getNodeClass(): typeof Node {\n return this.nodeClass || this?.tree?.nodeClass || Node;\n }\n\n private createNode(nodeData?: NodeData): Node {\n const nodeClass = this.getNodeClass();\n return new nodeClass(nodeData);\n }\n}\n","import { getPositionName, Node, Position } from \"./node\";\nimport { DropHint, HitArea, PositionInfo } from \"./types\";\nimport { NodeElement } from \"./nodeElement\";\nimport { JqTreeWidget } from \"./tree.jquery\";\n\ninterface Dimensions {\n left: number;\n top: number;\n right: number;\n bottom: number;\n}\n\nexport class DragAndDropHandler {\n public hitAreas: HitArea[];\n public isDragging: boolean;\n public currentItem: NodeElement | null;\n public hoveredArea: HitArea | null;\n public positionInfo: PositionInfo | null;\n\n private treeWidget: JqTreeWidget;\n private dragElement: DragElement | null;\n private previousGhost: DropHint | null;\n private openFolderTimer: number | null;\n\n constructor(treeWidget: JqTreeWidget) {\n this.treeWidget = treeWidget;\n\n this.hoveredArea = null;\n this.hitAreas = [];\n this.isDragging = false;\n this.currentItem = null;\n this.positionInfo = null;\n }\n\n public mouseCapture(positionInfo: PositionInfo): boolean | null {\n const $element = jQuery(positionInfo.target);\n\n if (!this.mustCaptureElement($element)) {\n return null;\n }\n\n if (\n this.treeWidget.options.onIsMoveHandle &&\n !this.treeWidget.options.onIsMoveHandle($element)\n ) {\n return null;\n }\n\n let nodeElement = this.treeWidget._getNodeElement($element);\n\n if (nodeElement && this.treeWidget.options.onCanMove) {\n if (!this.treeWidget.options.onCanMove(nodeElement.node)) {\n nodeElement = null;\n }\n }\n\n this.currentItem = nodeElement;\n return this.currentItem != null;\n }\n\n public mouseStart(positionInfo: PositionInfo): boolean {\n if (\n !this.currentItem ||\n positionInfo.pageX === undefined ||\n positionInfo.pageY === undefined\n ) {\n return false;\n }\n\n this.refresh();\n\n const offset = jQuery(positionInfo.target).offset();\n const left = offset ? offset.left : 0;\n const top = offset ? offset.top : 0;\n\n const node = this.currentItem.node;\n\n this.dragElement = new DragElement(\n node.name,\n positionInfo.pageX - left,\n positionInfo.pageY - top,\n this.treeWidget.element,\n this.treeWidget.options.autoEscape ?? true\n );\n\n this.isDragging = true;\n this.positionInfo = positionInfo;\n this.currentItem.$element.addClass(\"jqtree-moving\");\n return true;\n }\n\n public mouseDrag(positionInfo: PositionInfo): boolean {\n if (\n !this.currentItem ||\n !this.dragElement ||\n positionInfo.pageX === undefined ||\n positionInfo.pageY === undefined\n ) {\n return false;\n }\n\n this.dragElement.move(positionInfo.pageX, positionInfo.pageY);\n this.positionInfo = positionInfo;\n\n const area = this.findHoveredArea(\n positionInfo.pageX,\n positionInfo.pageY\n );\n\n if (area && this.canMoveToArea(area)) {\n if (!area.node.isFolder()) {\n this.stopOpenFolderTimer();\n }\n\n if (this.hoveredArea !== area) {\n this.hoveredArea = area;\n\n // If this is a closed folder, start timer to open it\n if (this.mustOpenFolderTimer(area)) {\n this.startOpenFolderTimer(area.node);\n } else {\n this.stopOpenFolderTimer();\n }\n\n this.updateDropHint();\n }\n } else {\n this.removeDropHint();\n this.stopOpenFolderTimer();\n this.hoveredArea = area;\n }\n\n if (!area) {\n if (this.treeWidget.options.onDragMove) {\n this.treeWidget.options.onDragMove(\n this.currentItem.node,\n positionInfo.originalEvent\n );\n }\n }\n\n return true;\n }\n\n public mouseStop(positionInfo: PositionInfo): boolean {\n this.moveItem(positionInfo);\n this.clear();\n this.removeHover();\n this.removeDropHint();\n this.removeHitAreas();\n\n const currentItem = this.currentItem;\n\n if (this.currentItem) {\n this.currentItem.$element.removeClass(\"jqtree-moving\");\n this.currentItem = null;\n }\n\n this.isDragging = false;\n this.positionInfo = null;\n\n if (!this.hoveredArea && currentItem) {\n if (this.treeWidget.options.onDragStop) {\n this.treeWidget.options.onDragStop(\n currentItem.node,\n positionInfo.originalEvent\n );\n }\n }\n\n return false;\n }\n\n public refresh(): void {\n this.removeHitAreas();\n\n if (this.currentItem) {\n this.generateHitAreas();\n\n this.currentItem = this.treeWidget._getNodeElementForNode(\n this.currentItem.node\n );\n\n if (this.isDragging) {\n this.currentItem.$element.addClass(\"jqtree-moving\");\n }\n }\n }\n\n private generateHitAreas(): void {\n if (!this.currentItem) {\n this.hitAreas = [];\n } else {\n const hitAreasGenerator = new HitAreasGenerator(\n this.treeWidget.tree,\n this.currentItem.node,\n this.getTreeDimensions().bottom\n );\n this.hitAreas = hitAreasGenerator.generate();\n }\n }\n\n private mustCaptureElement($element: JQuery<HTMLElement>): boolean {\n return !$element.is(\"input,select,textarea\");\n }\n\n private canMoveToArea(area: HitArea): boolean {\n if (!this.treeWidget.options.onCanMoveTo) {\n return true;\n }\n\n if (!this.currentItem) {\n return false;\n }\n\n const positionName = getPositionName(area.position);\n\n return this.treeWidget.options.onCanMoveTo(\n this.currentItem.node,\n area.node,\n positionName\n );\n }\n\n private removeHitAreas(): void {\n this.hitAreas = [];\n }\n\n private clear(): void {\n if (this.dragElement) {\n this.dragElement.remove();\n this.dragElement = null;\n }\n }\n\n private removeDropHint(): void {\n if (this.previousGhost) {\n this.previousGhost.remove();\n }\n }\n\n private removeHover(): void {\n this.hoveredArea = null;\n }\n\n private findHoveredArea(x: number, y: number): HitArea | null {\n const dimensions = this.getTreeDimensions();\n\n if (\n x < dimensions.left ||\n y < dimensions.top ||\n x > dimensions.right ||\n y > dimensions.bottom\n ) {\n return null;\n }\n\n let low = 0;\n let high = this.hitAreas.length;\n while (low < high) {\n const mid = (low + high) >> 1;\n const area = this.hitAreas[mid];\n\n if (y < area.top) {\n high = mid;\n } else if (y > area.bottom) {\n low = mid + 1;\n } else {\n return area;\n }\n }\n\n return null;\n }\n\n private mustOpenFolderTimer(area: HitArea): boolean {\n const node = area.node;\n\n return (\n node.isFolder() &&\n !node.is_open &&\n area.position === Position.Inside\n );\n }\n\n private updateDropHint(): void {\n if (!this.hoveredArea) {\n return;\n }\n\n // remove previous drop hint\n this.removeDropHint();\n\n // add new drop hint\n const nodeElement = this.treeWidget._getNodeElementForNode(\n this.hoveredArea.node\n );\n this.previousGhost = nodeElement.addDropHint(this.hoveredArea.position);\n }\n\n private startOpenFolderTimer(folder: Node): void {\n const openFolder = (): void => {\n this.treeWidget._openNode(\n folder,\n this.treeWidget.options.slide,\n () => {\n this.refresh();\n this.updateDropHint();\n }\n );\n };\n\n this.stopOpenFolderTimer();\n\n const openFolderDelay = this.treeWidget.options.openFolderDelay;\n\n if (openFolderDelay !== false) {\n this.openFolderTimer = window.setTimeout(\n openFolder,\n openFolderDelay\n );\n }\n }\n\n private stopOpenFolderTimer(): void {\n if (this.openFolderTimer) {\n clearTimeout(this.openFolderTimer);\n this.openFolderTimer = null;\n }\n }\n\n private moveItem(positionInfo: PositionInfo): void {\n if (\n this.currentItem &&\n this.hoveredArea &&\n this.hoveredArea.position !== Position.None &&\n this.canMoveToArea(this.hoveredArea)\n ) {\n const movedNode = this.currentItem.node;\n const targetNode = this.hoveredArea.node;\n const position = this.hoveredArea.position;\n const previousParent = movedNode.parent;\n\n if (position === Position.Inside) {\n this.hoveredArea.node.is_open = true;\n }\n\n const doMove = (): void => {\n this.treeWidget.tree.moveNode(movedNode, targetNode, position);\n this.treeWidget.element.empty();\n this.treeWidget._refreshElements(null);\n };\n\n const event = this.treeWidget._triggerEvent(\"tree.move\", {\n move_info: {\n moved_node: movedNode,\n target_node: targetNode,\n position: getPositionName(position),\n previous_parent: previousParent,\n do_move: doMove,\n original_event: positionInfo.originalEvent,\n },\n });\n\n if (!event.isDefaultPrevented()) {\n doMove();\n }\n }\n }\n\n private getTreeDimensions(): Dimensions {\n // Return the dimensions of the tree. Add a margin to the bottom to allow\n // to drag-and-drop after the last element.\n const offset = this.treeWidget.element.offset();\n\n if (!offset) {\n return { left: 0, top: 0, right: 0, bottom: 0 };\n } else {\n const el = this.treeWidget.element;\n const width = el.width() || 0;\n const height = el.height() || 0;\n const left = offset.left + this.treeWidget._getScrollLeft();\n\n return {\n left,\n top: offset.top,\n right: left + width,\n bottom: offset.top + height + 16,\n };\n }\n }\n}\n\nabstract class VisibleNodeIterator {\n private tree: Node;\n\n constructor(tree: Node) {\n this.tree = tree;\n }\n\n protected iterate(): void {\n let isFirstNode = true;\n\n const _iterateNode = (node: Node, nextNode: Node | null): void => {\n let mustIterateInside =\n (node.is_open || !node.element) && node.hasChildren();\n\n let $element: JQuery<HTMLElement> | null = null;\n\n if (node.element) {\n $element = jQuery(node.element);\n\n if (!$element.is(\":visible\")) {\n return;\n }\n\n if (isFirstNode) {\n this.handleFirstNode(node);\n isFirstNode = false;\n }\n\n if (!node.hasChildren()) {\n this.handleNode(node, nextNode, $element);\n } else if (node.is_open) {\n if (!this.handleOpenFolder(node, $element)) {\n mustIterateInside = false;\n }\n } else {\n this.handleClosedFolder(node, nextNode, $element);\n }\n }\n\n if (mustIterateInside) {\n const childrenLength = node.children.length;\n node.children.forEach((_, i) => {\n if (i === childrenLength - 1) {\n _iterateNode(node.children[i], null);\n } else {\n _iterateNode(node.children[i], node.children[i + 1]);\n }\n });\n\n if (node.is_open && $element) {\n this.handleAfterOpenFolder(node, nextNode);\n }\n }\n };\n\n _iterateNode(this.tree, null);\n }\n\n protected abstract handleNode(\n node: Node,\n nextNode: Node | null,\n $element: JQuery\n ): void;\n\n /*\n override\n return\n - true: continue iterating\n - false: stop iterating\n */\n protected abstract handleOpenFolder(node: Node, $element: JQuery): boolean;\n\n protected abstract handleClosedFolder(\n node: Node,\n nextNode: Node | null,\n $element: JQuery\n ): void;\n\n protected abstract handleAfterOpenFolder(\n node: Node,\n nextNode: Node | null\n ): void;\n\n protected abstract handleFirstNode(node: Node): void;\n}\n\nexport class HitAreasGenerator extends VisibleNodeIterator {\n private currentNode: Node;\n private treeBottom: number;\n private positions: HitArea[];\n private lastTop: number;\n\n constructor(tree: Node, currentNode: Node, treeBottom: number) {\n super(tree);\n\n this.currentNode = currentNode;\n this.treeBottom = treeBottom;\n }\n\n public generate(): HitArea[] {\n this.positions = [];\n this.lastTop = 0;\n\n this.iterate();\n\n return this.generateHitAreas(this.positions);\n }\n\n protected generateHitAreas(positions: HitArea[]): HitArea[] {\n let previousTop = -1;\n let group = [];\n const hitAreas: HitArea[] = [];\n\n for (const position of positions) {\n if (position.top !== previousTop && group.length) {\n if (group.length) {\n this.generateHitAreasForGroup(\n hitAreas,\n group,\n previousTop,\n position.top\n );\n }\n\n previousTop = position.top;\n group = [];\n }\n\n group.push(position);\n }\n\n this.generateHitAreasForGroup(\n hitAreas,\n group,\n previousTop,\n this.treeBottom\n );\n\n return hitAreas;\n }\n\n protected handleOpenFolder(node: Node, $element: JQuery): boolean {\n if (node === this.currentNode) {\n // Cannot move inside current item\n // Stop iterating\n return false;\n }\n\n // Cannot move before current item\n if (node.children[0] !== this.currentNode) {\n this.addPosition(node, Position.Inside, this.getTop($element));\n }\n\n // Continue iterating\n return true;\n }\n\n protected handleClosedFolder(\n node: Node,\n nextNode: Node,\n $element: JQuery\n ): void {\n const top = this.getTop($element);\n\n if (node === this.currentNode) {\n // Cannot move after current item\n this.addPosition(node, Position.None, top);\n } else {\n this.addPosition(node, Position.Inside, top);\n\n // Cannot move before current item\n if (nextNode !== this.currentNode) {\n this.addPosition(node, Position.After, top);\n }\n }\n }\n\n protected handleFirstNode(node: Node): void {\n if (node !== this.currentNode) {\n this.addPosition(\n node,\n Position.Before,\n this.getTop(jQuery(node.element))\n );\n }\n }\n\n protected handleAfterOpenFolder(node: Node, nextNode: Node): void {\n if (node === this.currentNode || nextNode === this.currentNode) {\n // Cannot move before or after current item\n this.addPosition(node, Position.None, this.lastTop);\n } else {\n this.addPosition(node, Position.After, this.lastTop);\n }\n }\n\n protected handleNode(node: Node, nextNode: Node, $element: JQuery): void {\n const top = this.getTop($element);\n\n if (node === this.currentNode) {\n // Cannot move inside current item\n this.addPosition(node, Position.None, top);\n } else {\n this.addPosition(node, Position.Inside, top);\n }\n\n if (nextNode === this.currentNode || node === this.currentNode) {\n // Cannot move before or after current item\n this.addPosition(node, Position.None, top);\n } else {\n this.addPosition(node, Position.After, top);\n }\n }\n\n private getTop($element: JQuery<HTMLElement>): number {\n const offset = $element.offset();\n\n return offset ? offset.top : 0;\n }\n\n private addPosition(node: Node, position: number, top: number): void {\n const area = {\n top,\n bottom: 0,\n node,\n position,\n };\n\n this.positions.push(area);\n this.lastTop = top;\n }\n\n private generateHitAreasForGroup(\n hitAreas: HitArea[],\n positionsInGroup: HitArea[],\n top: number,\n bottom: number\n ): void {\n // limit positions in group\n const positionCount = Math.min(positionsInGroup.length, 4);\n\n const areaHeight = Math.round((bottom - top) / positionCount);\n let areaTop = top;\n\n let i = 0;\n while (i < positionCount) {\n const position = positionsInGroup[i];\n\n hitAreas.push({\n top: areaTop,\n bottom: areaTop + areaHeight,\n node: position.node,\n position: position.position,\n });\n\n areaTop += areaHeight;\n i += 1;\n }\n }\n}\n\nclass DragElement {\n private offsetX: number;\n private offsetY: number;\n private $element: JQuery;\n\n constructor(\n nodeName: string,\n offsetX: number,\n offsetY: number,\n $tree: JQuery,\n autoEscape: boolean\n ) {\n this.offsetX = offsetX;\n this.offsetY = offsetY;\n\n this.$element = jQuery(\"<span>\").addClass(\n \"jqtree-title jqtree-dragging\"\n );\n\n if (autoEscape) {\n this.$element.text(nodeName);\n } else {\n this.$element.html(nodeName);\n }\n\n this.$element.css(\"position\", \"absolute\");\n $tree.append(this.$element);\n }\n\n public move(pageX: number, pageY: number): void {\n this.$element.offset({\n left: pageX - this.offsetX,\n top: pageY - this.offsetY,\n });\n }\n\n public remove(): void {\n this.$element.remove();\n }\n}\n","export const isInt = (n: unknown): boolean =>\n typeof n === \"number\" && n % 1 === 0;\n\nexport const isFunction = (v: unknown): boolean => typeof v === \"function\";\n\nexport const getBoolString = (value: unknown): string =>\n value ? \"true\" : \"false\";\n","import { getBoolString } from \"./util\";\nimport { Node } from \"./node\";\nimport { JqTreeWidget } from \"./tree.jquery\";\n\ntype IconElement = Text | Element;\n\nexport default class ElementsRenderer {\n public openedIconElement: IconElement;\n public closedIconElement: IconElement;\n private treeWidget: JqTreeWidget;\n\n constructor(treeWidget: JqTreeWidget) {\n this.treeWidget = treeWidget;\n\n this.openedIconElement = this.createButtonElement(\n treeWidget.options.openedIcon || \"+\"\n );\n this.closedIconElement = this.createButtonElement(\n treeWidget.options.closedIcon || \"-\"\n );\n }\n\n public render(fromNode: Node | null): void {\n if (fromNode && fromNode.parent) {\n this.renderFromNode(fromNode);\n } else {\n this.renderFromRoot();\n }\n }\n\n public renderFromRoot(): void {\n const $element = this.treeWidget.element;\n $element.empty();\n\n this.createDomElements(\n $element[0],\n this.treeWidget.tree.children,\n true,\n 1\n );\n }\n\n public renderFromNode(node: Node): void {\n // remember current li\n const $previousLi = jQuery(node.element);\n\n // create element\n const li = this.createLi(node, node.getLevel());\n this.attachNodeData(node, li);\n\n // add element to dom\n $previousLi.after(li);\n\n // remove previous li\n $previousLi.remove();\n\n // create children\n if (node.children) {\n this.createDomElements(\n li,\n node.children,\n false,\n node.getLevel() + 1\n );\n }\n }\n\n private createDomElements(\n element: Element,\n children: Node[],\n isRootNode: boolean,\n level: number\n ): void {\n const ul = this.createUl(isRootNode);\n element.appendChild(ul);\n\n for (const child of children) {\n const li = this.createLi(child, level);\n ul.appendChild(li);\n\n this.attachNodeData(child, li);\n\n if (child.hasChildren()) {\n this.createDomElements(li, child.children, false, level + 1);\n }\n }\n }\n\n private attachNodeData(node: Node, li: HTMLElement): void {\n node.element = li;\n jQuery(li).data(\"node\", node);\n }\n\n private createUl(isRootNode: boolean): HTMLUListElement {\n let classString;\n let role;\n\n if (!isRootNode) {\n classString = \"\";\n role = \"group\";\n } else {\n classString = \"jqtree-tree\";\n role = \"tree\";\n\n if (this.treeWidget.options.rtl) {\n classString += \" jqtree-rtl\";\n }\n }\n\n if (this.treeWidget.options.dragAndDrop) {\n classString += \" jqtree-dnd\";\n }\n\n const ul = document.createElement(\"ul\");\n ul.className = `jqtree_common ${classString}`;\n\n ul.setAttribute(\"role\", role);\n\n return ul;\n }\n\n private createLi(node: Node, level: number): HTMLLIElement {\n const isSelected = Boolean(\n this.treeWidget.selectNodeHandler.isNodeSelected(node)\n );\n\n const mustShowFolder =\n node.isFolder() ||\n (node.isEmptyFolder && this.treeWidget.options.showEmptyFolder);\n\n const li = mustShowFolder\n ? this.createFolderLi(node, level, isSelected)\n : this.createNodeLi(node, level, isSelected);\n\n if (this.treeWidget.options.onCreateLi) {\n this.treeWidget.options.onCreateLi(node, jQuery(li), isSelected);\n }\n\n return li;\n }\n\n private createFolderLi(\n node: Node,\n level: number,\n isSelected: boolean\n ): HTMLLIElement {\n const buttonClasses = this.getButtonClasses(node);\n const folderClasses = this.getFolderClasses(node, isSelected);\n\n const iconElement = node.is_open\n ? this.openedIconElement\n : this.closedIconElement;\n\n // li\n const li = document.createElement(\"li\");\n li.className = `jqtree_common ${folderClasses}`;\n li.setAttribute(\"role\", \"presentation\");\n\n // div\n const div = document.createElement(\"div\");\n div.className = \"jqtree-element jqtree_common\";\n div.setAttribute(\"role\", \"presentation\");\n\n li.appendChild(div);\n\n // button link\n const buttonLink = document.createElement(\"a\");\n buttonLink.className = buttonClasses;\n\n buttonLink.appendChild(iconElement.cloneNode(true));\n\n buttonLink.setAttribute(\"role\", \"presentation\");\n buttonLink.setAttribute(\"aria-hidden\", \"true\");\n\n if (this.treeWidget.options.buttonLeft) {\n div.appendChild(buttonLink);\n }\n\n // title span\n div.appendChild(\n this.createTitleSpan(\n node.name,\n level,\n isSelected,\n node.is_open,\n true\n )\n );\n\n if (!this.treeWidget.options.buttonLeft) {\n div.appendChild(buttonLink);\n }\n\n return li;\n }\n\n private createNodeLi(\n node: Node,\n level: number,\n isSelected: boolean\n ): HTMLLIElement {\n const liClasses = [\"jqtree_common\"];\n\n if (isSelected) {\n liClasses.push(\"jqtree-selected\");\n }\n\n const classString = liClasses.join(\" \");\n\n // li\n const li = document.createElement(\"li\");\n li.className = classString;\n li.setAttribute(\"role\", \"presentation\");\n\n // div\n const div = document.createElement(\"div\");\n div.className = \"jqtree-element jqtree_common\";\n div.setAttribute(\"role\", \"presentation\");\n\n li.appendChild(div);\n\n // title span\n div.appendChild(\n this.createTitleSpan(\n node.name,\n level,\n isSelected,\n node.is_open,\n false\n )\n );\n\n return li;\n }\n\n private createTitleSpan(\n nodeName: string,\n level: number,\n isSelected: boolean,\n isOpen: boolean,\n isFolder: boolean\n ): HTMLSpanElement {\n const titleSpan = document.createElement(\"span\");\n\n let classes = \"jqtree-title jqtree_common\";\n\n if (isFolder) {\n classes += \" jqtree-title-folder\";\n }\n\n classes += ` jqtree-title-button-${\n this.treeWidget.options.buttonLeft ? \"left\" : \"right\"\n }`;\n\n titleSpan.className = classes;\n\n titleSpan.setAttribute(\"role\", \"treeitem\");\n titleSpan.setAttribute(\"aria-level\", `${level}`);\n\n titleSpan.setAttribute(\"aria-selected\", getBoolString(isSelected));\n titleSpan.setAttribute(\"aria-expanded\", getBoolString(isOpen));\n\n if (isSelected) {\n const tabIndex = this.treeWidget.options.tabIndex;\n\n if (tabIndex !== undefined) {\n titleSpan.setAttribute(\"tabindex\", `${tabIndex}`);\n }\n }\n\n if (this.treeWidget.options.autoEscape) {\n titleSpan.textContent = nodeName;\n } else {\n titleSpan.innerHTML = nodeName;\n }\n\n return titleSpan;\n }\n\n private getButtonClasses(node: Node): string {\n const classes = [\"jqtree-toggler\", \"jqtree_common\"];\n\n if (!node.is_open) {\n classes.push(\"jqtree-closed\");\n }\n\n if (this.treeWidget.options.buttonLeft) {\n classes.push(\"jqtree-toggler-left\");\n } else {\n classes.push(\"jqtree-toggler-right\");\n }\n\n return classes.join(\" \");\n }\n\n private getFolderClasses(node: Node, isSelected: boolean): string {\n const classes = [\"jqtree-folder\"];\n\n if (!node.is_open) {\n classes.push(\"jqtree-closed\");\n }\n\n if (isSelected) {\n classes.push(\"jqtree-selected\");\n }\n\n if (node.is_loading) {\n classes.push(\"jqtree-loading\");\n }\n\n return classes.join(\" \");\n }\n\n private createButtonElement(value: string | Element): IconElement {\n if (typeof value === \"string\") {\n // convert value to html\n const div = document.createElement(\"div\");\n div.innerHTML = value;\n\n return document.createTextNode(div.innerHTML);\n } else {\n return jQuery(value)[0];\n }\n }\n}\n","import { Node } from \"./node\";\nimport { JqTreeWidget } from \"./tree.jquery\";\n\nexport type HandleFinishedLoading = () => void;\n\nexport default class DataLoader {\n private treeWidget: JqTreeWidget;\n\n constructor(treeWidget: JqTreeWidget) {\n this.treeWidget = treeWidget;\n }\n\n public loadFromUrl(\n urlInfo: string | JQuery.AjaxSettings | null,\n parentNode: Node | null,\n onFinished: HandleFinishedLoading | null\n ): void {\n if (!urlInfo) {\n return;\n }\n\n const $el = this.getDomElement(parentNode);\n this.addLoadingClass($el);\n this.notifyLoading(true, parentNode, $el);\n\n const stopLoading = (): void => {\n this.removeLoadingClass($el);\n this.notifyLoading(false, parentNode, $el);\n };\n\n const handleSuccess = (data: string | NodeData[]): void => {\n stopLoading();\n this.treeWidget.loadData(this.parseData(data), parentNode);\n\n if (onFinished && typeof onFinished === \"function\") {\n onFinished();\n }\n };\n\n const handleError = (jqXHR: JQuery.jqXHR): void => {\n stopLoading();\n\n if (this.treeWidget.options.onLoadFailed) {\n this.treeWidget.options.onLoadFailed(jqXHR);\n }\n };\n\n this.submitRequest(urlInfo, handleSuccess, handleError);\n }\n\n private addLoadingClass($el: JQuery<HTMLElement>): void {\n if ($el) {\n $el.addClass(\"jqtree-loading\");\n }\n }\n\n private removeLoadingClass($el: JQuery<HTMLElement>): void {\n if ($el) {\n $el.removeClass(\"jqtree-loading\");\n }\n }\n\n private getDomElement(parentNode: Node | null): JQuery<HTMLElement> {\n if (parentNode) {\n return jQuery(parentNode.element);\n } else {\n return this.treeWidget.element;\n }\n }\n\n private notifyLoading(\n isLoading: boolean,\n node: Node | null,\n $el: JQuery\n ): void {\n if (this.treeWidget.options.onLoading) {\n this.treeWidget.options.onLoading(isLoading, node, $el);\n }\n\n this.treeWidget._triggerEvent(\"tree.loading_data\", {\n isLoading,\n node,\n $el,\n });\n }\n\n private submitRequest(\n urlInfoInput: string | JQuery.AjaxSettings,\n handleSuccess: JQuery.Ajax.SuccessCallback<any>,\n handleError: JQuery.Ajax.ErrorCallback<any>\n ): void {\n const urlInfo =\n typeof urlInfoInput === \"string\"\n ? { url: urlInfoInput }\n : urlInfoInput;\n\n const ajaxSettings: JQuery.AjaxSettings = {\n method: \"GET\",\n cache: false,\n dataType: \"json\",\n success: handleSuccess,\n error: handleError,\n ...urlInfo,\n };\n\n ajaxSettings.method = ajaxSettings.method?.toUpperCase() || \"GET\";\n\n void jQuery.ajax(ajaxSettings);\n }\n\n private parseData(data: string | NodeData[]): NodeData[] {\n const { dataFilter } = this.treeWidget.options;\n\n const getParsedData = () => {\n if (typeof data === \"string\") {\n return JSON.parse(data) as NodeData[];\n } else {\n return data;\n }\n };\n\n const parsedData = getParsedData();\n\n if (dataFilter) {\n return dataFilter(parsedData);\n } else {\n return parsedData;\n }\n }\n}\n","import { Node } from \"./node\";\nimport { JqTreeWidget } from \"./tree.jquery\";\n\nexport default class KeyHandler {\n private static LEFT = 37;\n private static UP = 38;\n private static RIGHT = 39;\n private static DOWN = 40;\n\n private treeWidget: JqTreeWidget;\n\n constructor(treeWidget: JqTreeWidget) {\n this.treeWidget = treeWidget;\n\n if (treeWidget.options.keyboardSupport) {\n jQuery(document).on(\"keydown.jqtree\", this.handleKeyDown);\n }\n }\n\n public deinit(): void {\n jQuery(document).off(\"keydown.jqtree\");\n }\n\n public moveDown(selectedNode: Node): boolean {\n return this.selectNode(selectedNode.getNextNode());\n }\n\n public moveUp(selectedNode: Node): boolean {\n return this.selectNode(selectedNode.getPreviousNode());\n }\n\n public moveRight(selectedNode: Node): boolean {\n if (!selectedNode.isFolder()) {\n return true;\n } else {\n // folder node\n if (selectedNode.is_open) {\n // Right moves to the first child of an open node\n return this.selectNode(selectedNode.getNextNode());\n } else {\n // Right expands a closed node\n this.treeWidget.openNode(selectedNode);\n return false;\n }\n }\n }\n\n public moveLeft(selectedNode: Node): boolean {\n if (selectedNode.isFolder() && selectedNode.is_open) {\n // Left on an open node closes the node\n this.treeWidget.closeNode(selectedNode);\n return false;\n } else {\n // Left on a closed or end node moves focus to the node's parent\n return this.selectNode(selectedNode.getParent());\n }\n }\n\n public selectNode(node: Node | null): boolean {\n if (!node) {\n return true;\n } else {\n this.treeWidget.selectNode(node);\n\n if (\n !this.treeWidget.scrollHandler.isScrolledIntoView(\n jQuery(node.element).find(\".jqtree-element\")\n )\n ) {\n this.treeWidget.scrollToNode(node);\n }\n\n return false;\n }\n }\n\n private handleKeyDown = (e: JQuery.Event): boolean => {\n if (!this.canHandleKeyboard()) {\n return true;\n }\n\n const selectedNode = this.treeWidget.getSelectedNode();\n if (!selectedNode) {\n return true;\n }\n\n const key = e.which;\n\n switch (key) {\n case KeyHandler.DOWN:\n return this.moveDown(selectedNode);\n\n case KeyHandler.UP:\n return this.moveUp(selectedNode);\n\n case KeyHandler.RIGHT:\n return this.moveRight(selectedNode);\n\n case KeyHandler.LEFT:\n return this.moveLeft(selectedNode);\n\n default:\n return true;\n }\n };\n\n private canHandleKeyboard(): boolean {\n return (\n (this.treeWidget.options.keyboardSupport || false) &&\n this.treeWidget.selectNodeHandler.isFocusOnTree()\n );\n }\n}\n","const register = (widgetClass: unknown, widgetName: string): void => {\n const getDataKey = (): string => `simple_widget_${widgetName}`;\n\n const getWidgetData = (\n el: HTMLElement,\n dataKey: string\n ): SimpleWidget<unknown> | null => {\n const widget = jQuery.data(el, dataKey) as unknown;\n\n if (widget && widget instanceof SimpleWidget) {\n return widget;\n } else {\n return null;\n }\n };\n\n const createWidget = ($el: JQuery, options: unknown): JQuery => {\n const dataKey = getDataKey();\n\n for (const el of $el.get()) {\n const existingWidget = getWidgetData(el, dataKey);\n\n if (!existingWidget) {\n const simpleWidgetClass = widgetClass as typeof SimpleWidget;\n const widget = new simpleWidgetClass(el, options);\n\n if (!jQuery.data(el, dataKey)) {\n jQuery.data(el, dataKey, widget);\n }\n\n // Call init after setting data, so we can call methods\n widget.init();\n }\n }\n\n return $el;\n };\n\n const destroyWidget = ($el: JQuery): void => {\n const dataKey = getDataKey();\n\n for (const el of $el.get()) {\n const widget = getWidgetData(el, dataKey);\n\n if (widget) {\n widget.destroy();\n }\n\n jQuery.removeData(el, dataKey);\n }\n };\n\n const callFunction = (\n $el: JQuery,\n functionName: string,\n args: unknown[]\n ): unknown => {\n let result = null;\n\n for (const el of $el.get()) {\n const widget = jQuery.data(el, getDataKey()) as unknown;\n\n if (widget && widget instanceof SimpleWidget) {\n const simpleWidget = widget as SimpleWidget<unknown>;\n const widgetFunction = simpleWidget[functionName];\n\n if (widgetFunction && typeof widgetFunction === \"function\") {\n result = widgetFunction.apply(widget, args) as unknown;\n }\n }\n }\n\n return result;\n };\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n (jQuery.fn as any)[widgetName] = function (\n this: JQuery,\n argument1: unknown,\n ...args: unknown[]\n ) {\n if (!argument1) {\n return createWidget(this, null);\n } else if (typeof argument1 === \"object\") {\n const options = argument1 as unknown;\n return createWidget(this, options);\n } else if (typeof argument1 === \"string\" && argument1[0] !== \"_\") {\n const functionName = argument1;\n\n if (functionName === \"destroy\") {\n return destroyWidget(this);\n } else if (functionName === \"get_widget_class\") {\n return widgetClass;\n } else {\n return callFunction(this, functionName, args);\n }\n }\n };\n};\n\nexport default class SimpleWidget<WidgetOptions> {\n public static register(widgetClass: unknown, widgetName: string): void {\n register(widgetClass, widgetName);\n }\n\n [key: string]: unknown;\n\n protected static defaults: unknown = {};\n\n public options: WidgetOptions;\n\n public $el: JQuery<HTMLElement>;\n\n constructor(el: HTMLElement, options: WidgetOptions) {\n this.$el = jQuery(el);\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n const defaults = (this.constructor as any)[\"defaults\"] as WidgetOptions;\n this.options = { ...defaults, ...options };\n }\n\n public destroy(): void {\n this.deinit();\n }\n\n public init(): void {\n //\n }\n\n public deinit(): void {\n //\n }\n}\n","/*\nThis widget does the same a the mouse widget in jqueryui.\n*/\nimport SimpleWidget from \"./simple.widget\";\nimport { PositionInfo } from \"./types\";\n\nconst getPositionInfoFromMouseEvent = (e: MouseEvent): PositionInfo => ({\n pageX: e.pageX,\n pageY: e.pageY,\n target: e.target as HTMLElement,\n originalEvent: e,\n});\n\nconst getPositionInfoFromTouch = (\n touch: Touch,\n e: TouchEvent\n): PositionInfo => ({\n pageX: touch.pageX,\n pageY: touch.pageY,\n target: touch.target as HTMLElement,\n originalEvent: e,\n});\n\nabstract class MouseWidget<WidgetOptions> extends SimpleWidget<WidgetOptions> {\n protected isMouseStarted: boolean;\n protected mouseDownInfo: PositionInfo | null;\n private mouseDelayTimer: number | null;\n private isMouseDelayMet: boolean;\n\n public init(): void {\n const element = this.$el.get(0);\n\n if (element) {\n element.addEventListener(\"mousedown\", this.mouseDown, {\n passive: false,\n });\n element.addEventListener(\"touchstart\", this.touchStart, {\n passive: false,\n });\n }\n\n this.isMouseStarted = false;\n this.mouseDelayTimer = null;\n this.isMouseDelayMet = false;\n this.mouseDownInfo = null;\n }\n\n public deinit(): void {\n const el = this.$el.get(0);\n\n if (el) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access\n (el as any).removeEventListener(\"mousedown\", this.mouseDown, {\n passive: false,\n });\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access\n (el as any).removeEventListener(\"touchstart\", this.touchStart, {\n passive: false,\n });\n }\n\n this.removeMouseMoveEventListeners();\n }\n\n protected abstract mouseCapture(positionInfo: PositionInfo): boolean | null;\n\n protected abstract mouseStart(positionInfo: PositionInfo): boolean;\n\n protected abstract mouseDrag(positionInfo: PositionInfo): void;\n\n protected abstract mouseStop(positionInfo: PositionInfo): void;\n\n protected abstract getMouseDelay(): number;\n\n private mouseDown = (e: MouseEvent): void => {\n // Left mouse button?\n if (e.button !== 0) {\n return;\n }\n\n const result = this.handleMouseDown(getPositionInfoFromMouseEvent(e));\n\n if (result && e.cancelable) {\n e.preventDefault();\n }\n };\n\n private handleMouseDown(positionInfo: PositionInfo): boolean {\n // We may have missed mouseup (out of window)\n if (this.isMouseStarted) {\n this.handleMouseUp(positionInfo);\n }\n\n this.mouseDownInfo = positionInfo;\n\n if (!this.mouseCapture(positionInfo)) {\n return false;\n }\n\n this.handleStartMouse();\n\n return true;\n }\n\n private handleStartMouse(): void {\n document.addEventListener(\"mousemove\", this.mouseMove, {\n passive: false,\n });\n document.addEventListener(\"touchmove\", this.touchMove, {\n passive: false,\n });\n document.addEventListener(\"mouseup\", this.mouseUp, { passive: false });\n document.addEventListener(\"touchend\", this.touchEnd, {\n passive: false,\n });\n\n const mouseDelay = this.getMouseDelay();\n\n if (mouseDelay) {\n this.startMouseDelayTimer(mouseDelay);\n } else {\n this.isMouseDelayMet = true;\n }\n }\n\n private startMouseDelayTimer(mouseDelay: number): void {\n if (this.mouseDelayTimer) {\n clearTimeout(this.mouseDelayTimer);\n }\n\n this.mouseDelayTimer = window.setTimeout(() => {\n if (this.mouseDownInfo) {\n this.isMouseDelayMet = true;\n }\n }, mouseDelay);\n\n this.isMouseDelayMet = false;\n }\n\n private mouseMove = (e: MouseEvent): void => {\n this.handleMouseMove(e, getPositionInfoFromMouseEvent(e));\n };\n\n private handleMouseMove(\n e: MouseEvent | TouchEvent,\n positionInfo: PositionInfo\n ): void {\n if (this.isMouseStarted) {\n this.mouseDrag(positionInfo);\n\n if (e.cancelable) {\n e.preventDefault();\n }\n return;\n }\n\n if (!this.isMouseDelayMet) {\n return;\n }\n\n if (this.mouseDownInfo) {\n this.isMouseStarted = this.mouseStart(this.mouseDownInfo) !== false;\n }\n\n if (this.isMouseStarted) {\n this.mouseDrag(positionInfo);\n\n if (e.cancelable) {\n e.preventDefault();\n }\n } else {\n this.handleMouseUp(positionInfo);\n }\n }\n\n private mouseUp = (e: MouseEvent): void => {\n this.handleMouseUp(getPositionInfoFromMouseEvent(e));\n };\n\n private handleMouseUp(positionInfo: PositionInfo): void {\n this.removeMouseMoveEventListeners();\n this.isMouseDelayMet = false;\n this.mouseDownInfo = null;\n\n if (this.isMouseStarted) {\n this.isMouseStarted = false;\n this.mouseStop(positionInfo);\n }\n }\n\n private removeMouseMoveEventListeners() {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access\n (document as any).removeEventListener(\"mousemove\", this.mouseMove, {\n passive: false,\n });\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access\n (document as any).removeEventListener(\"touchmove\", this.touchMove, {\n passive: false,\n });\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access\n (document as any).removeEventListener(\"mouseup\", this.mouseUp, {\n passive: false,\n });\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access\n (document as any).removeEventListener(\"touchend\", this.touchEnd, {\n passive: false,\n });\n }\n\n private touchStart = (e: TouchEvent): void => {\n if (!e) {\n return;\n }\n\n if (e.touches.length > 1) {\n return;\n }\n\n const touch = e.changedTouches[0];\n\n this.handleMouseDown(getPositionInfoFromTouch(touch, e));\n };\n\n private touchMove = (e: TouchEvent): void => {\n if (!e) {\n return;\n }\n\n if (e.touches.length > 1) {\n return;\n }\n\n const touch = e.changedTouches[0];\n\n this.handleMouseMove(e, getPositionInfoFromTouch(touch, e));\n };\n\n private touchEnd = (e: TouchEvent): void => {\n if (!e) {\n return;\n }\n\n if (e.touches.length > 1) {\n return;\n }\n\n const touch = e.changedTouches[0];\n\n this.handleMouseUp(getPositionInfoFromTouch(touch, e));\n };\n}\n\nexport default MouseWidget;\n","import { isInt } from \"./util\";\nimport { JqTreeWidget } from \"./tree.jquery\";\nimport { Node } from \"./node\";\n\nexport interface SavedState {\n open_nodes: NodeId[];\n selected_node: NodeId[];\n}\n\nexport default class SaveStateHandler {\n private treeWidget: JqTreeWidget;\n private _supportsLocalStorage: boolean | null;\n\n constructor(treeWidget: JqTreeWidget) {\n this.treeWidget = treeWidget;\n }\n\n public saveState(): void {\n const state = JSON.stringify(this.getState());\n\n if (this.treeWidget.options.onSetStateFromStorage) {\n this.treeWidget.options.onSetStateFromStorage(state);\n } else if (this.supportsLocalStorage()) {\n localStorage.setItem(this.getKeyName(), state);\n }\n }\n\n public getStateFromStorage(): SavedState | null {\n const jsonData = this.loadFromStorage();\n\n if (jsonData) {\n return this.parseState(jsonData) as unknown as SavedState;\n } else {\n return null;\n }\n }\n\n public getState(): SavedState {\n const getOpenNodeIds = (): NodeId[] => {\n const openNodes: NodeId[] = [];\n\n this.treeWidget.tree.iterate((node: Node) => {\n if (node.is_open && node.id && node.hasChildren()) {\n openNodes.push(node.id);\n }\n return true;\n });\n\n return openNodes;\n };\n\n const getSelectedNodeIds = (): NodeId[] => {\n const selectedNodeIds: NodeId[] = [];\n\n this.treeWidget.getSelectedNodes().forEach((node) => {\n if (node.id != null) {\n selectedNodeIds.push(node.id);\n }\n });\n\n return selectedNodeIds;\n };\n\n return {\n open_nodes: getOpenNodeIds(),\n selected_node: getSelectedNodeIds(),\n };\n }\n\n /*\n Set initial state\n Don't handle nodes that are loaded on demand\n\n result: must load on demand\n */\n public setInitialState(state: SavedState): boolean {\n if (!state) {\n return false;\n } else {\n let mustLoadOnDemand = false;\n\n if (state.open_nodes) {\n mustLoadOnDemand = this.openInitialNodes(state.open_nodes);\n }\n\n if (state.selected_node) {\n this.resetSelection();\n this.selectInitialNodes(state.selected_node);\n }\n\n return mustLoadOnDemand;\n }\n }\n\n public setInitialStateOnDemand(\n state: SavedState,\n cbFinished: () => void\n ): void {\n if (state) {\n this.doSetInitialStateOnDemand(\n state.open_nodes,\n state.selected_node,\n cbFinished\n );\n } else {\n cbFinished();\n }\n }\n\n public getNodeIdToBeSelected(): NodeId | null {\n const state = this.getStateFromStorage();\n\n if (state && state.selected_node) {\n return state.selected_node[0];\n } else {\n return null;\n }\n }\n\n private parseState(jsonData: string): SavedState {\n const state = JSON.parse(jsonData) as Record<string, unknown>;\n\n // Check if selected_node is an int (instead of an array)\n if (state && state.selected_node && isInt(state.selected_node)) {\n // Convert to array\n state.selected_node = [state.selected_node];\n }\n\n return state as unknown as SavedState;\n }\n\n private loadFromStorage(): string | null {\n if (this.treeWidget.options.onGetStateFromStorage) {\n return this.treeWidget.options.onGetStateFromStorage();\n } else if (this.supportsLocalStorage()) {\n return localStorage.getItem(this.getKeyName());\n } else {\n return null;\n }\n }\n\n private openInitialNodes(nodeIds: NodeId[]): boolean {\n let mustLoadOnDemand = false;\n\n for (const nodeId of nodeIds) {\n const node = this.treeWidget.getNodeById(nodeId);\n\n if (node) {\n if (!node.load_on_demand) {\n node.is_open = true;\n } else {\n mustLoadOnDemand = true;\n }\n }\n }\n\n return mustLoadOnDemand;\n }\n\n private selectInitialNodes(nodeIds: NodeId[]): boolean {\n let selectCount = 0;\n\n for (const nodeId of nodeIds) {\n const node = this.treeWidget.getNodeById(nodeId);\n\n if (node) {\n selectCount += 1;\n\n this.treeWidget.selectNodeHandler.addToSelection(node);\n }\n }\n\n return selectCount !== 0;\n }\n\n private resetSelection(): void {\n const selectNodeHandler = this.treeWidget.selectNodeHandler;\n\n const selectedNodes = selectNodeHandler.getSelectedNodes();\n\n selectedNodes.forEach((node) => {\n selectNodeHandler.removeFromSelection(node);\n });\n }\n\n private doSetInitialStateOnDemand(\n nodeIdsParam: NodeId[],\n selectedNodes: NodeId[],\n cbFinished: () => void\n ): void {\n let loadingCount = 0;\n let nodeIds = nodeIdsParam;\n\n const openNodes = (): void => {\n const newNodesIds = [];\n\n for (const nodeId of nodeIds) {\n const node = this.treeWidget.getNodeById(nodeId);\n\n if (!node) {\n newNodesIds.push(nodeId);\n } else {\n if (!node.is_loading) {\n if (node.load_on_demand) {\n loadAndOpenNode(node);\n } else {\n this.treeWidget._openNode(node, false, null);\n }\n }\n }\n }\n\n nodeIds = newNodesIds;\n\n if (this.selectInitialNodes(selectedNodes)) {\n this.treeWidget._refreshElements(null);\n }\n\n if (loadingCount === 0) {\n cbFinished();\n }\n };\n\n const loadAndOpenNode = (node: Node): void => {\n loadingCount += 1;\n this.treeWidget._openNode(node, false, () => {\n loadingCount -= 1;\n openNodes();\n });\n };\n\n openNodes();\n }\n\n private getKeyName(): string {\n if (typeof this.treeWidget.options.saveState === \"string\") {\n return this.treeWidget.options.saveState;\n } else {\n return \"tree\";\n }\n }\n\n private supportsLocalStorage(): boolean {\n const testSupport = (): boolean => {\n // Is local storage supported?\n if (localStorage == null) {\n return false;\n } else {\n // Check if it's possible to store an item. Safari does not allow this in private browsing mode.\n try {\n const key = \"_storage_test\";\n sessionStorage.setItem(key, \"value\");\n sessionStorage.removeItem(key);\n } catch (error) {\n return false;\n }\n\n return true;\n }\n };\n\n if (this._supportsLocalStorage == null) {\n this._supportsLocalStorage = testSupport();\n }\n\n return this._supportsLocalStorage;\n }\n}\n","import { JqTreeWidget } from \"./tree.jquery\";\nimport { HitArea, PositionInfo } from \"./types\";\n\nexport default class ScrollHandler {\n private treeWidget: JqTreeWidget;\n private previousTop: number;\n private isInitialized: boolean;\n private $scrollParent: JQuery | null;\n private scrollParentTop: number;\n\n constructor(treeWidget: JqTreeWidget) {\n this.treeWidget = treeWidget;\n this.previousTop = -1;\n this.isInitialized = false;\n }\n\n public checkScrolling(): void {\n this.ensureInit();\n this.checkVerticalScrolling();\n this.checkHorizontalScrolling();\n }\n\n public scrollToY(top: number): void {\n this.ensureInit();\n\n if (this.$scrollParent) {\n this.$scrollParent[0].scrollTop = top;\n } else {\n const offset = this.treeWidget.$el.offset();\n const treeTop = offset ? offset.top : 0;\n\n jQuery(document).scrollTop(top + treeTop);\n }\n }\n\n public isScrolledIntoView($element: JQuery): boolean {\n this.ensureInit();\n\n let elementBottom: number;\n let viewBottom: number;\n let elementTop: number;\n let viewTop: number;\n\n const elHeight = $element.height() || 0;\n\n if (this.$scrollParent) {\n viewTop = 0;\n viewBottom = this.$scrollParent.height() || 0;\n\n const offset = $element.offset();\n const originalTop = offset ? offset.top : 0;\n\n elementTop = originalTop - this.scrollParentTop;\n elementBottom = elementTop + elHeight;\n } else {\n viewTop = jQuery(window).scrollTop() || 0;\n\n const windowHeight = jQuery(window).height() || 0;\n viewBottom = viewTop + windowHeight;\n\n const offset = $element.offset();\n\n elementTop = offset ? offset.top : 0;\n elementBottom = elementTop + elHeight;\n }\n\n return elementBottom <= viewBottom && elementTop >= viewTop;\n }\n\n public getScrollLeft(): number {\n if (!this.$scrollParent) {\n return 0;\n } else {\n return this.$scrollParent.scrollLeft() || 0;\n }\n }\n\n private initScrollParent(): void {\n const getParentWithOverflow = (): JQuery | null => {\n const cssAttributes = [\"overflow\", \"overflow-y\"];\n\n const hasOverFlow = ($el: JQuery): boolean => {\n for (const attr of cssAttributes) {\n const overflowValue = $el.css(attr);\n if (\n overflowValue === \"auto\" ||\n overflowValue === \"scroll\"\n ) {\n return true;\n }\n }\n\n return false;\n };\n\n if (hasOverFlow(this.treeWidget.$el)) {\n return this.treeWidget.$el;\n }\n\n for (const el of this.treeWidget.$el.parents().get()) {\n const $el = jQuery(el);\n if (hasOverFlow($el)) {\n return $el;\n }\n }\n\n return null;\n };\n\n const setDocumentAsScrollParent = (): void => {\n this.scrollParentTop = 0;\n this.$scrollParent = null;\n };\n\n if (this.treeWidget.$el.css(\"position\") === \"fixed\") {\n setDocumentAsScrollParent();\n }\n\n const $scrollParent = getParentWithOverflow();\n\n if (\n $scrollParent &&\n $scrollParent.length &&\n $scrollParent[0].tagName !== \"HTML\"\n ) {\n this.$scrollParent = $scrollParent;\n\n const offset = this.$scrollParent.offset();\n this.scrollParentTop = offset ? offset.top : 0;\n } else {\n setDocumentAsScrollParent();\n }\n\n this.isInitialized = true;\n }\n\n private ensureInit(): void {\n if (!this.isInitialized) {\n this.initScrollParent();\n }\n }\n\n private handleVerticalScrollingWithScrollParent(area: HitArea): void {\n const scrollParent = this.$scrollParent && this.$scrollParent[0];\n\n if (!scrollParent) {\n return;\n }\n\n const distanceBottom =\n this.scrollParentTop + scrollParent.offsetHeight - area.bottom;\n\n if (distanceBottom < 20) {\n scrollParent.scrollTop += 20;\n this.treeWidget.refreshHitAreas();\n this.previousTop = -1;\n } else if (area.top - this.scrollParentTop < 20) {\n scrollParent.scrollTop -= 20;\n this.treeWidget.refreshHitAreas();\n this.previousTop = -1;\n }\n }\n\n private handleVerticalScrollingWithDocument(area: HitArea): void {\n const scrollTop = jQuery(document).scrollTop() || 0;\n const distanceTop = area.top - scrollTop;\n\n if (distanceTop < 20) {\n jQuery(document).scrollTop(scrollTop - 20);\n } else {\n const windowHeight = jQuery(window).height() || 0;\n\n if (windowHeight - (area.bottom - scrollTop) < 20) {\n jQuery(document).scrollTop(scrollTop + 20);\n }\n }\n }\n\n private checkVerticalScrolling(): void {\n const hoveredArea = this.treeWidget.dndHandler.hoveredArea;\n\n if (hoveredArea && hoveredArea.top !== this.previousTop) {\n this.previousTop = hoveredArea.top;\n\n if (this.$scrollParent) {\n this.handleVerticalScrollingWithScrollParent(hoveredArea);\n } else {\n this.handleVerticalScrollingWithDocument(hoveredArea);\n }\n }\n }\n\n private checkHorizontalScrolling(): void {\n const positionInfo = this.treeWidget.dndHandler.positionInfo;\n\n if (!positionInfo) {\n return;\n }\n\n if (this.$scrollParent) {\n this.handleHorizontalScrollingWithParent(positionInfo);\n } else {\n this.handleHorizontalScrollingWithDocument(positionInfo);\n }\n }\n\n private handleHorizontalScrollingWithParent(\n positionInfo: PositionInfo\n ): void {\n if (\n positionInfo.pageX === undefined ||\n positionInfo.pageY === undefined\n ) {\n return;\n }\n\n const $scrollParent = this.$scrollParent;\n const scrollParentOffset = $scrollParent && $scrollParent.offset();\n\n if (!($scrollParent && scrollParentOffset)) {\n return;\n }\n\n const scrollParent = $scrollParent[0];\n\n const canScrollRight =\n scrollParent.scrollLeft + scrollParent.clientWidth <\n scrollParent.scrollWidth;\n const canScrollLeft = scrollParent.scrollLeft > 0;\n\n const rightEdge = scrollParentOffset.left + scrollParent.clientWidth;\n const leftEdge = scrollParentOffset.left;\n const isNearRightEdge = positionInfo.pageX > rightEdge - 20;\n const isNearLeftEdge = positionInfo.pageX < leftEdge + 20;\n\n if (isNearRightEdge && canScrollRight) {\n scrollParent.scrollLeft = Math.min(\n scrollParent.scrollLeft + 20,\n scrollParent.scrollWidth\n );\n } else if (isNearLeftEdge && canScrollLeft) {\n scrollParent.scrollLeft = Math.max(scrollParent.scrollLeft - 20, 0);\n }\n }\n\n private handleHorizontalScrollingWithDocument(\n positionInfo: PositionInfo\n ): void {\n if (\n positionInfo.pageX === undefined ||\n positionInfo.pageY === undefined\n ) {\n return;\n }\n\n const $document = jQuery(document);\n\n const scrollLeft = $document.scrollLeft() || 0;\n const windowWidth = jQuery(window).width() || 0;\n\n const canScrollLeft = scrollLeft > 0;\n\n const isNearRightEdge = positionInfo.pageX > windowWidth - 20;\n const isNearLeftEdge = positionInfo.pageX - scrollLeft < 20;\n\n if (isNearRightEdge) {\n $document.scrollLeft(scrollLeft + 20);\n } else if (isNearLeftEdge && canScrollLeft) {\n $document.scrollLeft(Math.max(scrollLeft - 20, 0));\n }\n }\n}\n","import { Node } from \"./node\";\nimport { JqTreeWidget } from \"./tree.jquery\";\n\nexport default class SelectNodeHandler {\n private treeWidget: JqTreeWidget;\n private selectedNodes: Set<NodeId>;\n private selectedSingleNode: Node | null;\n\n constructor(treeWidget: JqTreeWidget) {\n this.treeWidget = treeWidget;\n this.selectedNodes = new Set<NodeId>();\n this.clear();\n }\n\n public getSelectedNode(): Node | false {\n const selectedNodes = this.getSelectedNodes();\n\n if (selectedNodes.length) {\n return selectedNodes[0];\n } else {\n return false;\n }\n }\n\n public getSelectedNodes(): Node[] {\n if (this.selectedSingleNode) {\n return [this.selectedSingleNode];\n } else {\n const selectedNodes: Node[] = [];\n\n this.selectedNodes.forEach((id) => {\n const node = this.treeWidget.getNodeById(id);\n if (node) {\n selectedNodes.push(node);\n }\n });\n\n return selectedNodes;\n }\n }\n\n public getSelectedNodesUnder(parent: Node): Node[] {\n if (this.selectedSingleNode) {\n if (parent.isParentOf(this.selectedSingleNode)) {\n return [this.selectedSingleNode];\n } else {\n return [];\n }\n } else {\n const selectedNodes = [];\n\n for (const id in this.selectedNodes) {\n if (\n Object.prototype.hasOwnProperty.call(this.selectedNodes, id)\n ) {\n const node = this.treeWidget.getNodeById(id);\n if (node && parent.isParentOf(node)) {\n selectedNodes.push(node);\n }\n }\n }\n\n return selectedNodes;\n }\n }\n\n public isNodeSelected(node: Node): boolean {\n if (node.id != null) {\n return this.selectedNodes.has(node.id);\n } else if (this.selectedSingleNode) {\n return this.selectedSingleNode.element === node.element;\n } else {\n return false;\n }\n }\n\n public clear(): void {\n this.selectedNodes.clear();\n this.selectedSingleNode = null;\n }\n\n public removeFromSelection(node: Node, includeChildren = false): void {\n if (node.id == null) {\n if (\n this.selectedSingleNode &&\n node.element === this.selectedSingleNode.element\n ) {\n this.selectedSingleNode = null;\n }\n } else {\n this.selectedNodes.delete(node.id);\n\n if (includeChildren) {\n node.iterate(() => {\n if (node.id != null) {\n this.selectedNodes.delete(node.id);\n }\n return true;\n });\n }\n }\n }\n\n public addToSelection(node: Node): void {\n if (node.id != null) {\n this.selectedNodes.add(node.id);\n } else {\n this.selectedSingleNode = node;\n }\n }\n\n public isFocusOnTree(): boolean {\n const activeElement = document.activeElement;\n\n return Boolean(\n activeElement &&\n activeElement.tagName === \"SPAN\" &&\n this.treeWidget._containsElement(activeElement as HTMLElement)\n );\n }\n}\n","import { Position, Node } from \"./node\";\nimport { JqTreeWidget } from \"./tree.jquery\";\nimport { DropHint } from \"./types\";\n\nexport type OnFinishOpenNode = (node: Node) => void;\n\nexport class NodeElement {\n public node: Node;\n public $element: JQuery<HTMLElement>;\n protected treeWidget: JqTreeWidget;\n\n constructor(node: Node, treeWidget: JqTreeWidget) {\n this.init(node, treeWidget);\n }\n\n public init(node: Node, treeWidget: JqTreeWidget): void {\n this.node = node;\n this.treeWidget = treeWidget;\n\n if (!node.element) {\n const element = this.treeWidget.element.get(0);\n\n if (element) {\n node.element = element;\n }\n }\n\n if (node.element) {\n this.$element = jQuery(node.element);\n }\n }\n\n public addDropHint(position: number): DropHint {\n if (this.mustShowBorderDropHint(position)) {\n return new BorderDropHint(\n this.$element,\n this.treeWidget._getScrollLeft()\n );\n } else {\n return new GhostDropHint(this.node, this.$element, position);\n }\n }\n\n public select(mustSetFocus: boolean): void {\n const $li = this.getLi();\n\n $li.addClass(\"jqtree-selected\");\n $li.attr(\"aria-selected\", \"true\");\n\n const $span = this.getSpan();\n $span.attr(\"tabindex\", this.treeWidget.options.tabIndex ?? null);\n\n if (mustSetFocus) {\n $span.trigger(\"focus\");\n }\n }\n\n public deselect(): void {\n const $li = this.getLi();\n\n $li.removeClass(\"jqtree-selected\");\n $li.attr(\"aria-selected\", \"false\");\n\n const $span = this.getSpan();\n $span.removeAttr(\"tabindex\");\n\n $span.blur();\n }\n\n protected getUl(): JQuery<HTMLElement> {\n return this.$element.children(\"ul:first\");\n }\n\n protected getSpan(): JQuery<HTMLElement> {\n return this.$element\n .children(\".jqtree-element\")\n .find(\"span.jqtree-title\");\n }\n\n protected getLi(): JQuery<HTMLElement> {\n return this.$element;\n }\n\n protected mustShowBorderDropHint(position: number): boolean {\n return position === Position.Inside;\n }\n}\n\nexport class FolderElement extends NodeElement {\n public open(\n onFinished: OnFinishOpenNode | null,\n slide = true,\n animationSpeed: JQuery.Duration | string = \"fast\"\n ): void {\n if (this.node.is_open) {\n return;\n }\n\n this.node.is_open = true;\n\n const $button = this.getButton();\n $button.removeClass(\"jqtree-closed\");\n $button.html(\"\");\n\n const buttonEl = $button.get(0);\n\n if (buttonEl) {\n const icon =\n this.treeWidget.renderer.openedIconElement.cloneNode(true);\n\n buttonEl.appendChild(icon);\n }\n\n const doOpen = (): void => {\n const $li = this.getLi();\n $li.removeClass(\"jqtree-closed\");\n\n const $span = this.getSpan();\n $span.attr(\"aria-expanded\", \"true\");\n\n if (onFinished) {\n onFinished(this.node);\n }\n\n this.treeWidget._triggerEvent(\"tree.open\", {\n node: this.node,\n });\n };\n\n if (slide) {\n this.getUl().slideDown(animationSpeed, doOpen);\n } else {\n this.getUl().show();\n doOpen();\n }\n }\n\n public close(\n slide = true,\n animationSpeed: JQuery.Duration | string = \"fast\"\n ): void {\n if (!this.node.is_open) {\n return;\n }\n\n this.node.is_open = false;\n\n const $button = this.getButton();\n $button.addClass(\"jqtree-closed\");\n $button.html(\"\");\n\n const buttonEl = $button.get(0);\n\n if (buttonEl) {\n const icon =\n this.treeWidget.renderer.closedIconElement.cloneNode(true);\n\n buttonEl.appendChild(icon);\n }\n\n const doClose = (): void => {\n const $li = this.getLi();\n $li.addClass(\"jqtree-closed\");\n\n const $span = this.getSpan();\n $span.attr(\"aria-expanded\", \"false\");\n\n this.treeWidget._triggerEvent(\"tree.close\", {\n node: this.node,\n });\n };\n\n if (slide) {\n this.getUl().slideUp(animationSpeed, doClose);\n } else {\n this.getUl().hide();\n doClose();\n }\n }\n\n protected mustShowBorderDropHint(position: number): boolean {\n return !this.node.is_open && position === Position.Inside;\n }\n\n private getButton(): JQuery {\n return this.$element\n .children(\".jqtree-element\")\n .find(\"a.jqtree-toggler\");\n }\n}\n\nexport class BorderDropHint implements DropHint {\n private $hint: JQuery<Element>;\n\n constructor($element: JQuery<Element>, scrollLeft: number) {\n const $div = $element.children(\".jqtree-element\");\n\n const elWidth = $element.width() || 0;\n const width = Math.max(elWidth + scrollLeft - 4, 0);\n\n const elHeight = $div.outerHeight() || 0;\n const height = Math.max(elHeight - 4, 0);\n\n this.$hint = jQuery('<span class=\"jqtree-border\"></span>');\n $div.append(this.$hint);\n\n this.$hint.css({ width, height });\n }\n\n public remove(): void {\n this.$hint.remove();\n }\n}\n\nclass GhostDropHint implements DropHint {\n private $element: JQuery<Element>;\n private node: Node;\n private $ghost: JQuery;\n\n constructor(node: Node, $element: JQuery<Element>, position: number) {\n this.$element = $element;\n\n this.node = node;\n this.$ghost = jQuery(\n `<li class=\"jqtree_common jqtree-ghost\"><span class=\"jqtree_common jqtree-circle\"></span>\n <span class=\"jqtree_common jqtree-line\"></span></li>`\n );\n\n if (position === Position.After) {\n this.moveAfter();\n } else if (position === Position.Before) {\n this.moveBefore();\n } else if (position === Position.Inside) {\n if (node.isFolder() && node.is_open) {\n this.moveInsideOpenFolder();\n } else {\n this.moveInside();\n }\n }\n }\n\n public remove(): void {\n this.$ghost.remove();\n }\n\n public moveAfter(): void {\n this.$element.after(this.$ghost);\n }\n\n public moveBefore(): void {\n this.$element.before(this.$ghost);\n }\n\n public moveInsideOpenFolder(): void {\n const childElement = this.node.children[0].element;\n\n if (childElement) {\n jQuery(childElement).before(this.$ghost);\n }\n }\n\n public moveInside(): void {\n this.$element.after(this.$ghost);\n this.$ghost.addClass(\"jqtree-inside\");\n }\n}\n","import __version__ from \"./version\";\nimport { DragAndDropHandler } from \"./dragAndDropHandler\";\nimport ElementsRenderer from \"./elementsRenderer\";\nimport DataLoader, { HandleFinishedLoading } from \"./dataLoader\";\nimport KeyHandler from \"./keyHandler\";\nimport MouseWidget from \"./mouse.widget\";\nimport { PositionInfo } from \"./types\";\nimport SaveStateHandler, { SavedState } from \"./saveStateHandler\";\nimport ScrollHandler from \"./scrollHandler\";\nimport SelectNodeHandler from \"./selectNodeHandler\";\nimport SimpleWidget from \"./simple.widget\";\nimport { Node, getPosition } from \"./node\";\nimport { isFunction } from \"./util\";\nimport { FolderElement, NodeElement, OnFinishOpenNode } from \"./nodeElement\";\nimport { JQTreeOptions } from \"./jqtreeOptions\";\n\ninterface ClickTarget {\n node: Node;\n type: \"button\" | \"label\";\n}\n\ninterface SelectNodeOptions {\n mustToggle?: boolean;\n mustSetFocus?: boolean;\n}\n\nconst NODE_PARAM_IS_EMPTY = \"Node parameter is empty\";\nconst PARAM_IS_EMPTY = \"Parameter is empty: \";\n\nexport class JqTreeWidget extends MouseWidget<JQTreeOptions> {\n protected static defaults: JQTreeOptions = {\n animationSpeed: \"fast\",\n autoEscape: true,\n autoOpen: false, // true / false / int (open n levels starting at 0)\n buttonLeft: true,\n // The symbol to use for a closed node - ► BLACK RIGHT-POINTING POINTER\n // http://www.fileformat.info/info/unicode/char/25ba/index.htm\n closedIcon: undefined,\n data: undefined,\n dataFilter: undefined,\n dataUrl: undefined,\n dragAndDrop: false,\n keyboardSupport: true,\n nodeClass: Node,\n onCanMove: undefined, // Can this node be moved?\n onCanMoveTo: undefined, // Can this node be moved to this position? function(moved_node, target_node, position)\n onCanSelectNode: undefined,\n onCreateLi: undefined,\n onDragMove: undefined,\n onDragStop: undefined,\n onGetStateFromStorage: undefined,\n onIsMoveHandle: undefined,\n onLoadFailed: undefined,\n onLoading: undefined,\n onSetStateFromStorage: undefined,\n openedIcon: \"&#x25bc;\",\n openFolderDelay: 500, // The delay for opening a folder during drag and drop; the value is in milliseconds\n // The symbol to use for an open node - ▼ BLACK DOWN-POINTING TRIANGLE\n // http://www.fileformat.info/info/unicode/char/25bc/index.htm\n rtl: undefined, // right-to-left support; true / false (default)\n saveState: false, // true / false / string (cookie name)\n selectable: true,\n showEmptyFolder: false,\n slide: true, // must display slide animation?\n startDndDelay: 300, // The delay for starting dnd (in milliseconds)\n tabIndex: 0,\n useContextMenu: true,\n };\n\n public element: JQuery;\n public tree: Node;\n public dndHandler: DragAndDropHandler;\n public renderer: ElementsRenderer;\n public dataLoader: DataLoader;\n public scrollHandler: ScrollHandler;\n public selectNodeHandler: SelectNodeHandler;\n\n private isInitialized: boolean;\n private saveStateHandler: SaveStateHandler;\n private keyHandler: KeyHandler;\n\n public toggle(node: Node, slideParam: null | boolean = null): JQuery {\n if (!node) {\n throw Error(NODE_PARAM_IS_EMPTY);\n }\n\n const slide = slideParam ?? this.options.slide;\n\n if (node.is_open) {\n this.closeNode(node, slide);\n } else {\n this.openNode(node, slide);\n }\n\n return this.element;\n }\n\n public getTree(): Node {\n return this.tree;\n }\n\n public selectNode(\n node: Node | null,\n optionsParam?: SelectNodeOptions\n ): JQuery {\n this.doSelectNode(node, optionsParam);\n return this.element;\n }\n\n public getSelectedNode(): Node | false {\n return this.selectNodeHandler.getSelectedNode();\n }\n\n public toJson(): string {\n return JSON.stringify(this.tree.getData());\n }\n\n public loadData(data: NodeData[], parentNode: Node | null): JQuery {\n this.doLoadData(data, parentNode);\n return this.element;\n }\n\n /*\n signatures:\n - loadDataFromUrl(url, parent_node=null, on_finished=null)\n loadDataFromUrl('/my_data');\n loadDataFromUrl('/my_data', node1);\n loadDataFromUrl('/my_data', node1, function() { console.log('finished'); });\n loadDataFromUrl('/my_data', null, function() { console.log('finished'); });\n\n - loadDataFromUrl(parent_node=null, on_finished=null)\n loadDataFromUrl();\n loadDataFromUrl(node1);\n loadDataFromUrl(null, function() { console.log('finished'); });\n loadDataFromUrl(node1, function() { console.log('finished'); });\n */\n public loadDataFromUrl(\n param1: string | null | Node,\n param2?: Node | null | HandleFinishedLoading,\n param3?: HandleFinishedLoading\n ): JQuery {\n if (typeof param1 === \"string\") {\n // first parameter is url\n this.doLoadDataFromUrl(\n param1,\n param2 as Node | null,\n param3 ?? null\n );\n } else {\n // first parameter is not url\n this.doLoadDataFromUrl(\n null,\n param1,\n param2 as HandleFinishedLoading | null\n );\n }\n\n return this.element;\n }\n\n public reload(onFinished: HandleFinishedLoading | null): JQuery {\n this.doLoadDataFromUrl(null, null, onFinished);\n return this.element;\n }\n\n public refresh(): JQuery {\n this._refreshElements(null);\n return this.element;\n }\n\n public getNodeById(nodeId: NodeId): Node | null {\n return this.tree.getNodeById(nodeId);\n }\n\n public getNodeByName(name: string): Node | null {\n return this.tree.getNodeByName(name);\n }\n\n public getNodeByNameMustExist(name: string): Node {\n return this.tree.getNodeByNameMustExist(name);\n }\n\n public getNodesByProperty(key: string, value: unknown): Node[] {\n return this.tree.getNodesByProperty(key, value);\n }\n\n public getNodeByHtmlElement(\n element: HTMLElement | JQuery<HTMLElement>\n ): Node | null {\n return this.getNode(jQuery(element));\n }\n\n public getNodeByCallback(callback: (node: Node) => boolean): Node | null {\n return this.tree.getNodeByCallback(callback);\n }\n\n public openNode(\n node: Node,\n param1?: boolean | OnFinishOpenNode,\n param2?: OnFinishOpenNode\n ): JQuery {\n if (!node) {\n throw Error(NODE_PARAM_IS_EMPTY);\n }\n\n const parseParams = (): [boolean, OnFinishOpenNode | null] => {\n let onFinished: OnFinishOpenNode | null;\n let slide: boolean | null;\n\n if (isFunction(param1)) {\n onFinished = param1 as OnFinishOpenNode | null;\n slide = null;\n } else {\n slide = param1 as boolean;\n onFinished = param2 as OnFinishOpenNode;\n }\n\n if (slide == null) {\n slide = this.options.slide ?? false;\n }\n\n return [slide, onFinished];\n };\n\n const [slide, onFinished] = parseParams();\n\n this._openNode(node, slide, onFinished);\n return this.element;\n }\n\n public closeNode(node: Node, slideParam?: null | boolean): JQuery {\n if (!node) {\n throw Error(NODE_PARAM_IS_EMPTY);\n }\n\n const slide = slideParam ?? this.options.slide;\n\n if (node.isFolder() || node.isEmptyFolder) {\n new FolderElement(node, this).close(\n slide,\n this.options.animationSpeed\n );\n\n this.saveState();\n }\n\n return this.element;\n }\n\n public isDragging(): boolean {\n return this.dndHandler.isDragging;\n }\n\n public refreshHitAreas(): JQuery {\n this.dndHandler.refresh();\n return this.element;\n }\n\n public addNodeAfter(\n newNodeInfo: NodeData,\n existingNode: Node\n ): Node | null {\n const newNode = existingNode.addAfter(newNodeInfo);\n\n if (newNode) {\n this._refreshElements(existingNode.parent);\n }\n\n return newNode;\n }\n\n public addNodeBefore(\n newNodeInfo: NodeData,\n existingNode: Node\n ): Node | null {\n if (!existingNode) {\n throw Error(PARAM_IS_EMPTY + \"existingNode\");\n }\n\n const newNode = existingNode.addBefore(newNodeInfo);\n\n if (newNode) {\n this._refreshElements(existingNode.parent);\n }\n\n return newNode;\n }\n\n public addParentNode(\n newNodeInfo: NodeData,\n existingNode: Node\n ): Node | null {\n if (!existingNode) {\n throw Error(PARAM_IS_EMPTY + \"existingNode\");\n }\n\n const newNode = existingNode.addParent(newNodeInfo);\n\n if (newNode) {\n this._refreshElements(newNode.parent);\n }\n\n return newNode;\n }\n\n public removeNode(node: Node): JQuery {\n if (!node) {\n throw Error(NODE_PARAM_IS_EMPTY);\n }\n\n if (!node.parent) {\n throw Error(\"Node has no parent\");\n }\n\n this.selectNodeHandler.removeFromSelection(node, true); // including children\n\n const parent = node.parent;\n node.remove();\n this._refreshElements(parent);\n\n return this.element;\n }\n\n public appendNode(newNodeInfo: NodeData, parentNodeParam?: Node): Node {\n const parentNode = parentNodeParam || this.tree;\n\n const node = parentNode.append(newNodeInfo);\n\n this._refreshElements(parentNode);\n\n return node;\n }\n\n public prependNode(newNodeInfo: NodeData, parentNodeParam?: Node): Node {\n const parentNode = parentNodeParam ?? this.tree;\n\n const node = parentNode.prepend(newNodeInfo);\n\n this._refreshElements(parentNode);\n\n return node;\n }\n\n public updateNode(node: Node, data: NodeData): JQuery {\n if (!node) {\n throw Error(NODE_PARAM_IS_EMPTY);\n }\n\n const idIsChanged =\n typeof data === \"object\" && data.id && data.id !== node.id;\n\n if (idIsChanged) {\n this.tree.removeNodeFromIndex(node);\n }\n\n node.setData(data);\n\n if (idIsChanged) {\n this.tree.addNodeToIndex(node);\n }\n\n if (\n typeof data === \"object\" &&\n data[\"children\"] &&\n data[\"children\"] instanceof Array\n ) {\n node.removeChildren();\n\n if (data.children.length) {\n node.loadFromData(data.children as Node[]);\n }\n }\n\n this._refreshElements(node);\n\n return this.element;\n }\n\n private isSelectedNodeInSubtree(subtree: Node): boolean {\n const selectedNode = this.getSelectedNode();\n\n if (!selectedNode) {\n return false;\n } else {\n return subtree === selectedNode || subtree.isParentOf(selectedNode);\n }\n }\n\n public moveNode(node: Node, targetNode: Node, position: string): JQuery {\n if (!node) {\n throw Error(NODE_PARAM_IS_EMPTY);\n }\n\n if (!targetNode) {\n throw Error(PARAM_IS_EMPTY + \"targetNode\");\n }\n\n const positionIndex = getPosition(position);\n\n if (positionIndex !== undefined) {\n this.tree.moveNode(node, targetNode, positionIndex);\n this._refreshElements(null);\n }\n\n return this.element;\n }\n\n public getStateFromStorage(): SavedState | null {\n return this.saveStateHandler.getStateFromStorage();\n }\n\n public addToSelection(node: Node, mustSetFocus?: boolean): JQuery {\n if (!node) {\n throw Error(NODE_PARAM_IS_EMPTY);\n }\n\n this.selectNodeHandler.addToSelection(node);\n\n this._getNodeElementForNode(node).select(\n mustSetFocus === undefined ? true : mustSetFocus\n );\n\n this.saveState();\n\n return this.element;\n }\n\n public getSelectedNodes(): Node[] {\n return this.selectNodeHandler.getSelectedNodes();\n }\n\n public isNodeSelected(node: Node): boolean {\n if (!node) {\n throw Error(NODE_PARAM_IS_EMPTY);\n }\n\n return this.selectNodeHandler.isNodeSelected(node);\n }\n\n public removeFromSelection(node: Node): JQuery {\n if (!node) {\n throw Error(NODE_PARAM_IS_EMPTY);\n }\n\n this.selectNodeHandler.removeFromSelection(node);\n\n this._getNodeElementForNode(node).deselect();\n this.saveState();\n\n return this.element;\n }\n\n public scrollToNode(node: Node): JQuery {\n if (!node) {\n throw Error(NODE_PARAM_IS_EMPTY);\n }\n\n const nodeOffset = jQuery(node.element).offset();\n const nodeTop = nodeOffset ? nodeOffset.top : 0;\n\n const treeOffset = this.$el.offset();\n const treeTop = treeOffset ? treeOffset.top : 0;\n\n const top = nodeTop - treeTop;\n\n this.scrollHandler.scrollToY(top);\n\n return this.element;\n }\n\n public getState(): SavedState | null {\n return this.saveStateHandler.getState();\n }\n\n public setState(state: SavedState): JQuery {\n this.saveStateHandler.setInitialState(state);\n this._refreshElements(null);\n\n return this.element;\n }\n\n public setOption(option: string, value: unknown): JQuery {\n (this.options as unknown as Record<string, unknown>)[option] = value;\n return this.element;\n }\n\n public moveDown(): JQuery {\n const selectedNode = this.getSelectedNode();\n if (selectedNode) {\n this.keyHandler.moveDown(selectedNode);\n }\n\n return this.element;\n }\n\n public moveUp(): JQuery {\n const selectedNode = this.getSelectedNode();\n if (selectedNode) {\n this.keyHandler.moveUp(selectedNode);\n }\n\n return this.element;\n }\n\n public getVersion(): string {\n return __version__;\n }\n\n public _triggerEvent(\n eventName: string,\n values?: Record<string, unknown>\n ): JQuery.Event {\n const event = jQuery.Event(eventName, values);\n this.element.trigger(event);\n return event;\n }\n\n public _openNode(\n node: Node,\n slide = true,\n onFinished: OnFinishOpenNode | null\n ): void {\n const doOpenNode = (\n _node: Node,\n _slide: boolean,\n _onFinished: OnFinishOpenNode | null\n ): void => {\n const folderElement = new FolderElement(_node, this);\n folderElement.open(\n _onFinished,\n _slide,\n this.options.animationSpeed\n );\n };\n\n if (node.isFolder() || node.isEmptyFolder) {\n if (node.load_on_demand) {\n this.loadFolderOnDemand(node, slide, onFinished);\n } else {\n let parent = node.parent;\n\n while (parent) {\n // nb: do not open root element\n if (parent.parent) {\n doOpenNode(parent, false, null);\n }\n parent = parent.parent;\n }\n\n doOpenNode(node, slide, onFinished);\n this.saveState();\n }\n }\n }\n\n /*\n Redraw the tree or part of the tree.\n from_node: redraw this subtree\n */\n public _refreshElements(fromNode: Node | null): void {\n const mustSetFocus = this.selectNodeHandler.isFocusOnTree();\n const mustSelect = fromNode\n ? this.isSelectedNodeInSubtree(fromNode)\n : false;\n\n this.renderer.render(fromNode);\n\n if (mustSelect) {\n this.selectCurrentNode(mustSetFocus);\n }\n\n this._triggerEvent(\"tree.refresh\");\n }\n\n public _getNodeElementForNode(node: Node): NodeElement {\n if (node.isFolder()) {\n return new FolderElement(node, this);\n } else {\n return new NodeElement(node, this);\n }\n }\n\n public _getNodeElement($element: JQuery<HTMLElement>): NodeElement | null {\n const node = this.getNode($element);\n if (node) {\n return this._getNodeElementForNode(node);\n } else {\n return null;\n }\n }\n\n public _containsElement(element: HTMLElement): boolean {\n const node = this.getNode(jQuery(element));\n\n return node != null && node.tree === this.tree;\n }\n\n public _getScrollLeft(): number {\n return this.scrollHandler.getScrollLeft();\n }\n\n public init(): void {\n super.init();\n\n this.element = this.$el;\n this.isInitialized = false;\n\n this.options.rtl = this.getRtlOption();\n\n if (this.options.closedIcon == null) {\n this.options.closedIcon = this.getDefaultClosedIcon();\n }\n\n this.renderer = new ElementsRenderer(this);\n this.dataLoader = new DataLoader(this);\n this.saveStateHandler = new SaveStateHandler(this);\n this.selectNodeHandler = new SelectNodeHandler(this);\n this.dndHandler = new DragAndDropHandler(this);\n this.scrollHandler = new ScrollHandler(this);\n this.keyHandler = new KeyHandler(this);\n\n this.initData();\n\n this.element.on(\"click\", this.handleClick);\n this.element.on(\"dblclick\", this.handleDblclick);\n\n if (this.options.useContextMenu) {\n this.element.on(\"contextmenu\", this.handleContextmenu);\n }\n }\n\n public deinit(): void {\n this.element.empty();\n this.element.off();\n\n this.keyHandler.deinit();\n\n this.tree = new Node({}, true);\n\n super.deinit();\n }\n\n protected mouseCapture(positionInfo: PositionInfo): boolean | null {\n if (this.options.dragAndDrop) {\n return this.dndHandler.mouseCapture(positionInfo);\n } else {\n return false;\n }\n }\n\n protected mouseStart(positionInfo: PositionInfo): boolean {\n if (this.options.dragAndDrop) {\n return this.dndHandler.mouseStart(positionInfo);\n } else {\n return false;\n }\n }\n\n protected mouseDrag(positionInfo: PositionInfo): boolean {\n if (this.options.dragAndDrop) {\n const result = this.dndHandler.mouseDrag(positionInfo);\n\n this.scrollHandler.checkScrolling();\n return result;\n } else {\n return false;\n }\n }\n\n protected mouseStop(positionInfo: PositionInfo): boolean {\n if (this.options.dragAndDrop) {\n return this.dndHandler.mouseStop(positionInfo);\n } else {\n return false;\n }\n }\n\n protected getMouseDelay(): number {\n return this.options.startDndDelay ?? 0;\n }\n\n private initData(): void {\n if (this.options.data) {\n this.doLoadData(this.options.data, null);\n } else {\n const dataUrl = this.getDataUrlInfo(null);\n\n if (dataUrl) {\n this.doLoadDataFromUrl(null, null, null);\n } else {\n this.doLoadData([], null);\n }\n }\n }\n\n private getDataUrlInfo(node: Node | null): JQuery.AjaxSettings | null {\n const dataUrl =\n this.options.dataUrl || (this.element.data(\"url\") as string | null);\n\n const getUrlFromString = (url: string): JQuery.AjaxSettings => {\n const urlInfo: JQuery.AjaxSettings = { url };\n\n setUrlInfoData(urlInfo);\n\n return urlInfo;\n };\n\n const setUrlInfoData = (urlInfo: JQuery.AjaxSettings): void => {\n if (node?.id) {\n // Load on demand of a subtree; add node parameter\n const data = { node: node.id };\n urlInfo[\"data\"] = data;\n } else {\n // Add selected_node parameter\n const selectedNodeId = this.getNodeIdToBeSelected();\n if (selectedNodeId) {\n const data = { selected_node: selectedNodeId };\n urlInfo[\"data\"] = data;\n }\n }\n };\n\n if (typeof dataUrl === \"function\") {\n return dataUrl(node);\n } else if (typeof dataUrl === \"string\") {\n return getUrlFromString(dataUrl);\n } else if (dataUrl && typeof dataUrl === \"object\") {\n setUrlInfoData(dataUrl);\n return dataUrl;\n } else {\n return null;\n }\n }\n\n private getNodeIdToBeSelected(): NodeId | null {\n if (this.options.saveState) {\n return this.saveStateHandler.getNodeIdToBeSelected();\n } else {\n return null;\n }\n }\n\n private initTree(data: NodeData[]): void {\n const doInit = (): void => {\n if (!this.isInitialized) {\n this.isInitialized = true;\n this._triggerEvent(\"tree.init\");\n }\n };\n\n if (!this.options.nodeClass) {\n return;\n }\n\n this.tree = new this.options.nodeClass(\n null,\n true,\n this.options.nodeClass\n );\n\n this.selectNodeHandler.clear();\n\n this.tree.loadFromData(data);\n\n const mustLoadOnDemand = this.setInitialState();\n\n this._refreshElements(null);\n\n if (!mustLoadOnDemand) {\n doInit();\n } else {\n // Load data on demand and then init the tree\n this.setInitialStateOnDemand(doInit);\n }\n }\n\n // Set initial state, either by restoring the state or auto-opening nodes\n // result: must load nodes on demand?\n private setInitialState(): boolean {\n const restoreState = (): boolean[] => {\n // result: is state restored, must load on demand?\n if (!this.options.saveState) {\n return [false, false];\n } else {\n const state = this.saveStateHandler.getStateFromStorage();\n\n if (!state) {\n return [false, false];\n } else {\n const mustLoadOnDemand =\n this.saveStateHandler.setInitialState(state);\n\n // return true: the state is restored\n return [true, mustLoadOnDemand];\n }\n }\n };\n\n const autoOpenNodes = (): boolean => {\n // result: must load on demand?\n if (this.options.autoOpen === false) {\n return false;\n }\n\n const maxLevel = this.getAutoOpenMaxLevel();\n let mustLoadOnDemand = false;\n\n this.tree.iterate((node: Node, level: number) => {\n if (node.load_on_demand) {\n mustLoadOnDemand = true;\n return false;\n } else if (!node.hasChildren()) {\n return false;\n } else {\n node.is_open = true;\n return level !== maxLevel;\n }\n });\n\n return mustLoadOnDemand;\n };\n\n let [isRestored, mustLoadOnDemand] = restoreState(); // eslint-disable-line prefer-const\n\n if (!isRestored) {\n mustLoadOnDemand = autoOpenNodes();\n }\n\n return mustLoadOnDemand;\n }\n\n // Set the initial state for nodes that are loaded on demand\n // Call cb_finished when done\n private setInitialStateOnDemand(cbFinished: () => void): void {\n const restoreState = (): boolean => {\n if (!this.options.saveState) {\n return false;\n } else {\n const state = this.saveStateHandler.getStateFromStorage();\n\n if (!state) {\n return false;\n } else {\n this.saveStateHandler.setInitialStateOnDemand(\n state,\n cbFinished\n );\n\n return true;\n }\n }\n };\n\n const autoOpenNodes = (): void => {\n const maxLevel = this.getAutoOpenMaxLevel();\n let loadingCount = 0;\n\n const loadAndOpenNode = (node: Node): void => {\n loadingCount += 1;\n this._openNode(node, false, () => {\n loadingCount -= 1;\n openNodes();\n });\n };\n\n const openNodes = (): void => {\n this.tree.iterate((node: Node, level: number) => {\n if (node.load_on_demand) {\n if (!node.is_loading) {\n loadAndOpenNode(node);\n }\n\n return false;\n } else {\n this._openNode(node, false, null);\n\n return level !== maxLevel;\n }\n });\n\n if (loadingCount === 0) {\n cbFinished();\n }\n };\n\n openNodes();\n };\n\n if (!restoreState()) {\n autoOpenNodes();\n }\n }\n\n private getAutoOpenMaxLevel(): number {\n if (this.options.autoOpen === true) {\n return -1;\n } else if (typeof this.options.autoOpen === \"number\") {\n return this.options.autoOpen;\n } else if (typeof this.options.autoOpen === \"string\") {\n return parseInt(this.options.autoOpen, 10);\n } else {\n return 0;\n }\n }\n\n private handleClick = (\n e: JQuery.ClickEvent<HTMLElement, any, HTMLElement, HTMLElement>\n ): void => {\n const clickTarget = this.getClickTarget(e.target);\n\n if (clickTarget) {\n if (clickTarget.type === \"button\") {\n this.toggle(clickTarget.node, this.options.slide);\n\n e.preventDefault();\n e.stopPropagation();\n } else if (clickTarget.type === \"label\") {\n const node = clickTarget.node;\n const event = this._triggerEvent(\"tree.click\", {\n node,\n click_event: e,\n });\n\n if (!event.isDefaultPrevented()) {\n this.doSelectNode(node);\n }\n }\n }\n };\n\n private handleDblclick = (\n e: JQuery.DoubleClickEvent<HTMLElement, any, HTMLElement, HTMLElement>\n ): void => {\n const clickTarget = this.getClickTarget(e.target);\n\n if (clickTarget?.type === \"label\") {\n this._triggerEvent(\"tree.dblclick\", {\n node: clickTarget.node,\n click_event: e,\n });\n }\n };\n\n private getClickTarget(element: EventTarget): ClickTarget | null {\n const $target = jQuery(element);\n\n const $button = $target.closest(\".jqtree-toggler\");\n\n if ($button.length) {\n const node = this.getNode($button as JQuery<HTMLElement>);\n\n if (node) {\n return {\n type: \"button\",\n node,\n };\n }\n } else {\n const $el = $target.closest(\".jqtree-element\");\n if ($el.length) {\n const node = this.getNode($el as JQuery<HTMLElement>);\n if (node) {\n return {\n type: \"label\",\n node,\n };\n }\n }\n }\n\n return null;\n }\n\n private getNode($element: JQuery<HTMLElement>): null | Node {\n const $li = $element.closest(\"li.jqtree_common\");\n if ($li.length === 0) {\n return null;\n } else {\n return $li.data(\"node\") as Node;\n }\n }\n\n private handleContextmenu = (\n e: JQuery.ContextMenuEvent<HTMLElement, any, HTMLElement, HTMLElement>\n ) => {\n const $div = jQuery(e.target).closest(\"ul.jqtree-tree .jqtree-element\");\n if ($div.length) {\n const node = this.getNode($div);\n if (node) {\n e.preventDefault();\n e.stopPropagation();\n\n this._triggerEvent(\"tree.contextmenu\", {\n node,\n click_event: e,\n });\n return false;\n }\n }\n\n return null;\n };\n\n private saveState(): void {\n if (this.options.saveState) {\n this.saveStateHandler.saveState();\n }\n }\n\n private selectCurrentNode(mustSetFocus: boolean): void {\n const node = this.getSelectedNode();\n if (node) {\n const nodeElement = this._getNodeElementForNode(node);\n if (nodeElement) {\n nodeElement.select(mustSetFocus);\n }\n }\n }\n\n private deselectCurrentNode(): void {\n const node = this.getSelectedNode();\n if (node) {\n this.removeFromSelection(node);\n }\n }\n\n private getDefaultClosedIcon(): string {\n if (this.options.rtl) {\n // triangle to the left\n return \"&#x25c0;\";\n } else {\n // triangle to the right\n return \"&#x25ba;\";\n }\n }\n\n private getRtlOption(): boolean {\n if (this.options.rtl != null) {\n return this.options.rtl;\n } else {\n const dataRtl = this.element.data(\"rtl\") as unknown;\n\n if (\n dataRtl !== null &&\n dataRtl !== false &&\n dataRtl !== undefined\n ) {\n return true;\n } else {\n return false;\n }\n }\n }\n\n private doSelectNode(\n node: Node | null,\n optionsParam?: SelectNodeOptions\n ): void {\n const saveState = (): void => {\n if (this.options.saveState) {\n this.saveStateHandler.saveState();\n }\n };\n\n if (!node) {\n // Called with empty node -> deselect current node\n this.deselectCurrentNode();\n saveState();\n return;\n }\n const defaultOptions = { mustSetFocus: true, mustToggle: true };\n const selectOptions = { ...defaultOptions, ...(optionsParam || {}) };\n\n const canSelect = (): boolean => {\n if (this.options.onCanSelectNode) {\n return (\n this.options.selectable === true &&\n this.options.onCanSelectNode(node)\n );\n } else {\n return this.options.selectable === true;\n }\n };\n\n const openParents = (): void => {\n const parent = node.parent;\n\n if (parent && parent.parent && !parent.is_open) {\n this.openNode(parent, false);\n }\n };\n\n if (!canSelect()) {\n return;\n }\n\n if (this.selectNodeHandler.isNodeSelected(node)) {\n if (selectOptions.mustToggle) {\n this.deselectCurrentNode();\n this._triggerEvent(\"tree.select\", {\n node: null,\n previous_node: node,\n });\n }\n } else {\n const deselectedNode = this.getSelectedNode() || null;\n this.deselectCurrentNode();\n this.addToSelection(node, selectOptions.mustSetFocus);\n\n this._triggerEvent(\"tree.select\", {\n node,\n deselected_node: deselectedNode,\n });\n openParents();\n }\n\n saveState();\n }\n\n private doLoadData(data: NodeData[] | null, parentNode: Node | null): void {\n if (!data) {\n return;\n } else {\n this._triggerEvent(\"tree.load_data\", { tree_data: data });\n\n if (parentNode) {\n this.deselectNodes(parentNode);\n this.loadSubtree(data, parentNode);\n } else {\n this.initTree(data);\n }\n\n if (this.isDragging()) {\n this.dndHandler.refresh();\n }\n }\n }\n\n private deselectNodes(parentNode: Node): void {\n const selectedNodesUnderParent =\n this.selectNodeHandler.getSelectedNodesUnder(parentNode);\n for (const n of selectedNodesUnderParent) {\n this.selectNodeHandler.removeFromSelection(n);\n }\n }\n\n private loadSubtree(data: NodeData[], parentNode: Node): void {\n parentNode.loadFromData(data);\n\n parentNode.load_on_demand = false;\n parentNode.is_loading = false;\n\n this._refreshElements(parentNode);\n }\n\n private doLoadDataFromUrl(\n urlInfoParam: string | JQuery.AjaxSettings | null,\n parentNode: Node | null,\n onFinished: HandleFinishedLoading | null\n ): void {\n const urlInfo = urlInfoParam || this.getDataUrlInfo(parentNode);\n\n this.dataLoader.loadFromUrl(urlInfo, parentNode, onFinished);\n }\n\n private loadFolderOnDemand(\n node: Node,\n slide = true,\n onFinished: OnFinishOpenNode | null\n ): void {\n node.is_loading = true;\n\n this.doLoadDataFromUrl(null, node, () => {\n this._openNode(node, slide, onFinished);\n });\n }\n}\n\nSimpleWidget.register(JqTreeWidget, \"tree\");\n"],"names":["version","Position","positionNames","before","Before","after","After","inside","Inside","none","None","getPositionName","position","name","Object","prototype","hasOwnProperty","call","getPosition","isNodeRecordWithChildren","data","Array","Node","o","isRoot","nodeClass","isEmptyFolder","load_on_demand","setData","children","parent","idMapping","Map","tree","key","value","removeChildren","node","createNode","addChild","length","loadFromData","push","setParent","index","splice","doRemoveChild","indexOf","hasChildren","callback","_iterate","level","child","result","movedNode","targetNode","isParentOf","addChildAtPosition","getChildIndex","includeParent","getDataFromNodes","nodes","map","tmpNode","k","v","getNodeByCallback","n","iterate","nodeInfo","childIndex","newParent","originalParent","removeChild","nodeId","get","id","set","removeNodeFromIndex","previousIndex","nextIndex","filter","f","includeChildren","is_open","nextSibling","getNextSibling","getNextNode","previousSibling","getPreviousSibling","getLastChild","getParent","lastChild","addNode","nodeData","addChildren","childrenData","initFromData","addNodeToIndex","getNodeClass","DragAndDropHandler","treeWidget","hoveredArea","hitAreas","isDragging","currentItem","positionInfo","$element","jQuery","target","mustCaptureElement","options","onIsMoveHandle","nodeElement","_getNodeElement","onCanMove","pageX","undefined","pageY","refresh","offset","left","top","dragElement","DragElement","element","autoEscape","addClass","move","area","findHoveredArea","canMoveToArea","isFolder","stopOpenFolderTimer","mustOpenFolderTimer","startOpenFolderTimer","updateDropHint","removeDropHint","onDragMove","originalEvent","moveItem","clear","removeHover","removeHitAreas","removeClass","onDragStop","generateHitAreas","_getNodeElementForNode","hitAreasGenerator","HitAreasGenerator","getTreeDimensions","bottom","generate","is","onCanMoveTo","positionName","remove","previousGhost","x","y","dimensions","right","low","high","mid","addDropHint","folder","openFolder","_openNode","slide","openFolderDelay","openFolderTimer","window","setTimeout","clearTimeout","previousParent","doMove","moveNode","empty","_refreshElements","event","_triggerEvent","move_info","moved_node","target_node","previous_parent","do_move","original_event","isDefaultPrevented","el","width","height","_getScrollLeft","VisibleNodeIterator","isFirstNode","_iterateNode","nextNode","mustIterateInside","handleFirstNode","handleNode","handleOpenFolder","handleClosedFolder","childrenLength","forEach","_","i","handleAfterOpenFolder","currentNode","treeBottom","positions","lastTop","previousTop","group","generateHitAreasForGroup","addPosition","getTop","positionsInGroup","positionCount","Math","min","areaHeight","round","areaTop","nodeName","offsetX","offsetY","$tree","text","html","css","append","isInt","isFunction","getBoolString","ElementsRenderer","openedIconElement","createButtonElement","openedIcon","closedIconElement","closedIcon","fromNode","renderFromNode","renderFromRoot","createDomElements","$previousLi","li","createLi","getLevel","attachNodeData","isRootNode","ul","createUl","appendChild","classString","role","rtl","dragAndDrop","document","createElement","className","setAttribute","isSelected","Boolean","selectNodeHandler","isNodeSelected","mustShowFolder","showEmptyFolder","createFolderLi","createNodeLi","onCreateLi","buttonClasses","getButtonClasses","folderClasses","getFolderClasses","iconElement","div","buttonLink","cloneNode","buttonLeft","createTitleSpan","liClasses","join","isOpen","titleSpan","classes","tabIndex","textContent","innerHTML","is_loading","createTextNode","DataLoader","urlInfo","parentNode","onFinished","$el","getDomElement","addLoadingClass","notifyLoading","stopLoading","removeLoadingClass","handleSuccess","loadData","parseData","handleError","jqXHR","onLoadFailed","submitRequest","isLoading","onLoading","urlInfoInput","url","ajaxSettings","_objectSpread","method","cache","dataType","success","error","toUpperCase","ajax","dataFilter","getParsedData","JSON","parse","parsedData","KeyHandler","e","canHandleKeyboard","selectedNode","getSelectedNode","which","DOWN","moveDown","UP","moveUp","RIGHT","moveRight","LEFT","moveLeft","keyboardSupport","on","handleKeyDown","off","selectNode","getPreviousNode","openNode","closeNode","scrollHandler","isScrolledIntoView","find","scrollToNode","isFocusOnTree","register","widgetClass","widgetName","getDataKey","getWidgetData","dataKey","widget","SimpleWidget","createWidget","existingWidget","simpleWidgetClass","init","destroyWidget","destroy","removeData","callFunction","functionName","args","simpleWidget","widgetFunction","apply","fn","argument1","defaults","constructor","deinit","getPositionInfoFromMouseEvent","getPositionInfoFromTouch","touch","MouseWidget","button","handleMouseDown","cancelable","preventDefault","handleMouseMove","handleMouseUp","touches","changedTouches","addEventListener","mouseDown","passive","touchStart","isMouseStarted","mouseDelayTimer","isMouseDelayMet","mouseDownInfo","removeEventListener","removeMouseMoveEventListeners","mouseCapture","handleStartMouse","mouseMove","touchMove","mouseUp","touchEnd","mouseDelay","getMouseDelay","startMouseDelayTimer","mouseDrag","mouseStart","mouseStop","SaveStateHandler","state","stringify","getState","onSetStateFromStorage","supportsLocalStorage","localStorage","setItem","getKeyName","jsonData","loadFromStorage","parseState","getOpenNodeIds","openNodes","getSelectedNodeIds","selectedNodeIds","getSelectedNodes","open_nodes","selected_node","mustLoadOnDemand","openInitialNodes","resetSelection","selectInitialNodes","cbFinished","doSetInitialStateOnDemand","getStateFromStorage","onGetStateFromStorage","getItem","nodeIds","getNodeById","selectCount","addToSelection","selectedNodes","removeFromSelection","nodeIdsParam","loadingCount","newNodesIds","loadAndOpenNode","saveState","testSupport","sessionStorage","removeItem","_supportsLocalStorage","ScrollHandler","isInitialized","ensureInit","checkVerticalScrolling","checkHorizontalScrolling","$scrollParent","scrollTop","treeTop","elementBottom","viewBottom","elementTop","viewTop","elHeight","originalTop","scrollParentTop","windowHeight","scrollLeft","getParentWithOverflow","cssAttributes","hasOverFlow","attr","overflowValue","parents","setDocumentAsScrollParent","tagName","initScrollParent","scrollParent","distanceBottom","offsetHeight","refreshHitAreas","distanceTop","dndHandler","handleVerticalScrollingWithScrollParent","handleVerticalScrollingWithDocument","handleHorizontalScrollingWithParent","handleHorizontalScrollingWithDocument","scrollParentOffset","canScrollRight","clientWidth","scrollWidth","canScrollLeft","rightEdge","leftEdge","isNearRightEdge","isNearLeftEdge","max","$document","windowWidth","SelectNodeHandler","Set","selectedSingleNode","has","add","activeElement","_containsElement","NodeElement","mustShowBorderDropHint","BorderDropHint","GhostDropHint","mustSetFocus","$li","getLi","$span","getSpan","trigger","removeAttr","blur","FolderElement","animationSpeed","$button","getButton","buttonEl","icon","renderer","doOpen","getUl","slideDown","show","doClose","slideUp","hide","$div","elWidth","outerHeight","$hint","$ghost","moveAfter","moveBefore","moveInsideOpenFolder","moveInside","childElement","NODE_PARAM_IS_EMPTY","PARAM_IS_EMPTY","JqTreeWidget","clickTarget","getClickTarget","type","toggle","stopPropagation","click_event","doSelectNode","closest","getNode","slideParam","Error","optionsParam","getData","doLoadData","param1","param2","param3","doLoadDataFromUrl","getNodeByName","getNodeByNameMustExist","getNodesByProperty","parseParams","close","newNodeInfo","existingNode","newNode","addAfter","addBefore","addParent","parentNodeParam","prepend","idIsChanged","subtree","positionIndex","saveStateHandler","select","deselect","nodeOffset","nodeTop","treeOffset","scrollToY","setInitialState","option","keyHandler","__version__","eventName","values","Event","doOpenNode","_node","_slide","_onFinished","folderElement","open","loadFolderOnDemand","mustSelect","isSelectedNodeInSubtree","render","selectCurrentNode","getScrollLeft","getRtlOption","getDefaultClosedIcon","dataLoader","initData","handleClick","handleDblclick","useContextMenu","handleContextmenu","checkScrolling","startDndDelay","dataUrl","getDataUrlInfo","getUrlFromString","setUrlInfoData","selectedNodeId","getNodeIdToBeSelected","doInit","setInitialStateOnDemand","restoreState","autoOpenNodes","autoOpen","maxLevel","getAutoOpenMaxLevel","isRestored","parseInt","$target","dataRtl","deselectCurrentNode","defaultOptions","mustToggle","selectOptions","canSelect","onCanSelectNode","selectable","openParents","previous_node","deselectedNode","deselected_node","tree_data","deselectNodes","loadSubtree","initTree","selectedNodesUnderParent","getSelectedNodesUnder","urlInfoParam","loadFromUrl"],"mappings":"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"}
1
+ {"version":3,"file":"tree.jquery.debug.js","sources":["src/version.ts","src/node.ts","src/dragAndDropHandler.ts","src/util.ts","src/elementsRenderer.ts","src/dataLoader.ts","src/keyHandler.ts","src/simple.widget.ts","src/mouse.widget.ts","src/saveStateHandler.ts","src/scrollHandler.ts","src/selectNodeHandler.ts","src/nodeElement.ts","src/tree.jquery.ts"],"sourcesContent":["const version = \"1.7.0\";\n\nexport default version;\n","interface NodeRecordWithChildren extends NodeRecord {\n children: NodeData[];\n}\n\nexport enum Position {\n Before = 1,\n After,\n Inside,\n None,\n}\n\nconst positionNames: Record<string, Position> = {\n before: Position.Before,\n after: Position.After,\n inside: Position.Inside,\n none: Position.None,\n};\n\ntype IterateCallback = (node: Node, level: number) => boolean;\n\nexport const getPositionName = (position: Position): string => {\n for (const name in positionNames) {\n if (Object.prototype.hasOwnProperty.call(positionNames, name)) {\n if (positionNames[name] === position) {\n return name;\n }\n }\n }\n\n return \"\";\n};\n\nexport const getPosition = (name: string): Position | undefined =>\n positionNames[name];\n\nconst isNodeRecordWithChildren = (\n data: NodeData\n): data is NodeRecordWithChildren =>\n typeof data === \"object\" &&\n \"children\" in data &&\n data[\"children\"] instanceof Array;\n\nexport class Node implements INode {\n public id?: NodeId;\n public name: string;\n public children: Node[];\n public parent: Node | null;\n public idMapping: Map<NodeId, Node>;\n public tree?: Node;\n public nodeClass?: typeof Node;\n public load_on_demand: boolean;\n public is_open: boolean;\n public element: HTMLElement;\n public is_loading: boolean;\n public isEmptyFolder: boolean;\n\n [key: string]: unknown;\n\n constructor(o: NodeData | null = null, isRoot = false, nodeClass = Node) {\n this.name = \"\";\n this.isEmptyFolder = false;\n this.load_on_demand = false;\n\n this.setData(o);\n\n this.children = [];\n this.parent = null;\n\n if (isRoot) {\n this.idMapping = new Map<NodeId, Node>();\n this.tree = this;\n this.nodeClass = nodeClass;\n }\n }\n\n /*\n Set the data of this node.\n\n setData(string): set the name of the node\n setdata(object): set attributes of the node\n\n Examples:\n setdata('node1')\n\n setData({ name: 'node1', id: 1});\n\n setData({ name: 'node2', id: 2, color: 'green'});\n\n * This is an internal function; it is not in the docs\n * Does not remove existing node values\n */\n public setData(o: NodeData | null): void {\n if (!o) {\n return;\n } else if (typeof o === \"string\") {\n this.name = o;\n } else if (typeof o === \"object\") {\n for (const key in o) {\n if (Object.prototype.hasOwnProperty.call(o, key)) {\n const value = o[key];\n\n if (key === \"label\" || key === \"name\") {\n // You can use the 'label' key instead of 'name'; this is a legacy feature\n if (typeof value === \"string\") {\n this.name = value;\n }\n } else if (key !== \"children\" && key !== \"parent\") {\n // You can't update the children or the parent using this function\n this[key] = value;\n }\n }\n }\n }\n }\n\n /*\n Create tree from data.\n\n Structure of data is:\n [\n {\n name: 'node1',\n children: [\n { name: 'child1' },\n { name: 'child2' }\n ]\n },\n {\n name: 'node2'\n }\n ]\n */\n public loadFromData(data: NodeData[]): Node {\n this.removeChildren();\n\n for (const o of data) {\n const node = this.createNode(o);\n this.addChild(node);\n\n if (isNodeRecordWithChildren(o)) {\n if (o.children.length === 0) {\n node.isEmptyFolder = true;\n } else {\n node.loadFromData(o.children);\n }\n }\n }\n\n return this;\n }\n\n /*\n Add child.\n\n tree.addChild(\n new Node('child1')\n );\n */\n public addChild(node: Node): void {\n this.children.push(node);\n node.setParent(this);\n }\n\n /*\n Add child at position. Index starts at 0.\n\n tree.addChildAtPosition(\n new Node('abc'),\n 1\n );\n */\n public addChildAtPosition(node: Node, index: number): void {\n this.children.splice(index, 0, node);\n node.setParent(this);\n }\n\n /*\n Remove child. This also removes the children of the node.\n\n tree.removeChild(tree.children[0]);\n */\n public removeChild(node: Node): void {\n // remove children from the index\n node.removeChildren();\n\n this.doRemoveChild(node);\n }\n\n /*\n Get child index.\n\n var index = getChildIndex(node);\n */\n public getChildIndex(node: Node): number {\n return this.children.indexOf(node);\n }\n\n /*\n Does the tree have children?\n\n if (tree.hasChildren()) {\n //\n }\n */\n public hasChildren(): boolean {\n return this.children.length !== 0;\n }\n\n public isFolder(): boolean {\n return this.hasChildren() || this.load_on_demand;\n }\n\n /*\n Iterate over all the nodes in the tree.\n\n Calls callback with (node, level).\n\n The callback must return true to continue the iteration on current node.\n\n tree.iterate(\n function(node, level) {\n console.log(node.name);\n\n // stop iteration after level 2\n return (level <= 2);\n }\n );\n\n */\n public iterate(callback: IterateCallback): void {\n const _iterate = (node: Node, level: number): void => {\n if (node.children) {\n for (const child of node.children) {\n const result = callback(child, level);\n\n if (result && child.hasChildren()) {\n _iterate(child, level + 1);\n }\n }\n }\n };\n\n _iterate(this, 0);\n }\n\n /*\n Move node relative to another node.\n\n Argument position: Position.BEFORE, Position.AFTER or Position.Inside\n\n // move node1 after node2\n tree.moveNode(node1, node2, Position.AFTER);\n */\n public moveNode(\n movedNode: Node,\n targetNode: Node,\n position: Position\n ): boolean {\n if (!movedNode.parent || movedNode.isParentOf(targetNode)) {\n // - Node is parent of target node\n // - Or, parent is empty\n return false;\n } else {\n movedNode.parent.doRemoveChild(movedNode);\n\n switch (position) {\n case Position.After: {\n if (targetNode.parent) {\n targetNode.parent.addChildAtPosition(\n movedNode,\n targetNode.parent.getChildIndex(targetNode) + 1\n );\n return true;\n }\n return false;\n }\n\n case Position.Before: {\n if (targetNode.parent) {\n targetNode.parent.addChildAtPosition(\n movedNode,\n targetNode.parent.getChildIndex(targetNode)\n );\n return true;\n }\n return false;\n }\n\n case Position.Inside: {\n // move inside as first child\n targetNode.addChildAtPosition(movedNode, 0);\n return true;\n }\n\n default:\n return false;\n }\n }\n }\n\n /*\n Get the tree as data.\n */\n public getData(includeParent = false): NodeRecord[] {\n const getDataFromNodes = (nodes: Node[]): Record<string, unknown>[] => {\n return nodes.map((node) => {\n const tmpNode: Record<string, unknown> = {};\n\n for (const k in node) {\n if (\n [\n \"parent\",\n \"children\",\n \"element\",\n \"idMapping\",\n \"load_on_demand\",\n \"nodeClass\",\n \"tree\",\n \"isEmptyFolder\",\n ].indexOf(k) === -1 &&\n Object.prototype.hasOwnProperty.call(node, k)\n ) {\n const v = node[k];\n tmpNode[k] = v;\n }\n }\n\n if (node.hasChildren()) {\n tmpNode[\"children\"] = getDataFromNodes(node.children);\n }\n\n return tmpNode;\n });\n };\n\n if (includeParent) {\n return getDataFromNodes([this]);\n } else {\n return getDataFromNodes(this.children);\n }\n }\n\n public getNodeByName(name: string): Node | null {\n return this.getNodeByCallback((node: Node) => node.name === name);\n }\n\n public getNodeByNameMustExist(name: string): Node {\n const node = this.getNodeByCallback((n: Node) => n.name === name);\n\n if (!node) {\n throw `Node with name ${name} not found`;\n }\n\n return node;\n }\n\n public getNodeByCallback(callback: (node: Node) => boolean): Node | null {\n let result: Node | null = null;\n\n this.iterate((node: Node) => {\n if (result) {\n return false;\n } else if (callback(node)) {\n result = node;\n return false;\n } else {\n return true;\n }\n });\n\n return result;\n }\n\n public addAfter(nodeInfo: NodeData): Node | null {\n if (!this.parent) {\n return null;\n } else {\n const node = this.createNode(nodeInfo);\n\n const childIndex = this.parent.getChildIndex(this);\n this.parent.addChildAtPosition(node, childIndex + 1);\n\n if (\n isNodeRecordWithChildren(nodeInfo) &&\n nodeInfo.children.length\n ) {\n node.loadFromData(nodeInfo.children);\n }\n\n return node;\n }\n }\n\n public addBefore(nodeInfo: NodeData): Node | null {\n if (!this.parent) {\n return null;\n } else {\n const node = this.createNode(nodeInfo);\n\n const childIndex = this.parent.getChildIndex(this);\n this.parent.addChildAtPosition(node, childIndex);\n\n if (\n isNodeRecordWithChildren(nodeInfo) &&\n nodeInfo.children.length\n ) {\n node.loadFromData(nodeInfo.children);\n }\n\n return node;\n }\n }\n\n public addParent(nodeInfo: NodeData): Node | null {\n if (!this.parent) {\n return null;\n } else {\n const newParent = this.createNode(nodeInfo);\n\n if (this.tree) {\n newParent.setParent(this.tree);\n }\n const originalParent = this.parent;\n\n for (const child of originalParent.children) {\n newParent.addChild(child);\n }\n\n originalParent.children = [];\n originalParent.addChild(newParent);\n return newParent;\n }\n }\n\n public remove(): void {\n if (this.parent) {\n this.parent.removeChild(this);\n this.parent = null;\n }\n }\n\n public append(nodeInfo: NodeData): Node {\n const node = this.createNode(nodeInfo);\n this.addChild(node);\n\n if (isNodeRecordWithChildren(nodeInfo) && nodeInfo.children.length) {\n node.loadFromData(nodeInfo.children);\n }\n\n return node;\n }\n\n public prepend(nodeInfo: NodeData): Node {\n const node = this.createNode(nodeInfo);\n this.addChildAtPosition(node, 0);\n\n if (isNodeRecordWithChildren(nodeInfo) && nodeInfo.children.length) {\n node.loadFromData(nodeInfo.children);\n }\n\n return node;\n }\n\n public isParentOf(node: Node): boolean {\n let parent = node.parent;\n\n while (parent) {\n if (parent === this) {\n return true;\n }\n\n parent = parent.parent;\n }\n\n return false;\n }\n\n public getLevel(): number {\n let level = 0;\n let node: Node = this; // eslint-disable-line @typescript-eslint/no-this-alias\n\n while (node.parent) {\n level += 1;\n node = node.parent;\n }\n\n return level;\n }\n\n public getNodeById(nodeId: NodeId): Node | null {\n return this.idMapping.get(nodeId) || null;\n }\n\n public addNodeToIndex(node: Node): void {\n if (node.id != null) {\n this.idMapping.set(node.id, node);\n }\n }\n\n public removeNodeFromIndex(node: Node): void {\n if (node.id != null) {\n this.idMapping.delete(node.id);\n }\n }\n\n public removeChildren(): void {\n this.iterate((child: Node) => {\n this.tree?.removeNodeFromIndex(child);\n return true;\n });\n\n this.children = [];\n }\n\n public getPreviousSibling(): Node | null {\n if (!this.parent) {\n return null;\n } else {\n const previousIndex = this.parent.getChildIndex(this) - 1;\n if (previousIndex >= 0) {\n return this.parent.children[previousIndex];\n } else {\n return null;\n }\n }\n }\n\n public getNextSibling(): Node | null {\n if (!this.parent) {\n return null;\n } else {\n const nextIndex = this.parent.getChildIndex(this) + 1;\n if (nextIndex < this.parent.children.length) {\n return this.parent.children[nextIndex];\n } else {\n return null;\n }\n }\n }\n\n public getNodesByProperty(key: string, value: unknown): Node[] {\n return this.filter((node: Node) => node[key] === value);\n }\n\n public filter(f: (node: Node) => boolean): Node[] {\n const result: Node[] = [];\n\n this.iterate((node: Node) => {\n if (f(node)) {\n result.push(node);\n }\n\n return true;\n });\n\n return result;\n }\n\n public getNextNode(includeChildren = true): Node | null {\n if (includeChildren && this.hasChildren()) {\n return this.children[0];\n } else if (!this.parent) {\n return null;\n } else {\n const nextSibling = this.getNextSibling();\n\n if (nextSibling) {\n return nextSibling;\n } else {\n return this.parent.getNextNode(false);\n }\n }\n }\n\n public getNextVisibleNode(): Node | null {\n if (this.hasChildren() && this.is_open) {\n // First child\n return this.children[0];\n } else {\n if (!this.parent) {\n return null;\n } else {\n const nextSibling = this.getNextSibling();\n if (nextSibling) {\n // Next sibling\n return nextSibling;\n } else {\n // Next node of parent\n return this.parent.getNextNode(false);\n }\n }\n }\n }\n\n public getPreviousNode(): Node | null {\n if (!this.parent) {\n return null;\n } else {\n const previousSibling = this.getPreviousSibling();\n\n if (!previousSibling) {\n return this.getParent();\n } else if (previousSibling.hasChildren()) {\n return previousSibling.getLastChild();\n } else {\n return previousSibling;\n }\n }\n }\n\n public getPreviousVisibleNode(): Node | null {\n if (!this.parent) {\n return null;\n } else {\n const previousSibling = this.getPreviousSibling();\n\n if (!previousSibling) {\n return this.getParent();\n } else if (\n !previousSibling.hasChildren() ||\n !previousSibling.is_open\n ) {\n // Previous sibling\n return previousSibling;\n } else {\n // Last child of previous sibling\n return previousSibling.getLastChild();\n }\n }\n }\n\n public getParent(): Node | null {\n // Return parent except if it is the root node\n if (!this.parent) {\n return null;\n } else if (!this.parent.parent) {\n // Root node -> null\n return null;\n } else {\n return this.parent;\n }\n }\n\n public getLastChild(): Node | null {\n if (!this.hasChildren()) {\n return null;\n } else {\n const lastChild = this.children[this.children.length - 1];\n if (!(lastChild.hasChildren() && lastChild.is_open)) {\n return lastChild;\n } else {\n return lastChild.getLastChild();\n }\n }\n }\n\n // Init Node from data without making it the root of the tree\n public initFromData(data: NodeData): void {\n const addNode = (nodeData: NodeData): void => {\n this.setData(nodeData);\n\n if (\n isNodeRecordWithChildren(nodeData) &&\n nodeData.children.length\n ) {\n addChildren(nodeData.children);\n }\n };\n\n const addChildren = (childrenData: NodeData[]): void => {\n for (const child of childrenData) {\n const node = this.createNode();\n node.initFromData(child);\n this.addChild(node);\n }\n };\n\n addNode(data);\n }\n\n private setParent(parent: Node): void {\n this.parent = parent;\n this.tree = parent.tree;\n this.tree?.addNodeToIndex(this);\n }\n\n private doRemoveChild(node: Node): void {\n this.children.splice(this.getChildIndex(node), 1);\n this.tree?.removeNodeFromIndex(node);\n }\n\n private getNodeClass(): typeof Node {\n return this.nodeClass || this?.tree?.nodeClass || Node;\n }\n\n private createNode(nodeData?: NodeData): Node {\n const nodeClass = this.getNodeClass();\n return new nodeClass(nodeData);\n }\n}\n","import { getPositionName, Node, Position } from \"./node\";\nimport { DropHint, HitArea, PositionInfo } from \"./types\";\nimport { NodeElement } from \"./nodeElement\";\nimport { JqTreeWidget } from \"./tree.jquery\";\n\ninterface Dimensions {\n left: number;\n top: number;\n right: number;\n bottom: number;\n}\n\nexport class DragAndDropHandler {\n public hitAreas: HitArea[];\n public isDragging: boolean;\n public currentItem: NodeElement | null;\n public hoveredArea: HitArea | null;\n public positionInfo: PositionInfo | null;\n\n private treeWidget: JqTreeWidget;\n private dragElement: DragElement | null;\n private previousGhost: DropHint | null;\n private openFolderTimer: number | null;\n\n constructor(treeWidget: JqTreeWidget) {\n this.treeWidget = treeWidget;\n\n this.hoveredArea = null;\n this.hitAreas = [];\n this.isDragging = false;\n this.currentItem = null;\n this.positionInfo = null;\n }\n\n public mouseCapture(positionInfo: PositionInfo): boolean | null {\n const $element = jQuery(positionInfo.target);\n\n if (!this.mustCaptureElement($element)) {\n return null;\n }\n\n if (\n this.treeWidget.options.onIsMoveHandle &&\n !this.treeWidget.options.onIsMoveHandle($element)\n ) {\n return null;\n }\n\n let nodeElement = this.treeWidget._getNodeElement($element);\n\n if (nodeElement && this.treeWidget.options.onCanMove) {\n if (!this.treeWidget.options.onCanMove(nodeElement.node)) {\n nodeElement = null;\n }\n }\n\n this.currentItem = nodeElement;\n return this.currentItem != null;\n }\n\n public mouseStart(positionInfo: PositionInfo): boolean {\n if (\n !this.currentItem ||\n positionInfo.pageX === undefined ||\n positionInfo.pageY === undefined\n ) {\n return false;\n }\n\n this.refresh();\n\n const offset = jQuery(positionInfo.target).offset();\n const left = offset ? offset.left : 0;\n const top = offset ? offset.top : 0;\n\n const node = this.currentItem.node;\n\n this.dragElement = new DragElement(\n node.name,\n positionInfo.pageX - left,\n positionInfo.pageY - top,\n this.treeWidget.element,\n this.treeWidget.options.autoEscape ?? true\n );\n\n this.isDragging = true;\n this.positionInfo = positionInfo;\n this.currentItem.$element.addClass(\"jqtree-moving\");\n return true;\n }\n\n public mouseDrag(positionInfo: PositionInfo): boolean {\n if (\n !this.currentItem ||\n !this.dragElement ||\n positionInfo.pageX === undefined ||\n positionInfo.pageY === undefined\n ) {\n return false;\n }\n\n this.dragElement.move(positionInfo.pageX, positionInfo.pageY);\n this.positionInfo = positionInfo;\n\n const area = this.findHoveredArea(\n positionInfo.pageX,\n positionInfo.pageY\n );\n\n if (area && this.canMoveToArea(area)) {\n if (!area.node.isFolder()) {\n this.stopOpenFolderTimer();\n }\n\n if (this.hoveredArea !== area) {\n this.hoveredArea = area;\n\n // If this is a closed folder, start timer to open it\n if (this.mustOpenFolderTimer(area)) {\n this.startOpenFolderTimer(area.node);\n } else {\n this.stopOpenFolderTimer();\n }\n\n this.updateDropHint();\n }\n } else {\n this.removeDropHint();\n this.stopOpenFolderTimer();\n this.hoveredArea = area;\n }\n\n if (!area) {\n if (this.treeWidget.options.onDragMove) {\n this.treeWidget.options.onDragMove(\n this.currentItem.node,\n positionInfo.originalEvent\n );\n }\n }\n\n return true;\n }\n\n public mouseStop(positionInfo: PositionInfo): boolean {\n this.moveItem(positionInfo);\n this.clear();\n this.removeHover();\n this.removeDropHint();\n this.removeHitAreas();\n\n const currentItem = this.currentItem;\n\n if (this.currentItem) {\n this.currentItem.$element.removeClass(\"jqtree-moving\");\n this.currentItem = null;\n }\n\n this.isDragging = false;\n this.positionInfo = null;\n\n if (!this.hoveredArea && currentItem) {\n if (this.treeWidget.options.onDragStop) {\n this.treeWidget.options.onDragStop(\n currentItem.node,\n positionInfo.originalEvent\n );\n }\n }\n\n return false;\n }\n\n public refresh(): void {\n this.removeHitAreas();\n\n if (this.currentItem) {\n this.generateHitAreas();\n\n this.currentItem = this.treeWidget._getNodeElementForNode(\n this.currentItem.node\n );\n\n if (this.isDragging) {\n this.currentItem.$element.addClass(\"jqtree-moving\");\n }\n }\n }\n\n private generateHitAreas(): void {\n if (!this.currentItem) {\n this.hitAreas = [];\n } else {\n const hitAreasGenerator = new HitAreasGenerator(\n this.treeWidget.tree,\n this.currentItem.node,\n this.getTreeDimensions().bottom\n );\n this.hitAreas = hitAreasGenerator.generate();\n }\n }\n\n private mustCaptureElement($element: JQuery<HTMLElement>): boolean {\n return !$element.is(\"input,select,textarea\");\n }\n\n private canMoveToArea(area: HitArea): boolean {\n if (!this.treeWidget.options.onCanMoveTo) {\n return true;\n }\n\n if (!this.currentItem) {\n return false;\n }\n\n const positionName = getPositionName(area.position);\n\n return this.treeWidget.options.onCanMoveTo(\n this.currentItem.node,\n area.node,\n positionName\n );\n }\n\n private removeHitAreas(): void {\n this.hitAreas = [];\n }\n\n private clear(): void {\n if (this.dragElement) {\n this.dragElement.remove();\n this.dragElement = null;\n }\n }\n\n private removeDropHint(): void {\n if (this.previousGhost) {\n this.previousGhost.remove();\n }\n }\n\n private removeHover(): void {\n this.hoveredArea = null;\n }\n\n private findHoveredArea(x: number, y: number): HitArea | null {\n const dimensions = this.getTreeDimensions();\n\n if (\n x < dimensions.left ||\n y < dimensions.top ||\n x > dimensions.right ||\n y > dimensions.bottom\n ) {\n return null;\n }\n\n let low = 0;\n let high = this.hitAreas.length;\n while (low < high) {\n const mid = (low + high) >> 1;\n const area = this.hitAreas[mid];\n\n if (y < area.top) {\n high = mid;\n } else if (y > area.bottom) {\n low = mid + 1;\n } else {\n return area;\n }\n }\n\n return null;\n }\n\n private mustOpenFolderTimer(area: HitArea): boolean {\n const node = area.node;\n\n return (\n node.isFolder() &&\n !node.is_open &&\n area.position === Position.Inside\n );\n }\n\n private updateDropHint(): void {\n if (!this.hoveredArea) {\n return;\n }\n\n // remove previous drop hint\n this.removeDropHint();\n\n // add new drop hint\n const nodeElement = this.treeWidget._getNodeElementForNode(\n this.hoveredArea.node\n );\n this.previousGhost = nodeElement.addDropHint(this.hoveredArea.position);\n }\n\n private startOpenFolderTimer(folder: Node): void {\n const openFolder = (): void => {\n this.treeWidget._openNode(\n folder,\n this.treeWidget.options.slide,\n () => {\n this.refresh();\n this.updateDropHint();\n }\n );\n };\n\n this.stopOpenFolderTimer();\n\n const openFolderDelay = this.treeWidget.options.openFolderDelay;\n\n if (openFolderDelay !== false) {\n this.openFolderTimer = window.setTimeout(\n openFolder,\n openFolderDelay\n );\n }\n }\n\n private stopOpenFolderTimer(): void {\n if (this.openFolderTimer) {\n clearTimeout(this.openFolderTimer);\n this.openFolderTimer = null;\n }\n }\n\n private moveItem(positionInfo: PositionInfo): void {\n if (\n this.currentItem &&\n this.hoveredArea &&\n this.hoveredArea.position !== Position.None &&\n this.canMoveToArea(this.hoveredArea)\n ) {\n const movedNode = this.currentItem.node;\n const targetNode = this.hoveredArea.node;\n const position = this.hoveredArea.position;\n const previousParent = movedNode.parent;\n\n if (position === Position.Inside) {\n this.hoveredArea.node.is_open = true;\n }\n\n const doMove = (): void => {\n this.treeWidget.tree.moveNode(movedNode, targetNode, position);\n this.treeWidget.element.empty();\n this.treeWidget._refreshElements(null);\n };\n\n const event = this.treeWidget._triggerEvent(\"tree.move\", {\n move_info: {\n moved_node: movedNode,\n target_node: targetNode,\n position: getPositionName(position),\n previous_parent: previousParent,\n do_move: doMove,\n original_event: positionInfo.originalEvent,\n },\n });\n\n if (!event.isDefaultPrevented()) {\n doMove();\n }\n }\n }\n\n private getTreeDimensions(): Dimensions {\n // Return the dimensions of the tree. Add a margin to the bottom to allow\n // to drag-and-drop after the last element.\n const offset = this.treeWidget.element.offset();\n\n if (!offset) {\n return { left: 0, top: 0, right: 0, bottom: 0 };\n } else {\n const el = this.treeWidget.element;\n const width = el.width() || 0;\n const height = el.height() || 0;\n const left = offset.left + this.treeWidget._getScrollLeft();\n\n return {\n left,\n top: offset.top,\n right: left + width,\n bottom: offset.top + height + 16,\n };\n }\n }\n}\n\nabstract class VisibleNodeIterator {\n private tree: Node;\n\n constructor(tree: Node) {\n this.tree = tree;\n }\n\n protected iterate(): void {\n let isFirstNode = true;\n\n const _iterateNode = (node: Node, nextNode: Node | null): void => {\n let mustIterateInside =\n (node.is_open || !node.element) && node.hasChildren();\n\n let $element: JQuery<HTMLElement> | null = null;\n\n if (node.element) {\n $element = jQuery(node.element);\n\n if (!$element.is(\":visible\")) {\n return;\n }\n\n if (isFirstNode) {\n this.handleFirstNode(node);\n isFirstNode = false;\n }\n\n if (!node.hasChildren()) {\n this.handleNode(node, nextNode, $element);\n } else if (node.is_open) {\n if (!this.handleOpenFolder(node, $element)) {\n mustIterateInside = false;\n }\n } else {\n this.handleClosedFolder(node, nextNode, $element);\n }\n }\n\n if (mustIterateInside) {\n const childrenLength = node.children.length;\n node.children.forEach((_, i) => {\n if (i === childrenLength - 1) {\n _iterateNode(node.children[i], null);\n } else {\n _iterateNode(node.children[i], node.children[i + 1]);\n }\n });\n\n if (node.is_open && $element) {\n this.handleAfterOpenFolder(node, nextNode);\n }\n }\n };\n\n _iterateNode(this.tree, null);\n }\n\n protected abstract handleNode(\n node: Node,\n nextNode: Node | null,\n $element: JQuery\n ): void;\n\n /*\n override\n return\n - true: continue iterating\n - false: stop iterating\n */\n protected abstract handleOpenFolder(node: Node, $element: JQuery): boolean;\n\n protected abstract handleClosedFolder(\n node: Node,\n nextNode: Node | null,\n $element: JQuery\n ): void;\n\n protected abstract handleAfterOpenFolder(\n node: Node,\n nextNode: Node | null\n ): void;\n\n protected abstract handleFirstNode(node: Node): void;\n}\n\nexport class HitAreasGenerator extends VisibleNodeIterator {\n private currentNode: Node;\n private treeBottom: number;\n private positions: HitArea[];\n private lastTop: number;\n\n constructor(tree: Node, currentNode: Node, treeBottom: number) {\n super(tree);\n\n this.currentNode = currentNode;\n this.treeBottom = treeBottom;\n }\n\n public generate(): HitArea[] {\n this.positions = [];\n this.lastTop = 0;\n\n this.iterate();\n\n return this.generateHitAreas(this.positions);\n }\n\n protected generateHitAreas(positions: HitArea[]): HitArea[] {\n let previousTop = -1;\n let group = [];\n const hitAreas: HitArea[] = [];\n\n for (const position of positions) {\n if (position.top !== previousTop && group.length) {\n if (group.length) {\n this.generateHitAreasForGroup(\n hitAreas,\n group,\n previousTop,\n position.top\n );\n }\n\n previousTop = position.top;\n group = [];\n }\n\n group.push(position);\n }\n\n this.generateHitAreasForGroup(\n hitAreas,\n group,\n previousTop,\n this.treeBottom\n );\n\n return hitAreas;\n }\n\n protected handleOpenFolder(node: Node, $element: JQuery): boolean {\n if (node === this.currentNode) {\n // Cannot move inside current item\n // Stop iterating\n return false;\n }\n\n // Cannot move before current item\n if (node.children[0] !== this.currentNode) {\n this.addPosition(node, Position.Inside, this.getTop($element));\n }\n\n // Continue iterating\n return true;\n }\n\n protected handleClosedFolder(\n node: Node,\n nextNode: Node,\n $element: JQuery\n ): void {\n const top = this.getTop($element);\n\n if (node === this.currentNode) {\n // Cannot move after current item\n this.addPosition(node, Position.None, top);\n } else {\n this.addPosition(node, Position.Inside, top);\n\n // Cannot move before current item\n if (nextNode !== this.currentNode) {\n this.addPosition(node, Position.After, top);\n }\n }\n }\n\n protected handleFirstNode(node: Node): void {\n if (node !== this.currentNode) {\n this.addPosition(\n node,\n Position.Before,\n this.getTop(jQuery(node.element))\n );\n }\n }\n\n protected handleAfterOpenFolder(node: Node, nextNode: Node): void {\n if (node === this.currentNode || nextNode === this.currentNode) {\n // Cannot move before or after current item\n this.addPosition(node, Position.None, this.lastTop);\n } else {\n this.addPosition(node, Position.After, this.lastTop);\n }\n }\n\n protected handleNode(node: Node, nextNode: Node, $element: JQuery): void {\n const top = this.getTop($element);\n\n if (node === this.currentNode) {\n // Cannot move inside current item\n this.addPosition(node, Position.None, top);\n } else {\n this.addPosition(node, Position.Inside, top);\n }\n\n if (nextNode === this.currentNode || node === this.currentNode) {\n // Cannot move before or after current item\n this.addPosition(node, Position.None, top);\n } else {\n this.addPosition(node, Position.After, top);\n }\n }\n\n private getTop($element: JQuery<HTMLElement>): number {\n const offset = $element.offset();\n\n return offset ? offset.top : 0;\n }\n\n private addPosition(node: Node, position: number, top: number): void {\n const area = {\n top,\n bottom: 0,\n node,\n position,\n };\n\n this.positions.push(area);\n this.lastTop = top;\n }\n\n private generateHitAreasForGroup(\n hitAreas: HitArea[],\n positionsInGroup: HitArea[],\n top: number,\n bottom: number\n ): void {\n // limit positions in group\n const positionCount = Math.min(positionsInGroup.length, 4);\n\n const areaHeight = Math.round((bottom - top) / positionCount);\n let areaTop = top;\n\n let i = 0;\n while (i < positionCount) {\n const position = positionsInGroup[i];\n\n hitAreas.push({\n top: areaTop,\n bottom: areaTop + areaHeight,\n node: position.node,\n position: position.position,\n });\n\n areaTop += areaHeight;\n i += 1;\n }\n }\n}\n\nclass DragElement {\n private offsetX: number;\n private offsetY: number;\n private $element: JQuery;\n\n constructor(\n nodeName: string,\n offsetX: number,\n offsetY: number,\n $tree: JQuery,\n autoEscape: boolean\n ) {\n this.offsetX = offsetX;\n this.offsetY = offsetY;\n\n this.$element = jQuery(\"<span>\").addClass(\n \"jqtree-title jqtree-dragging\"\n );\n\n if (autoEscape) {\n this.$element.text(nodeName);\n } else {\n this.$element.html(nodeName);\n }\n\n this.$element.css(\"position\", \"absolute\");\n $tree.append(this.$element);\n }\n\n public move(pageX: number, pageY: number): void {\n this.$element.offset({\n left: pageX - this.offsetX,\n top: pageY - this.offsetY,\n });\n }\n\n public remove(): void {\n this.$element.remove();\n }\n}\n","export const isInt = (n: unknown): boolean =>\n typeof n === \"number\" && n % 1 === 0;\n\nexport const isFunction = (v: unknown): boolean => typeof v === \"function\";\n\nexport const getBoolString = (value: unknown): string =>\n value ? \"true\" : \"false\";\n","import { getBoolString } from \"./util\";\nimport { Node } from \"./node\";\nimport { JqTreeWidget } from \"./tree.jquery\";\n\ntype IconElement = Text | Element;\n\nexport default class ElementsRenderer {\n public openedIconElement: IconElement;\n public closedIconElement: IconElement;\n private treeWidget: JqTreeWidget;\n\n constructor(treeWidget: JqTreeWidget) {\n this.treeWidget = treeWidget;\n\n this.openedIconElement = this.createButtonElement(\n treeWidget.options.openedIcon || \"+\"\n );\n this.closedIconElement = this.createButtonElement(\n treeWidget.options.closedIcon || \"-\"\n );\n }\n\n public render(fromNode: Node | null): void {\n if (fromNode && fromNode.parent) {\n this.renderFromNode(fromNode);\n } else {\n this.renderFromRoot();\n }\n }\n\n public renderFromRoot(): void {\n const $element = this.treeWidget.element;\n $element.empty();\n\n this.createDomElements(\n $element[0],\n this.treeWidget.tree.children,\n true,\n 1\n );\n }\n\n public renderFromNode(node: Node): void {\n // remember current li\n const $previousLi = jQuery(node.element);\n\n // create element\n const li = this.createLi(node, node.getLevel());\n this.attachNodeData(node, li);\n\n // add element to dom\n $previousLi.after(li);\n\n // remove previous li\n $previousLi.remove();\n\n // create children\n if (node.children) {\n this.createDomElements(\n li,\n node.children,\n false,\n node.getLevel() + 1\n );\n }\n }\n\n private createDomElements(\n element: Element,\n children: Node[],\n isRootNode: boolean,\n level: number\n ): void {\n const ul = this.createUl(isRootNode);\n element.appendChild(ul);\n\n for (const child of children) {\n const li = this.createLi(child, level);\n ul.appendChild(li);\n\n this.attachNodeData(child, li);\n\n if (child.hasChildren()) {\n this.createDomElements(li, child.children, false, level + 1);\n }\n }\n }\n\n private attachNodeData(node: Node, li: HTMLElement): void {\n node.element = li;\n jQuery(li).data(\"node\", node);\n }\n\n private createUl(isRootNode: boolean): HTMLUListElement {\n let classString;\n let role;\n\n if (!isRootNode) {\n classString = \"\";\n role = \"group\";\n } else {\n classString = \"jqtree-tree\";\n role = \"tree\";\n\n if (this.treeWidget.options.rtl) {\n classString += \" jqtree-rtl\";\n }\n }\n\n if (this.treeWidget.options.dragAndDrop) {\n classString += \" jqtree-dnd\";\n }\n\n const ul = document.createElement(\"ul\");\n ul.className = `jqtree_common ${classString}`;\n\n ul.setAttribute(\"role\", role);\n\n return ul;\n }\n\n private createLi(node: Node, level: number): HTMLLIElement {\n const isSelected = Boolean(\n this.treeWidget.selectNodeHandler.isNodeSelected(node)\n );\n\n const mustShowFolder =\n node.isFolder() ||\n (node.isEmptyFolder && this.treeWidget.options.showEmptyFolder);\n\n const li = mustShowFolder\n ? this.createFolderLi(node, level, isSelected)\n : this.createNodeLi(node, level, isSelected);\n\n if (this.treeWidget.options.onCreateLi) {\n this.treeWidget.options.onCreateLi(node, jQuery(li), isSelected);\n }\n\n return li;\n }\n\n private createFolderLi(\n node: Node,\n level: number,\n isSelected: boolean\n ): HTMLLIElement {\n const buttonClasses = this.getButtonClasses(node);\n const folderClasses = this.getFolderClasses(node, isSelected);\n\n const iconElement = node.is_open\n ? this.openedIconElement\n : this.closedIconElement;\n\n // li\n const li = document.createElement(\"li\");\n li.className = `jqtree_common ${folderClasses}`;\n li.setAttribute(\"role\", \"presentation\");\n\n // div\n const div = document.createElement(\"div\");\n div.className = \"jqtree-element jqtree_common\";\n div.setAttribute(\"role\", \"presentation\");\n\n li.appendChild(div);\n\n // button link\n const buttonLink = document.createElement(\"a\");\n buttonLink.className = buttonClasses;\n\n buttonLink.appendChild(iconElement.cloneNode(true));\n\n buttonLink.setAttribute(\"role\", \"presentation\");\n buttonLink.setAttribute(\"aria-hidden\", \"true\");\n\n if (this.treeWidget.options.buttonLeft) {\n div.appendChild(buttonLink);\n }\n\n // title span\n div.appendChild(\n this.createTitleSpan(\n node.name,\n level,\n isSelected,\n node.is_open,\n true\n )\n );\n\n if (!this.treeWidget.options.buttonLeft) {\n div.appendChild(buttonLink);\n }\n\n return li;\n }\n\n private createNodeLi(\n node: Node,\n level: number,\n isSelected: boolean\n ): HTMLLIElement {\n const liClasses = [\"jqtree_common\"];\n\n if (isSelected) {\n liClasses.push(\"jqtree-selected\");\n }\n\n const classString = liClasses.join(\" \");\n\n // li\n const li = document.createElement(\"li\");\n li.className = classString;\n li.setAttribute(\"role\", \"presentation\");\n\n // div\n const div = document.createElement(\"div\");\n div.className = \"jqtree-element jqtree_common\";\n div.setAttribute(\"role\", \"presentation\");\n\n li.appendChild(div);\n\n // title span\n div.appendChild(\n this.createTitleSpan(\n node.name,\n level,\n isSelected,\n node.is_open,\n false\n )\n );\n\n return li;\n }\n\n private createTitleSpan(\n nodeName: string,\n level: number,\n isSelected: boolean,\n isOpen: boolean,\n isFolder: boolean\n ): HTMLSpanElement {\n const titleSpan = document.createElement(\"span\");\n\n let classes = \"jqtree-title jqtree_common\";\n\n if (isFolder) {\n classes += \" jqtree-title-folder\";\n }\n\n classes += ` jqtree-title-button-${\n this.treeWidget.options.buttonLeft ? \"left\" : \"right\"\n }`;\n\n titleSpan.className = classes;\n\n titleSpan.setAttribute(\"role\", \"treeitem\");\n titleSpan.setAttribute(\"aria-level\", `${level}`);\n\n titleSpan.setAttribute(\"aria-selected\", getBoolString(isSelected));\n titleSpan.setAttribute(\"aria-expanded\", getBoolString(isOpen));\n\n if (isSelected) {\n const tabIndex = this.treeWidget.options.tabIndex;\n\n if (tabIndex !== undefined) {\n titleSpan.setAttribute(\"tabindex\", `${tabIndex}`);\n }\n }\n\n if (this.treeWidget.options.autoEscape) {\n titleSpan.textContent = nodeName;\n } else {\n titleSpan.innerHTML = nodeName;\n }\n\n return titleSpan;\n }\n\n private getButtonClasses(node: Node): string {\n const classes = [\"jqtree-toggler\", \"jqtree_common\"];\n\n if (!node.is_open) {\n classes.push(\"jqtree-closed\");\n }\n\n if (this.treeWidget.options.buttonLeft) {\n classes.push(\"jqtree-toggler-left\");\n } else {\n classes.push(\"jqtree-toggler-right\");\n }\n\n return classes.join(\" \");\n }\n\n private getFolderClasses(node: Node, isSelected: boolean): string {\n const classes = [\"jqtree-folder\"];\n\n if (!node.is_open) {\n classes.push(\"jqtree-closed\");\n }\n\n if (isSelected) {\n classes.push(\"jqtree-selected\");\n }\n\n if (node.is_loading) {\n classes.push(\"jqtree-loading\");\n }\n\n return classes.join(\" \");\n }\n\n private createButtonElement(value: string | Element): IconElement {\n if (typeof value === \"string\") {\n // convert value to html\n const div = document.createElement(\"div\");\n div.innerHTML = value;\n\n return document.createTextNode(div.innerHTML);\n } else {\n return jQuery(value)[0];\n }\n }\n}\n","import { Node } from \"./node\";\nimport { JqTreeWidget } from \"./tree.jquery\";\n\nexport type HandleFinishedLoading = () => void;\n\nexport default class DataLoader {\n private treeWidget: JqTreeWidget;\n\n constructor(treeWidget: JqTreeWidget) {\n this.treeWidget = treeWidget;\n }\n\n public loadFromUrl(\n urlInfo: string | JQuery.AjaxSettings | null,\n parentNode: Node | null,\n onFinished: HandleFinishedLoading | null\n ): void {\n if (!urlInfo) {\n return;\n }\n\n const $el = this.getDomElement(parentNode);\n this.addLoadingClass($el);\n this.notifyLoading(true, parentNode, $el);\n\n const stopLoading = (): void => {\n this.removeLoadingClass($el);\n this.notifyLoading(false, parentNode, $el);\n };\n\n const handleSuccess = (data: string | NodeData[]): void => {\n stopLoading();\n this.treeWidget.loadData(this.parseData(data), parentNode);\n\n if (onFinished && typeof onFinished === \"function\") {\n onFinished();\n }\n };\n\n const handleError = (jqXHR: JQuery.jqXHR): void => {\n stopLoading();\n\n if (this.treeWidget.options.onLoadFailed) {\n this.treeWidget.options.onLoadFailed(jqXHR);\n }\n };\n\n this.submitRequest(urlInfo, handleSuccess, handleError);\n }\n\n private addLoadingClass($el: JQuery<HTMLElement>): void {\n if ($el) {\n $el.addClass(\"jqtree-loading\");\n }\n }\n\n private removeLoadingClass($el: JQuery<HTMLElement>): void {\n if ($el) {\n $el.removeClass(\"jqtree-loading\");\n }\n }\n\n private getDomElement(parentNode: Node | null): JQuery<HTMLElement> {\n if (parentNode) {\n return jQuery(parentNode.element);\n } else {\n return this.treeWidget.element;\n }\n }\n\n private notifyLoading(\n isLoading: boolean,\n node: Node | null,\n $el: JQuery\n ): void {\n if (this.treeWidget.options.onLoading) {\n this.treeWidget.options.onLoading(isLoading, node, $el);\n }\n\n this.treeWidget._triggerEvent(\"tree.loading_data\", {\n isLoading,\n node,\n $el,\n });\n }\n\n private submitRequest(\n urlInfoInput: string | JQuery.AjaxSettings,\n handleSuccess: JQuery.Ajax.SuccessCallback<any>,\n handleError: JQuery.Ajax.ErrorCallback<any>\n ): void {\n const urlInfo =\n typeof urlInfoInput === \"string\"\n ? { url: urlInfoInput }\n : urlInfoInput;\n\n const ajaxSettings: JQuery.AjaxSettings = {\n method: \"GET\",\n cache: false,\n dataType: \"json\",\n success: handleSuccess,\n error: handleError,\n ...urlInfo,\n };\n\n ajaxSettings.method = ajaxSettings.method?.toUpperCase() || \"GET\";\n\n void jQuery.ajax(ajaxSettings);\n }\n\n private parseData(data: string | NodeData[]): NodeData[] {\n const { dataFilter } = this.treeWidget.options;\n\n const getParsedData = () => {\n if (typeof data === \"string\") {\n return JSON.parse(data) as NodeData[];\n } else {\n return data;\n }\n };\n\n const parsedData = getParsedData();\n\n if (dataFilter) {\n return dataFilter(parsedData);\n } else {\n return parsedData;\n }\n }\n}\n","import { Node } from \"./node\";\nimport { JqTreeWidget } from \"./tree.jquery\";\n\nexport default class KeyHandler {\n private static LEFT = 37;\n private static UP = 38;\n private static RIGHT = 39;\n private static DOWN = 40;\n\n private treeWidget: JqTreeWidget;\n\n constructor(treeWidget: JqTreeWidget) {\n this.treeWidget = treeWidget;\n\n if (treeWidget.options.keyboardSupport) {\n jQuery(document).on(\"keydown.jqtree\", this.handleKeyDown);\n }\n }\n\n public deinit(): void {\n jQuery(document).off(\"keydown.jqtree\");\n }\n\n public moveDown(selectedNode: Node): boolean {\n return this.selectNode(selectedNode.getNextVisibleNode());\n }\n\n public moveUp(selectedNode: Node): boolean {\n return this.selectNode(selectedNode.getPreviousVisibleNode());\n }\n\n public moveRight(selectedNode: Node): boolean {\n if (!selectedNode.isFolder()) {\n return true;\n } else {\n // folder node\n if (selectedNode.is_open) {\n // Right moves to the first child of an open node\n return this.selectNode(selectedNode.getNextVisibleNode());\n } else {\n // Right expands a closed node\n this.treeWidget.openNode(selectedNode);\n return false;\n }\n }\n }\n\n public moveLeft(selectedNode: Node): boolean {\n if (selectedNode.isFolder() && selectedNode.is_open) {\n // Left on an open node closes the node\n this.treeWidget.closeNode(selectedNode);\n return false;\n } else {\n // Left on a closed or end node moves focus to the node's parent\n return this.selectNode(selectedNode.getParent());\n }\n }\n\n public selectNode(node: Node | null): boolean {\n if (!node) {\n return true;\n } else {\n this.treeWidget.selectNode(node);\n\n if (\n !this.treeWidget.scrollHandler.isScrolledIntoView(\n jQuery(node.element).find(\".jqtree-element\")\n )\n ) {\n this.treeWidget.scrollToNode(node);\n }\n\n return false;\n }\n }\n\n private handleKeyDown = (e: JQuery.Event): boolean => {\n if (!this.canHandleKeyboard()) {\n return true;\n }\n\n const selectedNode = this.treeWidget.getSelectedNode();\n if (!selectedNode) {\n return true;\n }\n\n const key = e.which;\n\n switch (key) {\n case KeyHandler.DOWN:\n return this.moveDown(selectedNode);\n\n case KeyHandler.UP:\n return this.moveUp(selectedNode);\n\n case KeyHandler.RIGHT:\n return this.moveRight(selectedNode);\n\n case KeyHandler.LEFT:\n return this.moveLeft(selectedNode);\n\n default:\n return true;\n }\n };\n\n private canHandleKeyboard(): boolean {\n return (\n (this.treeWidget.options.keyboardSupport || false) &&\n this.treeWidget.selectNodeHandler.isFocusOnTree()\n );\n }\n}\n","const register = (widgetClass: unknown, widgetName: string): void => {\n const getDataKey = (): string => `simple_widget_${widgetName}`;\n\n const getWidgetData = (\n el: HTMLElement,\n dataKey: string\n ): SimpleWidget<unknown> | null => {\n const widget = jQuery.data(el, dataKey) as unknown;\n\n if (widget && widget instanceof SimpleWidget) {\n return widget;\n } else {\n return null;\n }\n };\n\n const createWidget = ($el: JQuery, options: unknown): JQuery => {\n const dataKey = getDataKey();\n\n for (const el of $el.get()) {\n const existingWidget = getWidgetData(el, dataKey);\n\n if (!existingWidget) {\n const simpleWidgetClass = widgetClass as typeof SimpleWidget;\n const widget = new simpleWidgetClass(el, options);\n\n if (!jQuery.data(el, dataKey)) {\n jQuery.data(el, dataKey, widget);\n }\n\n // Call init after setting data, so we can call methods\n widget.init();\n }\n }\n\n return $el;\n };\n\n const destroyWidget = ($el: JQuery): void => {\n const dataKey = getDataKey();\n\n for (const el of $el.get()) {\n const widget = getWidgetData(el, dataKey);\n\n if (widget) {\n widget.destroy();\n }\n\n jQuery.removeData(el, dataKey);\n }\n };\n\n const callFunction = (\n $el: JQuery,\n functionName: string,\n args: unknown[]\n ): unknown => {\n let result = null;\n\n for (const el of $el.get()) {\n const widget = jQuery.data(el, getDataKey()) as unknown;\n\n if (widget && widget instanceof SimpleWidget) {\n const simpleWidget = widget as SimpleWidget<unknown>;\n const widgetFunction = simpleWidget[functionName];\n\n if (widgetFunction && typeof widgetFunction === \"function\") {\n result = widgetFunction.apply(widget, args) as unknown;\n }\n }\n }\n\n return result;\n };\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n (jQuery.fn as any)[widgetName] = function (\n this: JQuery,\n argument1: unknown,\n ...args: unknown[]\n ) {\n if (!argument1) {\n return createWidget(this, null);\n } else if (typeof argument1 === \"object\") {\n const options = argument1 as unknown;\n return createWidget(this, options);\n } else if (typeof argument1 === \"string\" && argument1[0] !== \"_\") {\n const functionName = argument1;\n\n if (functionName === \"destroy\") {\n return destroyWidget(this);\n } else if (functionName === \"get_widget_class\") {\n return widgetClass;\n } else {\n return callFunction(this, functionName, args);\n }\n }\n };\n};\n\nexport default class SimpleWidget<WidgetOptions> {\n public static register(widgetClass: unknown, widgetName: string): void {\n register(widgetClass, widgetName);\n }\n\n [key: string]: unknown;\n\n protected static defaults: unknown = {};\n\n public options: WidgetOptions;\n\n public $el: JQuery<HTMLElement>;\n\n constructor(el: HTMLElement, options: WidgetOptions) {\n this.$el = jQuery(el);\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n const defaults = (this.constructor as any)[\"defaults\"] as WidgetOptions;\n this.options = { ...defaults, ...options };\n }\n\n public destroy(): void {\n this.deinit();\n }\n\n public init(): void {\n //\n }\n\n public deinit(): void {\n //\n }\n}\n","/*\nThis widget does the same a the mouse widget in jqueryui.\n*/\nimport SimpleWidget from \"./simple.widget\";\nimport { PositionInfo } from \"./types\";\n\nconst getPositionInfoFromMouseEvent = (e: MouseEvent): PositionInfo => ({\n pageX: e.pageX,\n pageY: e.pageY,\n target: e.target as HTMLElement,\n originalEvent: e,\n});\n\nconst getPositionInfoFromTouch = (\n touch: Touch,\n e: TouchEvent\n): PositionInfo => ({\n pageX: touch.pageX,\n pageY: touch.pageY,\n target: touch.target as HTMLElement,\n originalEvent: e,\n});\n\nabstract class MouseWidget<WidgetOptions> extends SimpleWidget<WidgetOptions> {\n protected isMouseStarted: boolean;\n protected mouseDownInfo: PositionInfo | null;\n private mouseDelayTimer: number | null;\n private isMouseDelayMet: boolean;\n\n public init(): void {\n const element = this.$el.get(0);\n\n if (element) {\n element.addEventListener(\"mousedown\", this.mouseDown, {\n passive: false,\n });\n element.addEventListener(\"touchstart\", this.touchStart, {\n passive: false,\n });\n }\n\n this.isMouseStarted = false;\n this.mouseDelayTimer = null;\n this.isMouseDelayMet = false;\n this.mouseDownInfo = null;\n }\n\n public deinit(): void {\n const el = this.$el.get(0);\n\n if (el) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access\n (el as any).removeEventListener(\"mousedown\", this.mouseDown, {\n passive: false,\n });\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access\n (el as any).removeEventListener(\"touchstart\", this.touchStart, {\n passive: false,\n });\n }\n\n this.removeMouseMoveEventListeners();\n }\n\n protected abstract mouseCapture(positionInfo: PositionInfo): boolean | null;\n\n protected abstract mouseStart(positionInfo: PositionInfo): boolean;\n\n protected abstract mouseDrag(positionInfo: PositionInfo): void;\n\n protected abstract mouseStop(positionInfo: PositionInfo): void;\n\n protected abstract getMouseDelay(): number;\n\n private mouseDown = (e: MouseEvent): void => {\n // Left mouse button?\n if (e.button !== 0) {\n return;\n }\n\n const result = this.handleMouseDown(getPositionInfoFromMouseEvent(e));\n\n if (result && e.cancelable) {\n e.preventDefault();\n }\n };\n\n private handleMouseDown(positionInfo: PositionInfo): boolean {\n // We may have missed mouseup (out of window)\n if (this.isMouseStarted) {\n this.handleMouseUp(positionInfo);\n }\n\n this.mouseDownInfo = positionInfo;\n\n if (!this.mouseCapture(positionInfo)) {\n return false;\n }\n\n this.handleStartMouse();\n\n return true;\n }\n\n private handleStartMouse(): void {\n document.addEventListener(\"mousemove\", this.mouseMove, {\n passive: false,\n });\n document.addEventListener(\"touchmove\", this.touchMove, {\n passive: false,\n });\n document.addEventListener(\"mouseup\", this.mouseUp, { passive: false });\n document.addEventListener(\"touchend\", this.touchEnd, {\n passive: false,\n });\n\n const mouseDelay = this.getMouseDelay();\n\n if (mouseDelay) {\n this.startMouseDelayTimer(mouseDelay);\n } else {\n this.isMouseDelayMet = true;\n }\n }\n\n private startMouseDelayTimer(mouseDelay: number): void {\n if (this.mouseDelayTimer) {\n clearTimeout(this.mouseDelayTimer);\n }\n\n this.mouseDelayTimer = window.setTimeout(() => {\n if (this.mouseDownInfo) {\n this.isMouseDelayMet = true;\n }\n }, mouseDelay);\n\n this.isMouseDelayMet = false;\n }\n\n private mouseMove = (e: MouseEvent): void => {\n this.handleMouseMove(e, getPositionInfoFromMouseEvent(e));\n };\n\n private handleMouseMove(\n e: MouseEvent | TouchEvent,\n positionInfo: PositionInfo\n ): void {\n if (this.isMouseStarted) {\n this.mouseDrag(positionInfo);\n\n if (e.cancelable) {\n e.preventDefault();\n }\n return;\n }\n\n if (!this.isMouseDelayMet) {\n return;\n }\n\n if (this.mouseDownInfo) {\n this.isMouseStarted = this.mouseStart(this.mouseDownInfo) !== false;\n }\n\n if (this.isMouseStarted) {\n this.mouseDrag(positionInfo);\n\n if (e.cancelable) {\n e.preventDefault();\n }\n } else {\n this.handleMouseUp(positionInfo);\n }\n }\n\n private mouseUp = (e: MouseEvent): void => {\n this.handleMouseUp(getPositionInfoFromMouseEvent(e));\n };\n\n private handleMouseUp(positionInfo: PositionInfo): void {\n this.removeMouseMoveEventListeners();\n this.isMouseDelayMet = false;\n this.mouseDownInfo = null;\n\n if (this.isMouseStarted) {\n this.isMouseStarted = false;\n this.mouseStop(positionInfo);\n }\n }\n\n private removeMouseMoveEventListeners() {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access\n (document as any).removeEventListener(\"mousemove\", this.mouseMove, {\n passive: false,\n });\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access\n (document as any).removeEventListener(\"touchmove\", this.touchMove, {\n passive: false,\n });\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access\n (document as any).removeEventListener(\"mouseup\", this.mouseUp, {\n passive: false,\n });\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access\n (document as any).removeEventListener(\"touchend\", this.touchEnd, {\n passive: false,\n });\n }\n\n private touchStart = (e: TouchEvent): void => {\n if (!e) {\n return;\n }\n\n if (e.touches.length > 1) {\n return;\n }\n\n const touch = e.changedTouches[0];\n\n this.handleMouseDown(getPositionInfoFromTouch(touch, e));\n };\n\n private touchMove = (e: TouchEvent): void => {\n if (!e) {\n return;\n }\n\n if (e.touches.length > 1) {\n return;\n }\n\n const touch = e.changedTouches[0];\n\n this.handleMouseMove(e, getPositionInfoFromTouch(touch, e));\n };\n\n private touchEnd = (e: TouchEvent): void => {\n if (!e) {\n return;\n }\n\n if (e.touches.length > 1) {\n return;\n }\n\n const touch = e.changedTouches[0];\n\n this.handleMouseUp(getPositionInfoFromTouch(touch, e));\n };\n}\n\nexport default MouseWidget;\n","import { isInt } from \"./util\";\nimport { JqTreeWidget } from \"./tree.jquery\";\nimport { Node } from \"./node\";\n\nexport interface SavedState {\n open_nodes: NodeId[];\n selected_node: NodeId[];\n}\n\nexport default class SaveStateHandler {\n private treeWidget: JqTreeWidget;\n private _supportsLocalStorage: boolean | null;\n\n constructor(treeWidget: JqTreeWidget) {\n this.treeWidget = treeWidget;\n }\n\n public saveState(): void {\n const state = JSON.stringify(this.getState());\n\n if (this.treeWidget.options.onSetStateFromStorage) {\n this.treeWidget.options.onSetStateFromStorage(state);\n } else if (this.supportsLocalStorage()) {\n localStorage.setItem(this.getKeyName(), state);\n }\n }\n\n public getStateFromStorage(): SavedState | null {\n const jsonData = this.loadFromStorage();\n\n if (jsonData) {\n return this.parseState(jsonData) as unknown as SavedState;\n } else {\n return null;\n }\n }\n\n public getState(): SavedState {\n const getOpenNodeIds = (): NodeId[] => {\n const openNodes: NodeId[] = [];\n\n this.treeWidget.tree.iterate((node: Node) => {\n if (node.is_open && node.id && node.hasChildren()) {\n openNodes.push(node.id);\n }\n return true;\n });\n\n return openNodes;\n };\n\n const getSelectedNodeIds = (): NodeId[] => {\n const selectedNodeIds: NodeId[] = [];\n\n this.treeWidget.getSelectedNodes().forEach((node) => {\n if (node.id != null) {\n selectedNodeIds.push(node.id);\n }\n });\n\n return selectedNodeIds;\n };\n\n return {\n open_nodes: getOpenNodeIds(),\n selected_node: getSelectedNodeIds(),\n };\n }\n\n /*\n Set initial state\n Don't handle nodes that are loaded on demand\n\n result: must load on demand\n */\n public setInitialState(state: SavedState): boolean {\n if (!state) {\n return false;\n } else {\n let mustLoadOnDemand = false;\n\n if (state.open_nodes) {\n mustLoadOnDemand = this.openInitialNodes(state.open_nodes);\n }\n\n if (state.selected_node) {\n this.resetSelection();\n this.selectInitialNodes(state.selected_node);\n }\n\n return mustLoadOnDemand;\n }\n }\n\n public setInitialStateOnDemand(\n state: SavedState,\n cbFinished: () => void\n ): void {\n if (state) {\n this.doSetInitialStateOnDemand(\n state.open_nodes,\n state.selected_node,\n cbFinished\n );\n } else {\n cbFinished();\n }\n }\n\n public getNodeIdToBeSelected(): NodeId | null {\n const state = this.getStateFromStorage();\n\n if (state && state.selected_node) {\n return state.selected_node[0];\n } else {\n return null;\n }\n }\n\n private parseState(jsonData: string): SavedState {\n const state = JSON.parse(jsonData) as Record<string, unknown>;\n\n // Check if selected_node is an int (instead of an array)\n if (state && state.selected_node && isInt(state.selected_node)) {\n // Convert to array\n state.selected_node = [state.selected_node];\n }\n\n return state as unknown as SavedState;\n }\n\n private loadFromStorage(): string | null {\n if (this.treeWidget.options.onGetStateFromStorage) {\n return this.treeWidget.options.onGetStateFromStorage();\n } else if (this.supportsLocalStorage()) {\n return localStorage.getItem(this.getKeyName());\n } else {\n return null;\n }\n }\n\n private openInitialNodes(nodeIds: NodeId[]): boolean {\n let mustLoadOnDemand = false;\n\n for (const nodeId of nodeIds) {\n const node = this.treeWidget.getNodeById(nodeId);\n\n if (node) {\n if (!node.load_on_demand) {\n node.is_open = true;\n } else {\n mustLoadOnDemand = true;\n }\n }\n }\n\n return mustLoadOnDemand;\n }\n\n private selectInitialNodes(nodeIds: NodeId[]): boolean {\n let selectCount = 0;\n\n for (const nodeId of nodeIds) {\n const node = this.treeWidget.getNodeById(nodeId);\n\n if (node) {\n selectCount += 1;\n\n this.treeWidget.selectNodeHandler.addToSelection(node);\n }\n }\n\n return selectCount !== 0;\n }\n\n private resetSelection(): void {\n const selectNodeHandler = this.treeWidget.selectNodeHandler;\n\n const selectedNodes = selectNodeHandler.getSelectedNodes();\n\n selectedNodes.forEach((node) => {\n selectNodeHandler.removeFromSelection(node);\n });\n }\n\n private doSetInitialStateOnDemand(\n nodeIdsParam: NodeId[],\n selectedNodes: NodeId[],\n cbFinished: () => void\n ): void {\n let loadingCount = 0;\n let nodeIds = nodeIdsParam;\n\n const openNodes = (): void => {\n const newNodesIds = [];\n\n for (const nodeId of nodeIds) {\n const node = this.treeWidget.getNodeById(nodeId);\n\n if (!node) {\n newNodesIds.push(nodeId);\n } else {\n if (!node.is_loading) {\n if (node.load_on_demand) {\n loadAndOpenNode(node);\n } else {\n this.treeWidget._openNode(node, false, null);\n }\n }\n }\n }\n\n nodeIds = newNodesIds;\n\n if (this.selectInitialNodes(selectedNodes)) {\n this.treeWidget._refreshElements(null);\n }\n\n if (loadingCount === 0) {\n cbFinished();\n }\n };\n\n const loadAndOpenNode = (node: Node): void => {\n loadingCount += 1;\n this.treeWidget._openNode(node, false, () => {\n loadingCount -= 1;\n openNodes();\n });\n };\n\n openNodes();\n }\n\n private getKeyName(): string {\n if (typeof this.treeWidget.options.saveState === \"string\") {\n return this.treeWidget.options.saveState;\n } else {\n return \"tree\";\n }\n }\n\n private supportsLocalStorage(): boolean {\n const testSupport = (): boolean => {\n // Is local storage supported?\n if (localStorage == null) {\n return false;\n } else {\n // Check if it's possible to store an item. Safari does not allow this in private browsing mode.\n try {\n const key = \"_storage_test\";\n sessionStorage.setItem(key, \"value\");\n sessionStorage.removeItem(key);\n } catch (error) {\n return false;\n }\n\n return true;\n }\n };\n\n if (this._supportsLocalStorage == null) {\n this._supportsLocalStorage = testSupport();\n }\n\n return this._supportsLocalStorage;\n }\n}\n","import { JqTreeWidget } from \"./tree.jquery\";\nimport { HitArea, PositionInfo } from \"./types\";\n\nexport default class ScrollHandler {\n private treeWidget: JqTreeWidget;\n private previousTop: number;\n private isInitialized: boolean;\n private $scrollParent: JQuery | null;\n private scrollParentTop: number;\n\n constructor(treeWidget: JqTreeWidget) {\n this.treeWidget = treeWidget;\n this.previousTop = -1;\n this.isInitialized = false;\n }\n\n public checkScrolling(): void {\n this.ensureInit();\n this.checkVerticalScrolling();\n this.checkHorizontalScrolling();\n }\n\n public scrollToY(top: number): void {\n this.ensureInit();\n\n if (this.$scrollParent) {\n this.$scrollParent[0].scrollTop = top;\n } else {\n const offset = this.treeWidget.$el.offset();\n const treeTop = offset ? offset.top : 0;\n\n jQuery(document).scrollTop(top + treeTop);\n }\n }\n\n public isScrolledIntoView($element: JQuery): boolean {\n this.ensureInit();\n\n let elementBottom: number;\n let viewBottom: number;\n let elementTop: number;\n let viewTop: number;\n\n const elHeight = $element.height() || 0;\n\n if (this.$scrollParent) {\n viewTop = 0;\n viewBottom = this.$scrollParent.height() || 0;\n\n const offset = $element.offset();\n const originalTop = offset ? offset.top : 0;\n\n elementTop = originalTop - this.scrollParentTop;\n elementBottom = elementTop + elHeight;\n } else {\n viewTop = jQuery(window).scrollTop() || 0;\n\n const windowHeight = jQuery(window).height() || 0;\n viewBottom = viewTop + windowHeight;\n\n const offset = $element.offset();\n\n elementTop = offset ? offset.top : 0;\n elementBottom = elementTop + elHeight;\n }\n\n return elementBottom <= viewBottom && elementTop >= viewTop;\n }\n\n public getScrollLeft(): number {\n if (!this.$scrollParent) {\n return 0;\n } else {\n return this.$scrollParent.scrollLeft() || 0;\n }\n }\n\n private initScrollParent(): void {\n const getParentWithOverflow = (): JQuery | null => {\n const cssAttributes = [\"overflow\", \"overflow-y\"];\n\n const hasOverFlow = ($el: JQuery): boolean => {\n for (const attr of cssAttributes) {\n const overflowValue = $el.css(attr);\n if (\n overflowValue === \"auto\" ||\n overflowValue === \"scroll\"\n ) {\n return true;\n }\n }\n\n return false;\n };\n\n if (hasOverFlow(this.treeWidget.$el)) {\n return this.treeWidget.$el;\n }\n\n for (const el of this.treeWidget.$el.parents().get()) {\n const $el = jQuery(el);\n if (hasOverFlow($el)) {\n return $el;\n }\n }\n\n return null;\n };\n\n const setDocumentAsScrollParent = (): void => {\n this.scrollParentTop = 0;\n this.$scrollParent = null;\n };\n\n if (this.treeWidget.$el.css(\"position\") === \"fixed\") {\n setDocumentAsScrollParent();\n }\n\n const $scrollParent = getParentWithOverflow();\n\n if (\n $scrollParent &&\n $scrollParent.length &&\n $scrollParent[0].tagName !== \"HTML\"\n ) {\n this.$scrollParent = $scrollParent;\n\n const offset = this.$scrollParent.offset();\n this.scrollParentTop = offset ? offset.top : 0;\n } else {\n setDocumentAsScrollParent();\n }\n\n this.isInitialized = true;\n }\n\n private ensureInit(): void {\n if (!this.isInitialized) {\n this.initScrollParent();\n }\n }\n\n private handleVerticalScrollingWithScrollParent(area: HitArea): void {\n const scrollParent = this.$scrollParent && this.$scrollParent[0];\n\n if (!scrollParent) {\n return;\n }\n\n const distanceBottom =\n this.scrollParentTop + scrollParent.offsetHeight - area.bottom;\n\n if (distanceBottom < 20) {\n scrollParent.scrollTop += 20;\n this.treeWidget.refreshHitAreas();\n this.previousTop = -1;\n } else if (area.top - this.scrollParentTop < 20) {\n scrollParent.scrollTop -= 20;\n this.treeWidget.refreshHitAreas();\n this.previousTop = -1;\n }\n }\n\n private handleVerticalScrollingWithDocument(area: HitArea): void {\n const scrollTop = jQuery(document).scrollTop() || 0;\n const distanceTop = area.top - scrollTop;\n\n if (distanceTop < 20) {\n jQuery(document).scrollTop(scrollTop - 20);\n } else {\n const windowHeight = jQuery(window).height() || 0;\n\n if (windowHeight - (area.bottom - scrollTop) < 20) {\n jQuery(document).scrollTop(scrollTop + 20);\n }\n }\n }\n\n private checkVerticalScrolling(): void {\n const hoveredArea = this.treeWidget.dndHandler.hoveredArea;\n\n if (hoveredArea && hoveredArea.top !== this.previousTop) {\n this.previousTop = hoveredArea.top;\n\n if (this.$scrollParent) {\n this.handleVerticalScrollingWithScrollParent(hoveredArea);\n } else {\n this.handleVerticalScrollingWithDocument(hoveredArea);\n }\n }\n }\n\n private checkHorizontalScrolling(): void {\n const positionInfo = this.treeWidget.dndHandler.positionInfo;\n\n if (!positionInfo) {\n return;\n }\n\n if (this.$scrollParent) {\n this.handleHorizontalScrollingWithParent(positionInfo);\n } else {\n this.handleHorizontalScrollingWithDocument(positionInfo);\n }\n }\n\n private handleHorizontalScrollingWithParent(\n positionInfo: PositionInfo\n ): void {\n if (\n positionInfo.pageX === undefined ||\n positionInfo.pageY === undefined\n ) {\n return;\n }\n\n const $scrollParent = this.$scrollParent;\n const scrollParentOffset = $scrollParent && $scrollParent.offset();\n\n if (!($scrollParent && scrollParentOffset)) {\n return;\n }\n\n const scrollParent = $scrollParent[0];\n\n const canScrollRight =\n scrollParent.scrollLeft + scrollParent.clientWidth <\n scrollParent.scrollWidth;\n const canScrollLeft = scrollParent.scrollLeft > 0;\n\n const rightEdge = scrollParentOffset.left + scrollParent.clientWidth;\n const leftEdge = scrollParentOffset.left;\n const isNearRightEdge = positionInfo.pageX > rightEdge - 20;\n const isNearLeftEdge = positionInfo.pageX < leftEdge + 20;\n\n if (isNearRightEdge && canScrollRight) {\n scrollParent.scrollLeft = Math.min(\n scrollParent.scrollLeft + 20,\n scrollParent.scrollWidth\n );\n } else if (isNearLeftEdge && canScrollLeft) {\n scrollParent.scrollLeft = Math.max(scrollParent.scrollLeft - 20, 0);\n }\n }\n\n private handleHorizontalScrollingWithDocument(\n positionInfo: PositionInfo\n ): void {\n if (\n positionInfo.pageX === undefined ||\n positionInfo.pageY === undefined\n ) {\n return;\n }\n\n const $document = jQuery(document);\n\n const scrollLeft = $document.scrollLeft() || 0;\n const windowWidth = jQuery(window).width() || 0;\n\n const canScrollLeft = scrollLeft > 0;\n\n const isNearRightEdge = positionInfo.pageX > windowWidth - 20;\n const isNearLeftEdge = positionInfo.pageX - scrollLeft < 20;\n\n if (isNearRightEdge) {\n $document.scrollLeft(scrollLeft + 20);\n } else if (isNearLeftEdge && canScrollLeft) {\n $document.scrollLeft(Math.max(scrollLeft - 20, 0));\n }\n }\n}\n","import { Node } from \"./node\";\nimport { JqTreeWidget } from \"./tree.jquery\";\n\nexport default class SelectNodeHandler {\n private treeWidget: JqTreeWidget;\n private selectedNodes: Set<NodeId>;\n private selectedSingleNode: Node | null;\n\n constructor(treeWidget: JqTreeWidget) {\n this.treeWidget = treeWidget;\n this.selectedNodes = new Set<NodeId>();\n this.clear();\n }\n\n public getSelectedNode(): Node | false {\n const selectedNodes = this.getSelectedNodes();\n\n if (selectedNodes.length) {\n return selectedNodes[0];\n } else {\n return false;\n }\n }\n\n public getSelectedNodes(): Node[] {\n if (this.selectedSingleNode) {\n return [this.selectedSingleNode];\n } else {\n const selectedNodes: Node[] = [];\n\n this.selectedNodes.forEach((id) => {\n const node = this.treeWidget.getNodeById(id);\n if (node) {\n selectedNodes.push(node);\n }\n });\n\n return selectedNodes;\n }\n }\n\n public getSelectedNodesUnder(parent: Node): Node[] {\n if (this.selectedSingleNode) {\n if (parent.isParentOf(this.selectedSingleNode)) {\n return [this.selectedSingleNode];\n } else {\n return [];\n }\n } else {\n const selectedNodes = [];\n\n for (const id in this.selectedNodes) {\n if (\n Object.prototype.hasOwnProperty.call(this.selectedNodes, id)\n ) {\n const node = this.treeWidget.getNodeById(id);\n if (node && parent.isParentOf(node)) {\n selectedNodes.push(node);\n }\n }\n }\n\n return selectedNodes;\n }\n }\n\n public isNodeSelected(node: Node): boolean {\n if (node.id != null) {\n return this.selectedNodes.has(node.id);\n } else if (this.selectedSingleNode) {\n return this.selectedSingleNode.element === node.element;\n } else {\n return false;\n }\n }\n\n public clear(): void {\n this.selectedNodes.clear();\n this.selectedSingleNode = null;\n }\n\n public removeFromSelection(node: Node, includeChildren = false): void {\n if (node.id == null) {\n if (\n this.selectedSingleNode &&\n node.element === this.selectedSingleNode.element\n ) {\n this.selectedSingleNode = null;\n }\n } else {\n this.selectedNodes.delete(node.id);\n\n if (includeChildren) {\n node.iterate(() => {\n if (node.id != null) {\n this.selectedNodes.delete(node.id);\n }\n return true;\n });\n }\n }\n }\n\n public addToSelection(node: Node): void {\n if (node.id != null) {\n this.selectedNodes.add(node.id);\n } else {\n this.selectedSingleNode = node;\n }\n }\n\n public isFocusOnTree(): boolean {\n const activeElement = document.activeElement;\n\n return Boolean(\n activeElement &&\n activeElement.tagName === \"SPAN\" &&\n this.treeWidget._containsElement(activeElement as HTMLElement)\n );\n }\n}\n","import { Position, Node } from \"./node\";\nimport { JqTreeWidget } from \"./tree.jquery\";\nimport { DropHint } from \"./types\";\n\nexport type OnFinishOpenNode = (node: Node) => void;\n\nexport class NodeElement {\n public node: Node;\n public $element: JQuery<HTMLElement>;\n protected treeWidget: JqTreeWidget;\n\n constructor(node: Node, treeWidget: JqTreeWidget) {\n this.init(node, treeWidget);\n }\n\n public init(node: Node, treeWidget: JqTreeWidget): void {\n this.node = node;\n this.treeWidget = treeWidget;\n\n if (!node.element) {\n const element = this.treeWidget.element.get(0);\n\n if (element) {\n node.element = element;\n }\n }\n\n if (node.element) {\n this.$element = jQuery(node.element);\n }\n }\n\n public addDropHint(position: number): DropHint {\n if (this.mustShowBorderDropHint(position)) {\n return new BorderDropHint(\n this.$element,\n this.treeWidget._getScrollLeft()\n );\n } else {\n return new GhostDropHint(this.node, this.$element, position);\n }\n }\n\n public select(mustSetFocus: boolean): void {\n const $li = this.getLi();\n\n $li.addClass(\"jqtree-selected\");\n $li.attr(\"aria-selected\", \"true\");\n\n const $span = this.getSpan();\n $span.attr(\"tabindex\", this.treeWidget.options.tabIndex ?? null);\n\n if (mustSetFocus) {\n $span.trigger(\"focus\");\n }\n }\n\n public deselect(): void {\n const $li = this.getLi();\n\n $li.removeClass(\"jqtree-selected\");\n $li.attr(\"aria-selected\", \"false\");\n\n const $span = this.getSpan();\n $span.removeAttr(\"tabindex\");\n\n $span.blur();\n }\n\n protected getUl(): JQuery<HTMLElement> {\n return this.$element.children(\"ul:first\");\n }\n\n protected getSpan(): JQuery<HTMLElement> {\n return this.$element\n .children(\".jqtree-element\")\n .find(\"span.jqtree-title\");\n }\n\n protected getLi(): JQuery<HTMLElement> {\n return this.$element;\n }\n\n protected mustShowBorderDropHint(position: number): boolean {\n return position === Position.Inside;\n }\n}\n\nexport class FolderElement extends NodeElement {\n public open(\n onFinished: OnFinishOpenNode | null,\n slide = true,\n animationSpeed: JQuery.Duration | string = \"fast\"\n ): void {\n if (this.node.is_open) {\n return;\n }\n\n this.node.is_open = true;\n\n const $button = this.getButton();\n $button.removeClass(\"jqtree-closed\");\n $button.html(\"\");\n\n const buttonEl = $button.get(0);\n\n if (buttonEl) {\n const icon =\n this.treeWidget.renderer.openedIconElement.cloneNode(true);\n\n buttonEl.appendChild(icon);\n }\n\n const doOpen = (): void => {\n const $li = this.getLi();\n $li.removeClass(\"jqtree-closed\");\n\n const $span = this.getSpan();\n $span.attr(\"aria-expanded\", \"true\");\n\n if (onFinished) {\n onFinished(this.node);\n }\n\n this.treeWidget._triggerEvent(\"tree.open\", {\n node: this.node,\n });\n };\n\n if (slide) {\n this.getUl().slideDown(animationSpeed, doOpen);\n } else {\n this.getUl().show();\n doOpen();\n }\n }\n\n public close(\n slide = true,\n animationSpeed: JQuery.Duration | string = \"fast\"\n ): void {\n if (!this.node.is_open) {\n return;\n }\n\n this.node.is_open = false;\n\n const $button = this.getButton();\n $button.addClass(\"jqtree-closed\");\n $button.html(\"\");\n\n const buttonEl = $button.get(0);\n\n if (buttonEl) {\n const icon =\n this.treeWidget.renderer.closedIconElement.cloneNode(true);\n\n buttonEl.appendChild(icon);\n }\n\n const doClose = (): void => {\n const $li = this.getLi();\n $li.addClass(\"jqtree-closed\");\n\n const $span = this.getSpan();\n $span.attr(\"aria-expanded\", \"false\");\n\n this.treeWidget._triggerEvent(\"tree.close\", {\n node: this.node,\n });\n };\n\n if (slide) {\n this.getUl().slideUp(animationSpeed, doClose);\n } else {\n this.getUl().hide();\n doClose();\n }\n }\n\n protected mustShowBorderDropHint(position: number): boolean {\n return !this.node.is_open && position === Position.Inside;\n }\n\n private getButton(): JQuery {\n return this.$element\n .children(\".jqtree-element\")\n .find(\"a.jqtree-toggler\");\n }\n}\n\nexport class BorderDropHint implements DropHint {\n private $hint: JQuery<Element>;\n\n constructor($element: JQuery<Element>, scrollLeft: number) {\n const $div = $element.children(\".jqtree-element\");\n\n const elWidth = $element.width() || 0;\n const width = Math.max(elWidth + scrollLeft - 4, 0);\n\n const elHeight = $div.outerHeight() || 0;\n const height = Math.max(elHeight - 4, 0);\n\n this.$hint = jQuery('<span class=\"jqtree-border\"></span>');\n $div.append(this.$hint);\n\n this.$hint.css({ width, height });\n }\n\n public remove(): void {\n this.$hint.remove();\n }\n}\n\nclass GhostDropHint implements DropHint {\n private $element: JQuery<Element>;\n private node: Node;\n private $ghost: JQuery;\n\n constructor(node: Node, $element: JQuery<Element>, position: number) {\n this.$element = $element;\n\n this.node = node;\n this.$ghost = jQuery(\n `<li class=\"jqtree_common jqtree-ghost\"><span class=\"jqtree_common jqtree-circle\"></span>\n <span class=\"jqtree_common jqtree-line\"></span></li>`\n );\n\n if (position === Position.After) {\n this.moveAfter();\n } else if (position === Position.Before) {\n this.moveBefore();\n } else if (position === Position.Inside) {\n if (node.isFolder() && node.is_open) {\n this.moveInsideOpenFolder();\n } else {\n this.moveInside();\n }\n }\n }\n\n public remove(): void {\n this.$ghost.remove();\n }\n\n public moveAfter(): void {\n this.$element.after(this.$ghost);\n }\n\n public moveBefore(): void {\n this.$element.before(this.$ghost);\n }\n\n public moveInsideOpenFolder(): void {\n const childElement = this.node.children[0].element;\n\n if (childElement) {\n jQuery(childElement).before(this.$ghost);\n }\n }\n\n public moveInside(): void {\n this.$element.after(this.$ghost);\n this.$ghost.addClass(\"jqtree-inside\");\n }\n}\n","import __version__ from \"./version\";\nimport { DragAndDropHandler } from \"./dragAndDropHandler\";\nimport ElementsRenderer from \"./elementsRenderer\";\nimport DataLoader, { HandleFinishedLoading } from \"./dataLoader\";\nimport KeyHandler from \"./keyHandler\";\nimport MouseWidget from \"./mouse.widget\";\nimport { PositionInfo } from \"./types\";\nimport SaveStateHandler, { SavedState } from \"./saveStateHandler\";\nimport ScrollHandler from \"./scrollHandler\";\nimport SelectNodeHandler from \"./selectNodeHandler\";\nimport SimpleWidget from \"./simple.widget\";\nimport { Node, getPosition } from \"./node\";\nimport { isFunction } from \"./util\";\nimport { FolderElement, NodeElement, OnFinishOpenNode } from \"./nodeElement\";\nimport { JQTreeOptions } from \"./jqtreeOptions\";\n\ninterface ClickTarget {\n node: Node;\n type: \"button\" | \"label\";\n}\n\ninterface SelectNodeOptions {\n mustToggle?: boolean;\n mustSetFocus?: boolean;\n}\n\nconst NODE_PARAM_IS_EMPTY = \"Node parameter is empty\";\nconst PARAM_IS_EMPTY = \"Parameter is empty: \";\n\nexport class JqTreeWidget extends MouseWidget<JQTreeOptions> {\n protected static defaults: JQTreeOptions = {\n animationSpeed: \"fast\",\n autoEscape: true,\n autoOpen: false, // true / false / int (open n levels starting at 0)\n buttonLeft: true,\n // The symbol to use for a closed node - ► BLACK RIGHT-POINTING POINTER\n // http://www.fileformat.info/info/unicode/char/25ba/index.htm\n closedIcon: undefined,\n data: undefined,\n dataFilter: undefined,\n dataUrl: undefined,\n dragAndDrop: false,\n keyboardSupport: true,\n nodeClass: Node,\n onCanMove: undefined, // Can this node be moved?\n onCanMoveTo: undefined, // Can this node be moved to this position? function(moved_node, target_node, position)\n onCanSelectNode: undefined,\n onCreateLi: undefined,\n onDragMove: undefined,\n onDragStop: undefined,\n onGetStateFromStorage: undefined,\n onIsMoveHandle: undefined,\n onLoadFailed: undefined,\n onLoading: undefined,\n onSetStateFromStorage: undefined,\n openedIcon: \"&#x25bc;\",\n openFolderDelay: 500, // The delay for opening a folder during drag and drop; the value is in milliseconds\n // The symbol to use for an open node - ▼ BLACK DOWN-POINTING TRIANGLE\n // http://www.fileformat.info/info/unicode/char/25bc/index.htm\n rtl: undefined, // right-to-left support; true / false (default)\n saveState: false, // true / false / string (cookie name)\n selectable: true,\n showEmptyFolder: false,\n slide: true, // must display slide animation?\n startDndDelay: 300, // The delay for starting dnd (in milliseconds)\n tabIndex: 0,\n useContextMenu: true,\n };\n\n public element: JQuery;\n public tree: Node;\n public dndHandler: DragAndDropHandler;\n public renderer: ElementsRenderer;\n public dataLoader: DataLoader;\n public scrollHandler: ScrollHandler;\n public selectNodeHandler: SelectNodeHandler;\n\n private isInitialized: boolean;\n private saveStateHandler: SaveStateHandler;\n private keyHandler: KeyHandler;\n\n public toggle(node: Node, slideParam: null | boolean = null): JQuery {\n if (!node) {\n throw Error(NODE_PARAM_IS_EMPTY);\n }\n\n const slide = slideParam ?? this.options.slide;\n\n if (node.is_open) {\n this.closeNode(node, slide);\n } else {\n this.openNode(node, slide);\n }\n\n return this.element;\n }\n\n public getTree(): Node {\n return this.tree;\n }\n\n public selectNode(\n node: Node | null,\n optionsParam?: SelectNodeOptions\n ): JQuery {\n this.doSelectNode(node, optionsParam);\n return this.element;\n }\n\n public getSelectedNode(): Node | false {\n return this.selectNodeHandler.getSelectedNode();\n }\n\n public toJson(): string {\n return JSON.stringify(this.tree.getData());\n }\n\n public loadData(data: NodeData[], parentNode: Node | null): JQuery {\n this.doLoadData(data, parentNode);\n return this.element;\n }\n\n /*\n signatures:\n - loadDataFromUrl(url, parent_node=null, on_finished=null)\n loadDataFromUrl('/my_data');\n loadDataFromUrl('/my_data', node1);\n loadDataFromUrl('/my_data', node1, function() { console.log('finished'); });\n loadDataFromUrl('/my_data', null, function() { console.log('finished'); });\n\n - loadDataFromUrl(parent_node=null, on_finished=null)\n loadDataFromUrl();\n loadDataFromUrl(node1);\n loadDataFromUrl(null, function() { console.log('finished'); });\n loadDataFromUrl(node1, function() { console.log('finished'); });\n */\n public loadDataFromUrl(\n param1: string | null | Node,\n param2?: Node | null | HandleFinishedLoading,\n param3?: HandleFinishedLoading\n ): JQuery {\n if (typeof param1 === \"string\") {\n // first parameter is url\n this.doLoadDataFromUrl(\n param1,\n param2 as Node | null,\n param3 ?? null\n );\n } else {\n // first parameter is not url\n this.doLoadDataFromUrl(\n null,\n param1,\n param2 as HandleFinishedLoading | null\n );\n }\n\n return this.element;\n }\n\n public reload(onFinished: HandleFinishedLoading | null): JQuery {\n this.doLoadDataFromUrl(null, null, onFinished);\n return this.element;\n }\n\n public refresh(): JQuery {\n this._refreshElements(null);\n return this.element;\n }\n\n public getNodeById(nodeId: NodeId): Node | null {\n return this.tree.getNodeById(nodeId);\n }\n\n public getNodeByName(name: string): Node | null {\n return this.tree.getNodeByName(name);\n }\n\n public getNodeByNameMustExist(name: string): Node {\n return this.tree.getNodeByNameMustExist(name);\n }\n\n public getNodesByProperty(key: string, value: unknown): Node[] {\n return this.tree.getNodesByProperty(key, value);\n }\n\n public getNodeByHtmlElement(\n element: HTMLElement | JQuery<HTMLElement>\n ): Node | null {\n return this.getNode(jQuery(element));\n }\n\n public getNodeByCallback(callback: (node: Node) => boolean): Node | null {\n return this.tree.getNodeByCallback(callback);\n }\n\n public openNode(\n node: Node,\n param1?: boolean | OnFinishOpenNode,\n param2?: OnFinishOpenNode\n ): JQuery {\n if (!node) {\n throw Error(NODE_PARAM_IS_EMPTY);\n }\n\n const parseParams = (): [boolean, OnFinishOpenNode | null] => {\n let onFinished: OnFinishOpenNode | null;\n let slide: boolean | null;\n\n if (isFunction(param1)) {\n onFinished = param1 as OnFinishOpenNode | null;\n slide = null;\n } else {\n slide = param1 as boolean;\n onFinished = param2 as OnFinishOpenNode;\n }\n\n if (slide == null) {\n slide = this.options.slide ?? false;\n }\n\n return [slide, onFinished];\n };\n\n const [slide, onFinished] = parseParams();\n\n this._openNode(node, slide, onFinished);\n return this.element;\n }\n\n public closeNode(node: Node, slideParam?: null | boolean): JQuery {\n if (!node) {\n throw Error(NODE_PARAM_IS_EMPTY);\n }\n\n const slide = slideParam ?? this.options.slide;\n\n if (node.isFolder() || node.isEmptyFolder) {\n new FolderElement(node, this).close(\n slide,\n this.options.animationSpeed\n );\n\n this.saveState();\n }\n\n return this.element;\n }\n\n public isDragging(): boolean {\n return this.dndHandler.isDragging;\n }\n\n public refreshHitAreas(): JQuery {\n this.dndHandler.refresh();\n return this.element;\n }\n\n public addNodeAfter(\n newNodeInfo: NodeData,\n existingNode: Node\n ): Node | null {\n const newNode = existingNode.addAfter(newNodeInfo);\n\n if (newNode) {\n this._refreshElements(existingNode.parent);\n }\n\n return newNode;\n }\n\n public addNodeBefore(\n newNodeInfo: NodeData,\n existingNode: Node\n ): Node | null {\n if (!existingNode) {\n throw Error(PARAM_IS_EMPTY + \"existingNode\");\n }\n\n const newNode = existingNode.addBefore(newNodeInfo);\n\n if (newNode) {\n this._refreshElements(existingNode.parent);\n }\n\n return newNode;\n }\n\n public addParentNode(\n newNodeInfo: NodeData,\n existingNode: Node\n ): Node | null {\n if (!existingNode) {\n throw Error(PARAM_IS_EMPTY + \"existingNode\");\n }\n\n const newNode = existingNode.addParent(newNodeInfo);\n\n if (newNode) {\n this._refreshElements(newNode.parent);\n }\n\n return newNode;\n }\n\n public removeNode(node: Node): JQuery {\n if (!node) {\n throw Error(NODE_PARAM_IS_EMPTY);\n }\n\n if (!node.parent) {\n throw Error(\"Node has no parent\");\n }\n\n this.selectNodeHandler.removeFromSelection(node, true); // including children\n\n const parent = node.parent;\n node.remove();\n this._refreshElements(parent);\n\n return this.element;\n }\n\n public appendNode(newNodeInfo: NodeData, parentNodeParam?: Node): Node {\n const parentNode = parentNodeParam || this.tree;\n\n const node = parentNode.append(newNodeInfo);\n\n this._refreshElements(parentNode);\n\n return node;\n }\n\n public prependNode(newNodeInfo: NodeData, parentNodeParam?: Node): Node {\n const parentNode = parentNodeParam ?? this.tree;\n\n const node = parentNode.prepend(newNodeInfo);\n\n this._refreshElements(parentNode);\n\n return node;\n }\n\n public updateNode(node: Node, data: NodeData): JQuery {\n if (!node) {\n throw Error(NODE_PARAM_IS_EMPTY);\n }\n\n const idIsChanged =\n typeof data === \"object\" && data.id && data.id !== node.id;\n\n if (idIsChanged) {\n this.tree.removeNodeFromIndex(node);\n }\n\n node.setData(data);\n\n if (idIsChanged) {\n this.tree.addNodeToIndex(node);\n }\n\n if (\n typeof data === \"object\" &&\n data[\"children\"] &&\n data[\"children\"] instanceof Array\n ) {\n node.removeChildren();\n\n if (data.children.length) {\n node.loadFromData(data.children as Node[]);\n }\n }\n\n this._refreshElements(node);\n\n return this.element;\n }\n\n private isSelectedNodeInSubtree(subtree: Node): boolean {\n const selectedNode = this.getSelectedNode();\n\n if (!selectedNode) {\n return false;\n } else {\n return subtree === selectedNode || subtree.isParentOf(selectedNode);\n }\n }\n\n public moveNode(node: Node, targetNode: Node, position: string): JQuery {\n if (!node) {\n throw Error(NODE_PARAM_IS_EMPTY);\n }\n\n if (!targetNode) {\n throw Error(PARAM_IS_EMPTY + \"targetNode\");\n }\n\n const positionIndex = getPosition(position);\n\n if (positionIndex !== undefined) {\n this.tree.moveNode(node, targetNode, positionIndex);\n this._refreshElements(null);\n }\n\n return this.element;\n }\n\n public getStateFromStorage(): SavedState | null {\n return this.saveStateHandler.getStateFromStorage();\n }\n\n public addToSelection(node: Node, mustSetFocus?: boolean): JQuery {\n if (!node) {\n throw Error(NODE_PARAM_IS_EMPTY);\n }\n\n this.selectNodeHandler.addToSelection(node);\n\n this._getNodeElementForNode(node).select(\n mustSetFocus === undefined ? true : mustSetFocus\n );\n\n this.saveState();\n\n return this.element;\n }\n\n public getSelectedNodes(): Node[] {\n return this.selectNodeHandler.getSelectedNodes();\n }\n\n public isNodeSelected(node: Node): boolean {\n if (!node) {\n throw Error(NODE_PARAM_IS_EMPTY);\n }\n\n return this.selectNodeHandler.isNodeSelected(node);\n }\n\n public removeFromSelection(node: Node): JQuery {\n if (!node) {\n throw Error(NODE_PARAM_IS_EMPTY);\n }\n\n this.selectNodeHandler.removeFromSelection(node);\n\n this._getNodeElementForNode(node).deselect();\n this.saveState();\n\n return this.element;\n }\n\n public scrollToNode(node: Node): JQuery {\n if (!node) {\n throw Error(NODE_PARAM_IS_EMPTY);\n }\n\n const nodeOffset = jQuery(node.element).offset();\n const nodeTop = nodeOffset ? nodeOffset.top : 0;\n\n const treeOffset = this.$el.offset();\n const treeTop = treeOffset ? treeOffset.top : 0;\n\n const top = nodeTop - treeTop;\n\n this.scrollHandler.scrollToY(top);\n\n return this.element;\n }\n\n public getState(): SavedState | null {\n return this.saveStateHandler.getState();\n }\n\n public setState(state: SavedState): JQuery {\n this.saveStateHandler.setInitialState(state);\n this._refreshElements(null);\n\n return this.element;\n }\n\n public setOption(option: string, value: unknown): JQuery {\n (this.options as unknown as Record<string, unknown>)[option] = value;\n return this.element;\n }\n\n public moveDown(): JQuery {\n const selectedNode = this.getSelectedNode();\n if (selectedNode) {\n this.keyHandler.moveDown(selectedNode);\n }\n\n return this.element;\n }\n\n public moveUp(): JQuery {\n const selectedNode = this.getSelectedNode();\n if (selectedNode) {\n this.keyHandler.moveUp(selectedNode);\n }\n\n return this.element;\n }\n\n public getVersion(): string {\n return __version__;\n }\n\n public _triggerEvent(\n eventName: string,\n values?: Record<string, unknown>\n ): JQuery.Event {\n const event = jQuery.Event(eventName, values);\n this.element.trigger(event);\n return event;\n }\n\n public _openNode(\n node: Node,\n slide = true,\n onFinished: OnFinishOpenNode | null\n ): void {\n const doOpenNode = (\n _node: Node,\n _slide: boolean,\n _onFinished: OnFinishOpenNode | null\n ): void => {\n const folderElement = new FolderElement(_node, this);\n folderElement.open(\n _onFinished,\n _slide,\n this.options.animationSpeed\n );\n };\n\n if (node.isFolder() || node.isEmptyFolder) {\n if (node.load_on_demand) {\n this.loadFolderOnDemand(node, slide, onFinished);\n } else {\n let parent = node.parent;\n\n while (parent) {\n // nb: do not open root element\n if (parent.parent) {\n doOpenNode(parent, false, null);\n }\n parent = parent.parent;\n }\n\n doOpenNode(node, slide, onFinished);\n this.saveState();\n }\n }\n }\n\n /*\n Redraw the tree or part of the tree.\n from_node: redraw this subtree\n */\n public _refreshElements(fromNode: Node | null): void {\n const mustSetFocus = this.selectNodeHandler.isFocusOnTree();\n const mustSelect = fromNode\n ? this.isSelectedNodeInSubtree(fromNode)\n : false;\n\n this.renderer.render(fromNode);\n\n if (mustSelect) {\n this.selectCurrentNode(mustSetFocus);\n }\n\n this._triggerEvent(\"tree.refresh\");\n }\n\n public _getNodeElementForNode(node: Node): NodeElement {\n if (node.isFolder()) {\n return new FolderElement(node, this);\n } else {\n return new NodeElement(node, this);\n }\n }\n\n public _getNodeElement($element: JQuery<HTMLElement>): NodeElement | null {\n const node = this.getNode($element);\n if (node) {\n return this._getNodeElementForNode(node);\n } else {\n return null;\n }\n }\n\n public _containsElement(element: HTMLElement): boolean {\n const node = this.getNode(jQuery(element));\n\n return node != null && node.tree === this.tree;\n }\n\n public _getScrollLeft(): number {\n return this.scrollHandler.getScrollLeft();\n }\n\n public init(): void {\n super.init();\n\n this.element = this.$el;\n this.isInitialized = false;\n\n this.options.rtl = this.getRtlOption();\n\n if (this.options.closedIcon == null) {\n this.options.closedIcon = this.getDefaultClosedIcon();\n }\n\n this.renderer = new ElementsRenderer(this);\n this.dataLoader = new DataLoader(this);\n this.saveStateHandler = new SaveStateHandler(this);\n this.selectNodeHandler = new SelectNodeHandler(this);\n this.dndHandler = new DragAndDropHandler(this);\n this.scrollHandler = new ScrollHandler(this);\n this.keyHandler = new KeyHandler(this);\n\n this.initData();\n\n this.element.on(\"click\", this.handleClick);\n this.element.on(\"dblclick\", this.handleDblclick);\n\n if (this.options.useContextMenu) {\n this.element.on(\"contextmenu\", this.handleContextmenu);\n }\n }\n\n public deinit(): void {\n this.element.empty();\n this.element.off();\n\n this.keyHandler.deinit();\n\n this.tree = new Node({}, true);\n\n super.deinit();\n }\n\n protected mouseCapture(positionInfo: PositionInfo): boolean | null {\n if (this.options.dragAndDrop) {\n return this.dndHandler.mouseCapture(positionInfo);\n } else {\n return false;\n }\n }\n\n protected mouseStart(positionInfo: PositionInfo): boolean {\n if (this.options.dragAndDrop) {\n return this.dndHandler.mouseStart(positionInfo);\n } else {\n return false;\n }\n }\n\n protected mouseDrag(positionInfo: PositionInfo): boolean {\n if (this.options.dragAndDrop) {\n const result = this.dndHandler.mouseDrag(positionInfo);\n\n this.scrollHandler.checkScrolling();\n return result;\n } else {\n return false;\n }\n }\n\n protected mouseStop(positionInfo: PositionInfo): boolean {\n if (this.options.dragAndDrop) {\n return this.dndHandler.mouseStop(positionInfo);\n } else {\n return false;\n }\n }\n\n protected getMouseDelay(): number {\n return this.options.startDndDelay ?? 0;\n }\n\n private initData(): void {\n if (this.options.data) {\n this.doLoadData(this.options.data, null);\n } else {\n const dataUrl = this.getDataUrlInfo(null);\n\n if (dataUrl) {\n this.doLoadDataFromUrl(null, null, null);\n } else {\n this.doLoadData([], null);\n }\n }\n }\n\n private getDataUrlInfo(node: Node | null): JQuery.AjaxSettings | null {\n const dataUrl =\n this.options.dataUrl || (this.element.data(\"url\") as string | null);\n\n const getUrlFromString = (url: string): JQuery.AjaxSettings => {\n const urlInfo: JQuery.AjaxSettings = { url };\n\n setUrlInfoData(urlInfo);\n\n return urlInfo;\n };\n\n const setUrlInfoData = (urlInfo: JQuery.AjaxSettings): void => {\n if (node?.id) {\n // Load on demand of a subtree; add node parameter\n const data = { node: node.id };\n urlInfo[\"data\"] = data;\n } else {\n // Add selected_node parameter\n const selectedNodeId = this.getNodeIdToBeSelected();\n if (selectedNodeId) {\n const data = { selected_node: selectedNodeId };\n urlInfo[\"data\"] = data;\n }\n }\n };\n\n if (typeof dataUrl === \"function\") {\n return dataUrl(node);\n } else if (typeof dataUrl === \"string\") {\n return getUrlFromString(dataUrl);\n } else if (dataUrl && typeof dataUrl === \"object\") {\n setUrlInfoData(dataUrl);\n return dataUrl;\n } else {\n return null;\n }\n }\n\n private getNodeIdToBeSelected(): NodeId | null {\n if (this.options.saveState) {\n return this.saveStateHandler.getNodeIdToBeSelected();\n } else {\n return null;\n }\n }\n\n private initTree(data: NodeData[]): void {\n const doInit = (): void => {\n if (!this.isInitialized) {\n this.isInitialized = true;\n this._triggerEvent(\"tree.init\");\n }\n };\n\n if (!this.options.nodeClass) {\n return;\n }\n\n this.tree = new this.options.nodeClass(\n null,\n true,\n this.options.nodeClass\n );\n\n this.selectNodeHandler.clear();\n\n this.tree.loadFromData(data);\n\n const mustLoadOnDemand = this.setInitialState();\n\n this._refreshElements(null);\n\n if (!mustLoadOnDemand) {\n doInit();\n } else {\n // Load data on demand and then init the tree\n this.setInitialStateOnDemand(doInit);\n }\n }\n\n // Set initial state, either by restoring the state or auto-opening nodes\n // result: must load nodes on demand?\n private setInitialState(): boolean {\n const restoreState = (): boolean[] => {\n // result: is state restored, must load on demand?\n if (!this.options.saveState) {\n return [false, false];\n } else {\n const state = this.saveStateHandler.getStateFromStorage();\n\n if (!state) {\n return [false, false];\n } else {\n const mustLoadOnDemand =\n this.saveStateHandler.setInitialState(state);\n\n // return true: the state is restored\n return [true, mustLoadOnDemand];\n }\n }\n };\n\n const autoOpenNodes = (): boolean => {\n // result: must load on demand?\n if (this.options.autoOpen === false) {\n return false;\n }\n\n const maxLevel = this.getAutoOpenMaxLevel();\n let mustLoadOnDemand = false;\n\n this.tree.iterate((node: Node, level: number) => {\n if (node.load_on_demand) {\n mustLoadOnDemand = true;\n return false;\n } else if (!node.hasChildren()) {\n return false;\n } else {\n node.is_open = true;\n return level !== maxLevel;\n }\n });\n\n return mustLoadOnDemand;\n };\n\n let [isRestored, mustLoadOnDemand] = restoreState(); // eslint-disable-line prefer-const\n\n if (!isRestored) {\n mustLoadOnDemand = autoOpenNodes();\n }\n\n return mustLoadOnDemand;\n }\n\n // Set the initial state for nodes that are loaded on demand\n // Call cb_finished when done\n private setInitialStateOnDemand(cbFinished: () => void): void {\n const restoreState = (): boolean => {\n if (!this.options.saveState) {\n return false;\n } else {\n const state = this.saveStateHandler.getStateFromStorage();\n\n if (!state) {\n return false;\n } else {\n this.saveStateHandler.setInitialStateOnDemand(\n state,\n cbFinished\n );\n\n return true;\n }\n }\n };\n\n const autoOpenNodes = (): void => {\n const maxLevel = this.getAutoOpenMaxLevel();\n let loadingCount = 0;\n\n const loadAndOpenNode = (node: Node): void => {\n loadingCount += 1;\n this._openNode(node, false, () => {\n loadingCount -= 1;\n openNodes();\n });\n };\n\n const openNodes = (): void => {\n this.tree.iterate((node: Node, level: number) => {\n if (node.load_on_demand) {\n if (!node.is_loading) {\n loadAndOpenNode(node);\n }\n\n return false;\n } else {\n this._openNode(node, false, null);\n\n return level !== maxLevel;\n }\n });\n\n if (loadingCount === 0) {\n cbFinished();\n }\n };\n\n openNodes();\n };\n\n if (!restoreState()) {\n autoOpenNodes();\n }\n }\n\n private getAutoOpenMaxLevel(): number {\n if (this.options.autoOpen === true) {\n return -1;\n } else if (typeof this.options.autoOpen === \"number\") {\n return this.options.autoOpen;\n } else if (typeof this.options.autoOpen === \"string\") {\n return parseInt(this.options.autoOpen, 10);\n } else {\n return 0;\n }\n }\n\n private handleClick = (\n e: JQuery.ClickEvent<HTMLElement, any, HTMLElement, HTMLElement>\n ): void => {\n const clickTarget = this.getClickTarget(e.target);\n\n if (clickTarget) {\n if (clickTarget.type === \"button\") {\n this.toggle(clickTarget.node, this.options.slide);\n\n e.preventDefault();\n e.stopPropagation();\n } else if (clickTarget.type === \"label\") {\n const node = clickTarget.node;\n const event = this._triggerEvent(\"tree.click\", {\n node,\n click_event: e,\n });\n\n if (!event.isDefaultPrevented()) {\n this.doSelectNode(node);\n }\n }\n }\n };\n\n private handleDblclick = (\n e: JQuery.DoubleClickEvent<HTMLElement, any, HTMLElement, HTMLElement>\n ): void => {\n const clickTarget = this.getClickTarget(e.target);\n\n if (clickTarget?.type === \"label\") {\n this._triggerEvent(\"tree.dblclick\", {\n node: clickTarget.node,\n click_event: e,\n });\n }\n };\n\n private getClickTarget(element: EventTarget): ClickTarget | null {\n const $target = jQuery(element);\n\n const $button = $target.closest(\".jqtree-toggler\");\n\n if ($button.length) {\n const node = this.getNode($button as JQuery<HTMLElement>);\n\n if (node) {\n return {\n type: \"button\",\n node,\n };\n }\n } else {\n const $el = $target.closest(\".jqtree-element\");\n if ($el.length) {\n const node = this.getNode($el as JQuery<HTMLElement>);\n if (node) {\n return {\n type: \"label\",\n node,\n };\n }\n }\n }\n\n return null;\n }\n\n private getNode($element: JQuery<HTMLElement>): null | Node {\n const $li = $element.closest(\"li.jqtree_common\");\n if ($li.length === 0) {\n return null;\n } else {\n return $li.data(\"node\") as Node;\n }\n }\n\n private handleContextmenu = (\n e: JQuery.ContextMenuEvent<HTMLElement, any, HTMLElement, HTMLElement>\n ) => {\n const $div = jQuery(e.target).closest(\"ul.jqtree-tree .jqtree-element\");\n if ($div.length) {\n const node = this.getNode($div);\n if (node) {\n e.preventDefault();\n e.stopPropagation();\n\n this._triggerEvent(\"tree.contextmenu\", {\n node,\n click_event: e,\n });\n return false;\n }\n }\n\n return null;\n };\n\n private saveState(): void {\n if (this.options.saveState) {\n this.saveStateHandler.saveState();\n }\n }\n\n private selectCurrentNode(mustSetFocus: boolean): void {\n const node = this.getSelectedNode();\n if (node) {\n const nodeElement = this._getNodeElementForNode(node);\n if (nodeElement) {\n nodeElement.select(mustSetFocus);\n }\n }\n }\n\n private deselectCurrentNode(): void {\n const node = this.getSelectedNode();\n if (node) {\n this.removeFromSelection(node);\n }\n }\n\n private getDefaultClosedIcon(): string {\n if (this.options.rtl) {\n // triangle to the left\n return \"&#x25c0;\";\n } else {\n // triangle to the right\n return \"&#x25ba;\";\n }\n }\n\n private getRtlOption(): boolean {\n if (this.options.rtl != null) {\n return this.options.rtl;\n } else {\n const dataRtl = this.element.data(\"rtl\") as unknown;\n\n if (\n dataRtl !== null &&\n dataRtl !== false &&\n dataRtl !== undefined\n ) {\n return true;\n } else {\n return false;\n }\n }\n }\n\n private doSelectNode(\n node: Node | null,\n optionsParam?: SelectNodeOptions\n ): void {\n const saveState = (): void => {\n if (this.options.saveState) {\n this.saveStateHandler.saveState();\n }\n };\n\n if (!node) {\n // Called with empty node -> deselect current node\n this.deselectCurrentNode();\n saveState();\n return;\n }\n const defaultOptions = { mustSetFocus: true, mustToggle: true };\n const selectOptions = { ...defaultOptions, ...(optionsParam || {}) };\n\n const canSelect = (): boolean => {\n if (this.options.onCanSelectNode) {\n return (\n this.options.selectable === true &&\n this.options.onCanSelectNode(node)\n );\n } else {\n return this.options.selectable === true;\n }\n };\n\n const openParents = (): void => {\n const parent = node.parent;\n\n if (parent && parent.parent && !parent.is_open) {\n this.openNode(parent, false);\n }\n };\n\n if (!canSelect()) {\n return;\n }\n\n if (this.selectNodeHandler.isNodeSelected(node)) {\n if (selectOptions.mustToggle) {\n this.deselectCurrentNode();\n this._triggerEvent(\"tree.select\", {\n node: null,\n previous_node: node,\n });\n }\n } else {\n const deselectedNode = this.getSelectedNode() || null;\n this.deselectCurrentNode();\n this.addToSelection(node, selectOptions.mustSetFocus);\n\n this._triggerEvent(\"tree.select\", {\n node,\n deselected_node: deselectedNode,\n });\n openParents();\n }\n\n saveState();\n }\n\n private doLoadData(data: NodeData[] | null, parentNode: Node | null): void {\n if (data) {\n if (parentNode) {\n this.deselectNodes(parentNode);\n this.loadSubtree(data, parentNode);\n } else {\n this.initTree(data);\n }\n\n if (this.isDragging()) {\n this.dndHandler.refresh();\n }\n }\n\n this._triggerEvent(\"tree.load_data\", {\n tree_data: data,\n parent_node: parentNode,\n });\n }\n\n private deselectNodes(parentNode: Node): void {\n const selectedNodesUnderParent =\n this.selectNodeHandler.getSelectedNodesUnder(parentNode);\n for (const n of selectedNodesUnderParent) {\n this.selectNodeHandler.removeFromSelection(n);\n }\n }\n\n private loadSubtree(data: NodeData[], parentNode: Node): void {\n parentNode.loadFromData(data);\n\n parentNode.load_on_demand = false;\n parentNode.is_loading = false;\n\n this._refreshElements(parentNode);\n }\n\n private doLoadDataFromUrl(\n urlInfoParam: string | JQuery.AjaxSettings | null,\n parentNode: Node | null,\n onFinished: HandleFinishedLoading | null\n ): void {\n const urlInfo = urlInfoParam || this.getDataUrlInfo(parentNode);\n\n this.dataLoader.loadFromUrl(urlInfo, parentNode, onFinished);\n }\n\n private loadFolderOnDemand(\n node: Node,\n slide = true,\n onFinished: OnFinishOpenNode | null\n ): void {\n node.is_loading = true;\n\n this.doLoadDataFromUrl(null, node, () => {\n this._openNode(node, slide, onFinished);\n });\n }\n}\n\nSimpleWidget.register(JqTreeWidget, \"tree\");\n"],"names":["version","Position","positionNames","before","Before","after","After","inside","Inside","none","None","getPositionName","position","name","Object","prototype","hasOwnProperty","call","getPosition","isNodeRecordWithChildren","data","Array","Node","o","isRoot","nodeClass","isEmptyFolder","load_on_demand","setData","children","parent","idMapping","Map","tree","key","value","removeChildren","node","createNode","addChild","length","loadFromData","push","setParent","index","splice","doRemoveChild","indexOf","hasChildren","callback","_iterate","level","child","result","movedNode","targetNode","isParentOf","addChildAtPosition","getChildIndex","includeParent","getDataFromNodes","nodes","map","tmpNode","k","v","getNodeByCallback","n","iterate","nodeInfo","childIndex","newParent","originalParent","removeChild","nodeId","get","id","set","removeNodeFromIndex","previousIndex","nextIndex","filter","f","includeChildren","nextSibling","getNextSibling","getNextNode","is_open","previousSibling","getPreviousSibling","getParent","getLastChild","lastChild","addNode","nodeData","addChildren","childrenData","initFromData","addNodeToIndex","getNodeClass","DragAndDropHandler","treeWidget","hoveredArea","hitAreas","isDragging","currentItem","positionInfo","$element","jQuery","target","mustCaptureElement","options","onIsMoveHandle","nodeElement","_getNodeElement","onCanMove","pageX","undefined","pageY","refresh","offset","left","top","dragElement","DragElement","element","autoEscape","addClass","move","area","findHoveredArea","canMoveToArea","isFolder","stopOpenFolderTimer","mustOpenFolderTimer","startOpenFolderTimer","updateDropHint","removeDropHint","onDragMove","originalEvent","moveItem","clear","removeHover","removeHitAreas","removeClass","onDragStop","generateHitAreas","_getNodeElementForNode","hitAreasGenerator","HitAreasGenerator","getTreeDimensions","bottom","generate","is","onCanMoveTo","positionName","remove","previousGhost","x","y","dimensions","right","low","high","mid","addDropHint","folder","openFolder","_openNode","slide","openFolderDelay","openFolderTimer","window","setTimeout","clearTimeout","previousParent","doMove","moveNode","empty","_refreshElements","event","_triggerEvent","move_info","moved_node","target_node","previous_parent","do_move","original_event","isDefaultPrevented","el","width","height","_getScrollLeft","VisibleNodeIterator","isFirstNode","_iterateNode","nextNode","mustIterateInside","handleFirstNode","handleNode","handleOpenFolder","handleClosedFolder","childrenLength","forEach","_","i","handleAfterOpenFolder","currentNode","treeBottom","positions","lastTop","previousTop","group","generateHitAreasForGroup","addPosition","getTop","positionsInGroup","positionCount","Math","min","areaHeight","round","areaTop","nodeName","offsetX","offsetY","$tree","text","html","css","append","isInt","isFunction","getBoolString","ElementsRenderer","openedIconElement","createButtonElement","openedIcon","closedIconElement","closedIcon","fromNode","renderFromNode","renderFromRoot","createDomElements","$previousLi","li","createLi","getLevel","attachNodeData","isRootNode","ul","createUl","appendChild","classString","role","rtl","dragAndDrop","document","createElement","className","setAttribute","isSelected","Boolean","selectNodeHandler","isNodeSelected","mustShowFolder","showEmptyFolder","createFolderLi","createNodeLi","onCreateLi","buttonClasses","getButtonClasses","folderClasses","getFolderClasses","iconElement","div","buttonLink","cloneNode","buttonLeft","createTitleSpan","liClasses","join","isOpen","titleSpan","classes","tabIndex","textContent","innerHTML","is_loading","createTextNode","DataLoader","urlInfo","parentNode","onFinished","$el","getDomElement","addLoadingClass","notifyLoading","stopLoading","removeLoadingClass","handleSuccess","loadData","parseData","handleError","jqXHR","onLoadFailed","submitRequest","isLoading","onLoading","urlInfoInput","url","ajaxSettings","_objectSpread","method","cache","dataType","success","error","toUpperCase","ajax","dataFilter","getParsedData","JSON","parse","parsedData","KeyHandler","e","canHandleKeyboard","selectedNode","getSelectedNode","which","DOWN","moveDown","UP","moveUp","RIGHT","moveRight","LEFT","moveLeft","keyboardSupport","on","handleKeyDown","off","selectNode","getNextVisibleNode","getPreviousVisibleNode","openNode","closeNode","scrollHandler","isScrolledIntoView","find","scrollToNode","isFocusOnTree","register","widgetClass","widgetName","getDataKey","getWidgetData","dataKey","widget","SimpleWidget","createWidget","existingWidget","simpleWidgetClass","init","destroyWidget","destroy","removeData","callFunction","functionName","args","simpleWidget","widgetFunction","apply","fn","argument1","defaults","constructor","deinit","getPositionInfoFromMouseEvent","getPositionInfoFromTouch","touch","MouseWidget","button","handleMouseDown","cancelable","preventDefault","handleMouseMove","handleMouseUp","touches","changedTouches","addEventListener","mouseDown","passive","touchStart","isMouseStarted","mouseDelayTimer","isMouseDelayMet","mouseDownInfo","removeEventListener","removeMouseMoveEventListeners","mouseCapture","handleStartMouse","mouseMove","touchMove","mouseUp","touchEnd","mouseDelay","getMouseDelay","startMouseDelayTimer","mouseDrag","mouseStart","mouseStop","SaveStateHandler","state","stringify","getState","onSetStateFromStorage","supportsLocalStorage","localStorage","setItem","getKeyName","jsonData","loadFromStorage","parseState","getOpenNodeIds","openNodes","getSelectedNodeIds","selectedNodeIds","getSelectedNodes","open_nodes","selected_node","mustLoadOnDemand","openInitialNodes","resetSelection","selectInitialNodes","cbFinished","doSetInitialStateOnDemand","getStateFromStorage","onGetStateFromStorage","getItem","nodeIds","getNodeById","selectCount","addToSelection","selectedNodes","removeFromSelection","nodeIdsParam","loadingCount","newNodesIds","loadAndOpenNode","saveState","testSupport","sessionStorage","removeItem","_supportsLocalStorage","ScrollHandler","isInitialized","ensureInit","checkVerticalScrolling","checkHorizontalScrolling","$scrollParent","scrollTop","treeTop","elementBottom","viewBottom","elementTop","viewTop","elHeight","originalTop","scrollParentTop","windowHeight","scrollLeft","getParentWithOverflow","cssAttributes","hasOverFlow","attr","overflowValue","parents","setDocumentAsScrollParent","tagName","initScrollParent","scrollParent","distanceBottom","offsetHeight","refreshHitAreas","distanceTop","dndHandler","handleVerticalScrollingWithScrollParent","handleVerticalScrollingWithDocument","handleHorizontalScrollingWithParent","handleHorizontalScrollingWithDocument","scrollParentOffset","canScrollRight","clientWidth","scrollWidth","canScrollLeft","rightEdge","leftEdge","isNearRightEdge","isNearLeftEdge","max","$document","windowWidth","SelectNodeHandler","Set","selectedSingleNode","has","add","activeElement","_containsElement","NodeElement","mustShowBorderDropHint","BorderDropHint","GhostDropHint","mustSetFocus","$li","getLi","$span","getSpan","trigger","removeAttr","blur","FolderElement","animationSpeed","$button","getButton","buttonEl","icon","renderer","doOpen","getUl","slideDown","show","doClose","slideUp","hide","$div","elWidth","outerHeight","$hint","$ghost","moveAfter","moveBefore","moveInsideOpenFolder","moveInside","childElement","NODE_PARAM_IS_EMPTY","PARAM_IS_EMPTY","JqTreeWidget","clickTarget","getClickTarget","type","toggle","stopPropagation","click_event","doSelectNode","closest","getNode","slideParam","Error","optionsParam","getData","doLoadData","param1","param2","param3","doLoadDataFromUrl","getNodeByName","getNodeByNameMustExist","getNodesByProperty","parseParams","close","newNodeInfo","existingNode","newNode","addAfter","addBefore","addParent","parentNodeParam","prepend","idIsChanged","subtree","positionIndex","saveStateHandler","select","deselect","nodeOffset","nodeTop","treeOffset","scrollToY","setInitialState","option","keyHandler","__version__","eventName","values","Event","doOpenNode","_node","_slide","_onFinished","folderElement","open","loadFolderOnDemand","mustSelect","isSelectedNodeInSubtree","render","selectCurrentNode","getScrollLeft","getRtlOption","getDefaultClosedIcon","dataLoader","initData","handleClick","handleDblclick","useContextMenu","handleContextmenu","checkScrolling","startDndDelay","dataUrl","getDataUrlInfo","getUrlFromString","setUrlInfoData","selectedNodeId","getNodeIdToBeSelected","doInit","setInitialStateOnDemand","restoreState","autoOpenNodes","autoOpen","maxLevel","getAutoOpenMaxLevel","isRestored","parseInt","$target","dataRtl","deselectCurrentNode","defaultOptions","mustToggle","selectOptions","canSelect","onCanSelectNode","selectable","openParents","previous_node","deselectedNode","deselected_node","deselectNodes","loadSubtree","initTree","tree_data","parent_node","selectedNodesUnderParent","getSelectedNodesUnder","urlInfoParam","loadFromUrl"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAAA,IAAMA,OAAO,GAAG,OAAO;;ECIvB,IAAYC,QAAQ,CAAA;EAKnB,CAAA,UALWA,QAAQ,EAAA;EAARA,EAAAA,QAAQ,CAARA,QAAQ,CAAA,QAAA,CAAA,GAAA,CAAA,CAAA,GAAA,QAAA,CAAA;EAARA,EAAAA,QAAQ,CAARA,QAAQ,CAAA,OAAA,CAAA,GAAA,CAAA,CAAA,GAAA,OAAA,CAAA;EAARA,EAAAA,QAAQ,CAARA,QAAQ,CAAA,QAAA,CAAA,GAAA,CAAA,CAAA,GAAA,QAAA,CAAA;EAARA,EAAAA,QAAQ,CAARA,QAAQ,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAA,CAAA;EAAA,CAARA,EAAAA,QAAQ,KAARA,QAAQ,GAAA,EAAA,CAAA,CAAA,CAAA;EAOpB,IAAMC,aAAuC,GAAG;IAC5CC,MAAM,EAAEF,QAAQ,CAACG,MAAM;IACvBC,KAAK,EAAEJ,QAAQ,CAACK,KAAK;IACrBC,MAAM,EAAEN,QAAQ,CAACO,MAAM;IACvBC,IAAI,EAAER,QAAQ,CAACS,IAAAA;EACnB,CAAC,CAAA;EAIM,IAAMC,eAAe,GAAG,SAAlBA,eAAe,CAAIC,QAAkB,EAAa;EAC3D,EAAA,KAAK,IAAMC,IAAI,IAAIX,aAAa,EAAE;EAC9B,IAAA,IAAIY,MAAM,CAACC,SAAS,CAACC,cAAc,CAACC,IAAI,CAACf,aAAa,EAAEW,IAAI,CAAC,EAAE;EAC3D,MAAA,IAAIX,aAAa,CAACW,IAAI,CAAC,KAAKD,QAAQ,EAAE;EAClC,QAAA,OAAOC,IAAI,CAAA;EACf,OAAA;EACJ,KAAA;EACJ,GAAA;EAEA,EAAA,OAAO,EAAE,CAAA;EACb,CAAC,CAAA;EAEM,IAAMK,WAAW,GAAG,SAAdA,WAAW,CAAIL,IAAY,EAAA;IAAA,OACpCX,aAAa,CAACW,IAAI,CAAC,CAAA;EAAA,CAAA,CAAA;EAEvB,IAAMM,wBAAwB,GAAG,SAA3BA,wBAAwB,CAC1BC,IAAc,EAAA;EAAA,EAAA,OAEd,OAAOA,CAAAA,IAAI,CAAK,KAAA,QAAQ,IACxB,UAAU,IAAIA,IAAI,IAClBA,IAAI,CAAC,UAAU,CAAC,YAAYC,KAAK,CAAA;EAAA,CAAA,CAAA;EAErC,IAAaC,IAAI,gBAAA,YAAA;IAgBb,SAAyE,IAAA,GAAA;MAAA,IAA7DC,CAAkB,uEAAG,IAAI,CAAA;MAAA,IAAEC,MAAM,uEAAG,KAAK,CAAA;MAAA,IAAEC,SAAS,uEAAGH,IAAI,CAAA;EAAA,IAAA,eAAA,CAAA,IAAA,EAAA,IAAA,CAAA,CAAA;EAAA,IAAA,eAAA,CAAA,IAAA,EAAA,IAAA,EAAA,KAAA,CAAA,CAAA,CAAA;EAAA,IAAA,eAAA,CAAA,IAAA,EAAA,MAAA,EAAA,KAAA,CAAA,CAAA,CAAA;EAAA,IAAA,eAAA,CAAA,IAAA,EAAA,UAAA,EAAA,KAAA,CAAA,CAAA,CAAA;EAAA,IAAA,eAAA,CAAA,IAAA,EAAA,QAAA,EAAA,KAAA,CAAA,CAAA,CAAA;EAAA,IAAA,eAAA,CAAA,IAAA,EAAA,WAAA,EAAA,KAAA,CAAA,CAAA,CAAA;EAAA,IAAA,eAAA,CAAA,IAAA,EAAA,MAAA,EAAA,KAAA,CAAA,CAAA,CAAA;EAAA,IAAA,eAAA,CAAA,IAAA,EAAA,WAAA,EAAA,KAAA,CAAA,CAAA,CAAA;EAAA,IAAA,eAAA,CAAA,IAAA,EAAA,gBAAA,EAAA,KAAA,CAAA,CAAA,CAAA;EAAA,IAAA,eAAA,CAAA,IAAA,EAAA,SAAA,EAAA,KAAA,CAAA,CAAA,CAAA;EAAA,IAAA,eAAA,CAAA,IAAA,EAAA,SAAA,EAAA,KAAA,CAAA,CAAA,CAAA;EAAA,IAAA,eAAA,CAAA,IAAA,EAAA,YAAA,EAAA,KAAA,CAAA,CAAA,CAAA;EAAA,IAAA,eAAA,CAAA,IAAA,EAAA,eAAA,EAAA,KAAA,CAAA,CAAA,CAAA;MACnE,IAAI,CAACT,IAAI,GAAG,EAAE,CAAA;MACd,IAAI,CAACa,aAAa,GAAG,KAAK,CAAA;MAC1B,IAAI,CAACC,cAAc,GAAG,KAAK,CAAA;EAE3B,IAAA,IAAI,CAACC,OAAO,CAACL,CAAC,CAAC,CAAA;MAEf,IAAI,CAACM,QAAQ,GAAG,EAAE,CAAA;MAClB,IAAI,CAACC,MAAM,GAAG,IAAI,CAAA;EAElB,IAAA,IAAIN,MAAM,EAAE;EACR,MAAA,IAAI,CAACO,SAAS,GAAG,IAAIC,GAAG,EAAgB,CAAA;QACxC,IAAI,CAACC,IAAI,GAAG,IAAI,CAAA;QAChB,IAAI,CAACR,SAAS,GAAGA,SAAS,CAAA;EAC9B,KAAA;EACJ,GAAA;;EAEA;EACJ;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAVI,EAAA,YAAA,CAAA,IAAA,EAAA,CAAA;EAAA,IAAA,GAAA,EAAA,SAAA;MAAA,KAgBA,EAAA,SAAA,OAAA,CAAeF,CAAkB,EAAQ;QACrC,IAAI,CAACA,CAAC,EAAE;EACJ,QAAA,OAAA;EACJ,OAAC,MAAM,IAAI,OAAOA,CAAC,KAAK,QAAQ,EAAE;UAC9B,IAAI,CAACV,IAAI,GAAGU,CAAC,CAAA;EACjB,OAAC,MAAM,IAAI,OAAA,CAAOA,CAAC,CAAA,KAAK,QAAQ,EAAE;EAC9B,QAAA,KAAK,IAAMW,IAAG,IAAIX,CAAC,EAAE;EACjB,UAAA,IAAIT,MAAM,CAACC,SAAS,CAACC,cAAc,CAACC,IAAI,CAACM,CAAC,EAAEW,IAAG,CAAC,EAAE;EAC9C,YAAA,IAAMC,KAAK,GAAGZ,CAAC,CAACW,IAAG,CAAC,CAAA;EAEpB,YAAA,IAAIA,IAAG,KAAK,OAAO,IAAIA,IAAG,KAAK,MAAM,EAAE;EACnC;EACA,cAAA,IAAI,OAAOC,KAAK,KAAK,QAAQ,EAAE;kBAC3B,IAAI,CAACtB,IAAI,GAAGsB,KAAK,CAAA;EACrB,eAAA;eACH,MAAM,IAAID,IAAG,KAAK,UAAU,IAAIA,IAAG,KAAK,QAAQ,EAAE;EAC/C;EACA,cAAA,IAAI,CAACA,IAAG,CAAC,GAAGC,KAAK,CAAA;EACrB,aAAA;EACJ,WAAA;EACJ,SAAA;EACJ,OAAA;EACJ,KAAA;;EAEA;EACJ;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAfI,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,cAAA;MAAA,KAiBA,EAAA,SAAA,YAAA,CAAoBf,IAAgB,EAAQ;QACxC,IAAI,CAACgB,cAAc,EAAE,CAAA;EAAC,MAAA,IAAA,SAAA,GAAA,0BAAA,CAENhB,IAAI,CAAA;EAAA,QAAA,KAAA,CAAA;EAAA,MAAA,IAAA;UAApB,KAAsB,SAAA,CAAA,CAAA,EAAA,EAAA,CAAA,CAAA,KAAA,GAAA,SAAA,CAAA,CAAA,EAAA,EAAA,IAAA,GAAA;EAAA,UAAA,IAAXG,CAAC,GAAA,KAAA,CAAA,KAAA,CAAA;EACR,UAAA,IAAMc,KAAI,GAAG,IAAI,CAACC,UAAU,CAACf,CAAC,CAAC,CAAA;EAC/B,UAAA,IAAI,CAACgB,QAAQ,CAACF,KAAI,CAAC,CAAA;EAEnB,UAAA,IAAIlB,wBAAwB,CAACI,CAAC,CAAC,EAAE;EAC7B,YAAA,IAAIA,CAAC,CAACM,QAAQ,CAACW,MAAM,KAAK,CAAC,EAAE;gBACzBH,KAAI,CAACX,aAAa,GAAG,IAAI,CAAA;EAC7B,aAAC,MAAM;EACHW,cAAAA,KAAI,CAACI,YAAY,CAAClB,CAAC,CAACM,QAAQ,CAAC,CAAA;EACjC,aAAA;EACJ,WAAA;EACJ,SAAA;EAAC,OAAA,CAAA,OAAA,GAAA,EAAA;EAAA,QAAA,SAAA,CAAA,CAAA,CAAA,GAAA,CAAA,CAAA;EAAA,OAAA,SAAA;EAAA,QAAA,SAAA,CAAA,CAAA,EAAA,CAAA;EAAA,OAAA;EAED,MAAA,OAAO,IAAI,CAAA;EACf,KAAA;;EAEA;EACJ;EACA;EACA;EACA;EACA;EALI,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,UAAA;MAAA,KAOA,EAAA,SAAA,QAAA,CAAgBQ,IAAU,EAAQ;EAC9B,MAAA,IAAI,CAACR,QAAQ,CAACa,IAAI,CAACL,IAAI,CAAC,CAAA;EACxBA,MAAAA,IAAI,CAACM,SAAS,CAAC,IAAI,CAAC,CAAA;EACxB,KAAA;;EAEA;EACJ;EACA;EACA;EACA;EACA;EACA;EANI,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,oBAAA;EAAA,IAAA,KAAA,EAQA,SAA0BN,kBAAAA,CAAAA,IAAU,EAAEO,KAAa,EAAQ;QACvD,IAAI,CAACf,QAAQ,CAACgB,MAAM,CAACD,KAAK,EAAE,CAAC,EAAEP,IAAI,CAAC,CAAA;EACpCA,MAAAA,IAAI,CAACM,SAAS,CAAC,IAAI,CAAC,CAAA;EACxB,KAAA;;EAEA;EACJ;EACA;EACA;EAHI,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,aAAA;MAAA,KAKA,EAAA,SAAA,WAAA,CAAmBN,IAAU,EAAQ;EACjC;QACAA,IAAI,CAACD,cAAc,EAAE,CAAA;EAErB,MAAA,IAAI,CAACU,aAAa,CAACT,IAAI,CAAC,CAAA;EAC5B,KAAA;;EAEA;EACJ;EACA;EACA;EAHI,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,eAAA;MAAA,KAKA,EAAA,SAAA,aAAA,CAAqBA,IAAU,EAAU;EACrC,MAAA,OAAO,IAAI,CAACR,QAAQ,CAACkB,OAAO,CAACV,IAAI,CAAC,CAAA;EACtC,KAAA;;EAEA;EACJ;EACA;EACA;EACA;EACA;EALI,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,aAAA;EAAA,IAAA,KAAA,EAOA,SAA8B,WAAA,GAAA;EAC1B,MAAA,OAAO,IAAI,CAACR,QAAQ,CAACW,MAAM,KAAK,CAAC,CAAA;EACrC,KAAA;EAAC,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,UAAA;EAAA,IAAA,KAAA,EAED,SAA2B,QAAA,GAAA;EACvB,MAAA,OAAO,IAAI,CAACQ,WAAW,EAAE,IAAI,IAAI,CAACrB,cAAc,CAAA;EACpD,KAAA;;EAEA;EACJ;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAXI,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,SAAA;MAAA,KAiBA,EAAA,SAAA,OAAA,CAAesB,QAAyB,EAAQ;QAC5C,IAAMC,QAAQ,GAAG,SAAXA,QAAQ,CAAIb,IAAU,EAAEc,KAAa,EAAW;UAClD,IAAId,IAAI,CAACR,QAAQ,EAAE;YAAA,IACKQ,UAAAA,GAAAA,0BAAAA,CAAAA,IAAI,CAACR,QAAQ,CAAA;EAAA,YAAA,MAAA,CAAA;EAAA,UAAA,IAAA;cAAjC,KAAmC,UAAA,CAAA,CAAA,EAAA,EAAA,CAAA,CAAA,MAAA,GAAA,UAAA,CAAA,CAAA,EAAA,EAAA,IAAA,GAAA;EAAA,cAAA,IAAxBuB,KAAK,GAAA,MAAA,CAAA,KAAA,CAAA;EACZ,cAAA,IAAMC,MAAM,GAAGJ,QAAQ,CAACG,KAAK,EAAED,KAAK,CAAC,CAAA;EAErC,cAAA,IAAIE,MAAM,IAAID,KAAK,CAACJ,WAAW,EAAE,EAAE;EAC/BE,gBAAAA,QAAQ,CAACE,KAAK,EAAED,KAAK,GAAG,CAAC,CAAC,CAAA;EAC9B,eAAA;EACJ,aAAA;EAAC,WAAA,CAAA,OAAA,GAAA,EAAA;EAAA,YAAA,UAAA,CAAA,CAAA,CAAA,GAAA,CAAA,CAAA;EAAA,WAAA,SAAA;EAAA,YAAA,UAAA,CAAA,CAAA,EAAA,CAAA;EAAA,WAAA;EACL,SAAA;SACH,CAAA;EAEDD,MAAAA,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,CAAA;EACrB,KAAA;;EAEA;EACJ;EACA;EACA;EACA;EACA;EALI,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,UAAA;EAAA,IAAA,KAAA,EAQA,kBACII,SAAe,EACfC,UAAgB,EAChB3C,QAAkB,EACX;QACP,IAAI,CAAC0C,SAAS,CAACxB,MAAM,IAAIwB,SAAS,CAACE,UAAU,CAACD,UAAU,CAAC,EAAE;EACvD;EACA;EACA,QAAA,OAAO,KAAK,CAAA;EAChB,OAAC,MAAM;EACHD,QAAAA,SAAS,CAACxB,MAAM,CAACgB,aAAa,CAACQ,SAAS,CAAC,CAAA;EAEzC,QAAA,QAAQ1C,QAAQ;YACZ,KAAKX,QAAQ,CAACK,KAAK;EAAE,YAAA;gBACjB,IAAIiD,UAAU,CAACzB,MAAM,EAAE;EACnByB,gBAAAA,UAAU,CAACzB,MAAM,CAAC2B,kBAAkB,CAChCH,SAAS,EACTC,UAAU,CAACzB,MAAM,CAAC4B,aAAa,CAACH,UAAU,CAAC,GAAG,CAAC,CAClD,CAAA;EACD,gBAAA,OAAO,IAAI,CAAA;EACf,eAAA;EACA,cAAA,OAAO,KAAK,CAAA;EAChB,aAAA;YAEA,KAAKtD,QAAQ,CAACG,MAAM;EAAE,YAAA;gBAClB,IAAImD,UAAU,CAACzB,MAAM,EAAE;EACnByB,gBAAAA,UAAU,CAACzB,MAAM,CAAC2B,kBAAkB,CAChCH,SAAS,EACTC,UAAU,CAACzB,MAAM,CAAC4B,aAAa,CAACH,UAAU,CAAC,CAC9C,CAAA;EACD,gBAAA,OAAO,IAAI,CAAA;EACf,eAAA;EACA,cAAA,OAAO,KAAK,CAAA;EAChB,aAAA;YAEA,KAAKtD,QAAQ,CAACO,MAAM;EAAE,YAAA;EAClB;EACA+C,cAAAA,UAAU,CAACE,kBAAkB,CAACH,SAAS,EAAE,CAAC,CAAC,CAAA;EAC3C,cAAA,OAAO,IAAI,CAAA;EACf,aAAA;EAEA,UAAA;EACI,YAAA,OAAO,KAAK,CAAA;EAAC,SAAA;EAEzB,OAAA;EACJ,KAAA;;EAEA;EACJ;EACA;EAFI,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,SAAA;EAAA,IAAA,KAAA,EAGA,SAAoD,OAAA,GAAA;QAAA,IAArCK,aAAa,uEAAG,KAAK,CAAA;EAChC,MAAA,IAAMC,gBAAgB,GAAG,SAAnBA,gBAAgB,CAAIC,KAAa,EAAgC;EACnE,QAAA,OAAOA,KAAK,CAACC,GAAG,CAAC,UAACzB,IAAI,EAAK;YACvB,IAAM0B,OAAgC,GAAG,EAAE,CAAA;EAE3C,UAAA,KAAK,IAAMC,CAAC,IAAI3B,IAAI,EAAE;EAClB,YAAA,IACI,CACI,QAAQ,EACR,UAAU,EACV,SAAS,EACT,WAAW,EACX,gBAAgB,EAChB,WAAW,EACX,MAAM,EACN,eAAe,CAClB,CAACU,OAAO,CAACiB,CAAC,CAAC,KAAK,CAAC,CAAC,IACnBlD,MAAM,CAACC,SAAS,CAACC,cAAc,CAACC,IAAI,CAACoB,IAAI,EAAE2B,CAAC,CAAC,EAC/C;EACE,cAAA,IAAMC,CAAC,GAAG5B,IAAI,CAAC2B,CAAC,CAAC,CAAA;EACjBD,cAAAA,OAAO,CAACC,CAAC,CAAC,GAAGC,CAAC,CAAA;EAClB,aAAA;EACJ,WAAA;EAEA,UAAA,IAAI5B,IAAI,CAACW,WAAW,EAAE,EAAE;cACpBe,OAAO,CAAC,UAAU,CAAC,GAAGH,gBAAgB,CAACvB,IAAI,CAACR,QAAQ,CAAC,CAAA;EACzD,WAAA;EAEA,UAAA,OAAOkC,OAAO,CAAA;EAClB,SAAC,CAAC,CAAA;SACL,CAAA;EAED,MAAA,IAAIJ,aAAa,EAAE;EACf,QAAA,OAAOC,gBAAgB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAA;EACnC,OAAC,MAAM;EACH,QAAA,OAAOA,gBAAgB,CAAC,IAAI,CAAC/B,QAAQ,CAAC,CAAA;EAC1C,OAAA;EACJ,KAAA;EAAC,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,eAAA;MAAA,KAED,EAAA,SAAA,aAAA,CAAqBhB,IAAY,EAAe;EAC5C,MAAA,OAAO,IAAI,CAACqD,iBAAiB,CAAC,UAAC7B,IAAU,EAAA;EAAA,QAAA,OAAKA,IAAI,CAACxB,IAAI,KAAKA,IAAI,CAAA;SAAC,CAAA,CAAA;EACrE,KAAA;EAAC,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,wBAAA;MAAA,KAED,EAAA,SAAA,sBAAA,CAA8BA,IAAY,EAAQ;EAC9C,MAAA,IAAMwB,IAAI,GAAG,IAAI,CAAC6B,iBAAiB,CAAC,UAACC,CAAO,EAAA;EAAA,QAAA,OAAKA,CAAC,CAACtD,IAAI,KAAKA,IAAI,CAAA;SAAC,CAAA,CAAA;QAEjE,IAAI,CAACwB,IAAI,EAAE;EACP,QAAA,MAAA,iBAAA,CAAA,MAAA,CAAwBxB,IAAI,EAAA,YAAA,CAAA,CAAA;EAChC,OAAA;EAEA,MAAA,OAAOwB,IAAI,CAAA;EACf,KAAA;EAAC,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,mBAAA;MAAA,KAED,EAAA,SAAA,iBAAA,CAAyBY,QAAiC,EAAe;QACrE,IAAII,MAAmB,GAAG,IAAI,CAAA;EAE9B,MAAA,IAAI,CAACe,OAAO,CAAC,UAAC/B,IAAU,EAAK;EACzB,QAAA,IAAIgB,MAAM,EAAE;EACR,UAAA,OAAO,KAAK,CAAA;EAChB,SAAC,MAAM,IAAIJ,QAAQ,CAACZ,IAAI,CAAC,EAAE;EACvBgB,UAAAA,MAAM,GAAGhB,IAAI,CAAA;EACb,UAAA,OAAO,KAAK,CAAA;EAChB,SAAC,MAAM;EACH,UAAA,OAAO,IAAI,CAAA;EACf,SAAA;EACJ,OAAC,CAAC,CAAA;EAEF,MAAA,OAAOgB,MAAM,CAAA;EACjB,KAAA;EAAC,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,UAAA;MAAA,KAED,EAAA,SAAA,QAAA,CAAgBgB,QAAkB,EAAe;EAC7C,MAAA,IAAI,CAAC,IAAI,CAACvC,MAAM,EAAE;EACd,QAAA,OAAO,IAAI,CAAA;EACf,OAAC,MAAM;EACH,QAAA,IAAMO,MAAI,GAAG,IAAI,CAACC,UAAU,CAAC+B,QAAQ,CAAC,CAAA;UAEtC,IAAMC,UAAU,GAAG,IAAI,CAACxC,MAAM,CAAC4B,aAAa,CAAC,IAAI,CAAC,CAAA;UAClD,IAAI,CAAC5B,MAAM,CAAC2B,kBAAkB,CAACpB,MAAI,EAAEiC,UAAU,GAAG,CAAC,CAAC,CAAA;UAEpD,IACInD,wBAAwB,CAACkD,QAAQ,CAAC,IAClCA,QAAQ,CAACxC,QAAQ,CAACW,MAAM,EAC1B;EACEH,UAAAA,MAAI,CAACI,YAAY,CAAC4B,QAAQ,CAACxC,QAAQ,CAAC,CAAA;EACxC,SAAA;EAEA,QAAA,OAAOQ,MAAI,CAAA;EACf,OAAA;EACJ,KAAA;EAAC,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,WAAA;MAAA,KAED,EAAA,SAAA,SAAA,CAAiBgC,QAAkB,EAAe;EAC9C,MAAA,IAAI,CAAC,IAAI,CAACvC,MAAM,EAAE;EACd,QAAA,OAAO,IAAI,CAAA;EACf,OAAC,MAAM;EACH,QAAA,IAAMO,MAAI,GAAG,IAAI,CAACC,UAAU,CAAC+B,QAAQ,CAAC,CAAA;UAEtC,IAAMC,UAAU,GAAG,IAAI,CAACxC,MAAM,CAAC4B,aAAa,CAAC,IAAI,CAAC,CAAA;UAClD,IAAI,CAAC5B,MAAM,CAAC2B,kBAAkB,CAACpB,MAAI,EAAEiC,UAAU,CAAC,CAAA;UAEhD,IACInD,wBAAwB,CAACkD,QAAQ,CAAC,IAClCA,QAAQ,CAACxC,QAAQ,CAACW,MAAM,EAC1B;EACEH,UAAAA,MAAI,CAACI,YAAY,CAAC4B,QAAQ,CAACxC,QAAQ,CAAC,CAAA;EACxC,SAAA;EAEA,QAAA,OAAOQ,MAAI,CAAA;EACf,OAAA;EACJ,KAAA;EAAC,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,WAAA;MAAA,KAED,EAAA,SAAA,SAAA,CAAiBgC,QAAkB,EAAe;EAC9C,MAAA,IAAI,CAAC,IAAI,CAACvC,MAAM,EAAE;EACd,QAAA,OAAO,IAAI,CAAA;EACf,OAAC,MAAM;EACH,QAAA,IAAMyC,SAAS,GAAG,IAAI,CAACjC,UAAU,CAAC+B,QAAQ,CAAC,CAAA;UAE3C,IAAI,IAAI,CAACpC,IAAI,EAAE;EACXsC,UAAAA,SAAS,CAAC5B,SAAS,CAAC,IAAI,CAACV,IAAI,CAAC,CAAA;EAClC,SAAA;EACA,QAAA,IAAMuC,cAAc,GAAG,IAAI,CAAC1C,MAAM,CAAA;UAAC,IAEf0C,UAAAA,GAAAA,0BAAAA,CAAAA,cAAc,CAAC3C,QAAQ,CAAA;EAAA,UAAA,MAAA,CAAA;EAAA,QAAA,IAAA;YAA3C,KAA6C,UAAA,CAAA,CAAA,EAAA,EAAA,CAAA,CAAA,MAAA,GAAA,UAAA,CAAA,CAAA,EAAA,EAAA,IAAA,GAAA;EAAA,YAAA,IAAlCuB,KAAK,GAAA,MAAA,CAAA,KAAA,CAAA;EACZmB,YAAAA,SAAS,CAAChC,QAAQ,CAACa,KAAK,CAAC,CAAA;EAC7B,WAAA;EAAC,SAAA,CAAA,OAAA,GAAA,EAAA;EAAA,UAAA,UAAA,CAAA,CAAA,CAAA,GAAA,CAAA,CAAA;EAAA,SAAA,SAAA;EAAA,UAAA,UAAA,CAAA,CAAA,EAAA,CAAA;EAAA,SAAA;UAEDoB,cAAc,CAAC3C,QAAQ,GAAG,EAAE,CAAA;EAC5B2C,QAAAA,cAAc,CAACjC,QAAQ,CAACgC,SAAS,CAAC,CAAA;EAClC,QAAA,OAAOA,SAAS,CAAA;EACpB,OAAA;EACJ,KAAA;EAAC,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,QAAA;EAAA,IAAA,KAAA,EAED,SAAsB,MAAA,GAAA;QAClB,IAAI,IAAI,CAACzC,MAAM,EAAE;EACb,QAAA,IAAI,CAACA,MAAM,CAAC2C,WAAW,CAAC,IAAI,CAAC,CAAA;UAC7B,IAAI,CAAC3C,MAAM,GAAG,IAAI,CAAA;EACtB,OAAA;EACJ,KAAA;EAAC,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,QAAA;MAAA,KAED,EAAA,SAAA,MAAA,CAAcuC,QAAkB,EAAQ;EACpC,MAAA,IAAMhC,IAAI,GAAG,IAAI,CAACC,UAAU,CAAC+B,QAAQ,CAAC,CAAA;EACtC,MAAA,IAAI,CAAC9B,QAAQ,CAACF,IAAI,CAAC,CAAA;QAEnB,IAAIlB,wBAAwB,CAACkD,QAAQ,CAAC,IAAIA,QAAQ,CAACxC,QAAQ,CAACW,MAAM,EAAE;EAChEH,QAAAA,IAAI,CAACI,YAAY,CAAC4B,QAAQ,CAACxC,QAAQ,CAAC,CAAA;EACxC,OAAA;EAEA,MAAA,OAAOQ,IAAI,CAAA;EACf,KAAA;EAAC,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,SAAA;MAAA,KAED,EAAA,SAAA,OAAA,CAAegC,QAAkB,EAAQ;EACrC,MAAA,IAAMhC,IAAI,GAAG,IAAI,CAACC,UAAU,CAAC+B,QAAQ,CAAC,CAAA;EACtC,MAAA,IAAI,CAACZ,kBAAkB,CAACpB,IAAI,EAAE,CAAC,CAAC,CAAA;QAEhC,IAAIlB,wBAAwB,CAACkD,QAAQ,CAAC,IAAIA,QAAQ,CAACxC,QAAQ,CAACW,MAAM,EAAE;EAChEH,QAAAA,IAAI,CAACI,YAAY,CAAC4B,QAAQ,CAACxC,QAAQ,CAAC,CAAA;EACxC,OAAA;EAEA,MAAA,OAAOQ,IAAI,CAAA;EACf,KAAA;EAAC,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,YAAA;MAAA,KAED,EAAA,SAAA,UAAA,CAAkBA,IAAU,EAAW;EACnC,MAAA,IAAIP,MAAM,GAAGO,IAAI,CAACP,MAAM,CAAA;EAExB,MAAA,OAAOA,MAAM,EAAE;UACX,IAAIA,MAAM,KAAK,IAAI,EAAE;EACjB,UAAA,OAAO,IAAI,CAAA;EACf,SAAA;UAEAA,MAAM,GAAGA,MAAM,CAACA,MAAM,CAAA;EAC1B,OAAA;EAEA,MAAA,OAAO,KAAK,CAAA;EAChB,KAAA;EAAC,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,UAAA;EAAA,IAAA,KAAA,EAED,SAA0B,QAAA,GAAA;QACtB,IAAIqB,KAAK,GAAG,CAAC,CAAA;EACb,MAAA,IAAId,IAAU,GAAG,IAAI,CAAC;;QAEtB,OAAOA,IAAI,CAACP,MAAM,EAAE;EAChBqB,QAAAA,KAAK,IAAI,CAAC,CAAA;UACVd,IAAI,GAAGA,IAAI,CAACP,MAAM,CAAA;EACtB,OAAA;EAEA,MAAA,OAAOqB,KAAK,CAAA;EAChB,KAAA;EAAC,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,aAAA;MAAA,KAED,EAAA,SAAA,WAAA,CAAmBuB,MAAc,EAAe;QAC5C,OAAO,IAAI,CAAC3C,SAAS,CAAC4C,GAAG,CAACD,MAAM,CAAC,IAAI,IAAI,CAAA;EAC7C,KAAA;EAAC,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,gBAAA;MAAA,KAED,EAAA,SAAA,cAAA,CAAsBrC,IAAU,EAAQ;EACpC,MAAA,IAAIA,IAAI,CAACuC,EAAE,IAAI,IAAI,EAAE;UACjB,IAAI,CAAC7C,SAAS,CAAC8C,GAAG,CAACxC,IAAI,CAACuC,EAAE,EAAEvC,IAAI,CAAC,CAAA;EACrC,OAAA;EACJ,KAAA;EAAC,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,qBAAA;MAAA,KAED,EAAA,SAAA,mBAAA,CAA2BA,IAAU,EAAQ;EACzC,MAAA,IAAIA,IAAI,CAACuC,EAAE,IAAI,IAAI,EAAE;EACjB,QAAA,IAAI,CAAC7C,SAAS,CAAA,QAAA,CAAO,CAACM,IAAI,CAACuC,EAAE,CAAC,CAAA;EAClC,OAAA;EACJ,KAAA;EAAC,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,gBAAA;EAAA,IAAA,KAAA,EAED,SAA8B,cAAA,GAAA;EAAA,MAAA,IAAA,KAAA,GAAA,IAAA,CAAA;EAC1B,MAAA,IAAI,CAACR,OAAO,CAAC,UAAChB,KAAW,EAAK;EAAA,QAAA,IAAA,UAAA,CAAA;EAC1B,QAAA,CAAA,UAAA,GAAA,KAAI,CAACnB,IAAI,MAAA,IAAA,IAAA,UAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAT,WAAW6C,mBAAmB,CAAC1B,KAAK,CAAC,CAAA;EACrC,QAAA,OAAO,IAAI,CAAA;EACf,OAAC,CAAC,CAAA;QAEF,IAAI,CAACvB,QAAQ,GAAG,EAAE,CAAA;EACtB,KAAA;EAAC,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,oBAAA;EAAA,IAAA,KAAA,EAED,SAAyC,kBAAA,GAAA;EACrC,MAAA,IAAI,CAAC,IAAI,CAACC,MAAM,EAAE;EACd,QAAA,OAAO,IAAI,CAAA;EACf,OAAC,MAAM;UACH,IAAMiD,aAAa,GAAG,IAAI,CAACjD,MAAM,CAAC4B,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;UACzD,IAAIqB,aAAa,IAAI,CAAC,EAAE;EACpB,UAAA,OAAO,IAAI,CAACjD,MAAM,CAACD,QAAQ,CAACkD,aAAa,CAAC,CAAA;EAC9C,SAAC,MAAM;EACH,UAAA,OAAO,IAAI,CAAA;EACf,SAAA;EACJ,OAAA;EACJ,KAAA;EAAC,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,gBAAA;EAAA,IAAA,KAAA,EAED,SAAqC,cAAA,GAAA;EACjC,MAAA,IAAI,CAAC,IAAI,CAACjD,MAAM,EAAE;EACd,QAAA,OAAO,IAAI,CAAA;EACf,OAAC,MAAM;UACH,IAAMkD,SAAS,GAAG,IAAI,CAAClD,MAAM,CAAC4B,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;UACrD,IAAIsB,SAAS,GAAG,IAAI,CAAClD,MAAM,CAACD,QAAQ,CAACW,MAAM,EAAE;EACzC,UAAA,OAAO,IAAI,CAACV,MAAM,CAACD,QAAQ,CAACmD,SAAS,CAAC,CAAA;EAC1C,SAAC,MAAM;EACH,UAAA,OAAO,IAAI,CAAA;EACf,SAAA;EACJ,OAAA;EACJ,KAAA;EAAC,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,oBAAA;EAAA,IAAA,KAAA,EAED,SAA0B9C,kBAAAA,CAAAA,GAAW,EAAEC,KAAc,EAAU;EAC3D,MAAA,OAAO,IAAI,CAAC8C,MAAM,CAAC,UAAC5C,IAAU,EAAA;EAAA,QAAA,OAAKA,IAAI,CAACH,GAAG,CAAC,KAAKC,KAAK,CAAA;SAAC,CAAA,CAAA;EAC3D,KAAA;EAAC,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,QAAA;MAAA,KAED,EAAA,SAAA,MAAA,CAAc+C,CAA0B,EAAU;QAC9C,IAAM7B,MAAc,GAAG,EAAE,CAAA;EAEzB,MAAA,IAAI,CAACe,OAAO,CAAC,UAAC/B,IAAU,EAAK;EACzB,QAAA,IAAI6C,CAAC,CAAC7C,IAAI,CAAC,EAAE;EACTgB,UAAAA,MAAM,CAACX,IAAI,CAACL,IAAI,CAAC,CAAA;EACrB,SAAA;EAEA,QAAA,OAAO,IAAI,CAAA;EACf,OAAC,CAAC,CAAA;EAEF,MAAA,OAAOgB,MAAM,CAAA;EACjB,KAAA;EAAC,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,aAAA;EAAA,IAAA,KAAA,EAED,SAAwD,WAAA,GAAA;QAAA,IAArC8B,eAAe,uEAAG,IAAI,CAAA;EACrC,MAAA,IAAIA,eAAe,IAAI,IAAI,CAACnC,WAAW,EAAE,EAAE;EACvC,QAAA,OAAO,IAAI,CAACnB,QAAQ,CAAC,CAAC,CAAC,CAAA;EAC3B,OAAC,MAAM,IAAI,CAAC,IAAI,CAACC,MAAM,EAAE;EACrB,QAAA,OAAO,IAAI,CAAA;EACf,OAAC,MAAM;EACH,QAAA,IAAMsD,WAAW,GAAG,IAAI,CAACC,cAAc,EAAE,CAAA;EAEzC,QAAA,IAAID,WAAW,EAAE;EACb,UAAA,OAAOA,WAAW,CAAA;EACtB,SAAC,MAAM;EACH,UAAA,OAAO,IAAI,CAACtD,MAAM,CAACwD,WAAW,CAAC,KAAK,CAAC,CAAA;EACzC,SAAA;EACJ,OAAA;EACJ,KAAA;EAAC,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,oBAAA;EAAA,IAAA,KAAA,EAED,SAAyC,kBAAA,GAAA;QACrC,IAAI,IAAI,CAACtC,WAAW,EAAE,IAAI,IAAI,CAACuC,OAAO,EAAE;EACpC;EACA,QAAA,OAAO,IAAI,CAAC1D,QAAQ,CAAC,CAAC,CAAC,CAAA;EAC3B,OAAC,MAAM;EACH,QAAA,IAAI,CAAC,IAAI,CAACC,MAAM,EAAE;EACd,UAAA,OAAO,IAAI,CAAA;EACf,SAAC,MAAM;EACH,UAAA,IAAMsD,WAAW,GAAG,IAAI,CAACC,cAAc,EAAE,CAAA;EACzC,UAAA,IAAID,WAAW,EAAE;EACb;EACA,YAAA,OAAOA,WAAW,CAAA;EACtB,WAAC,MAAM;EACH;EACA,YAAA,OAAO,IAAI,CAACtD,MAAM,CAACwD,WAAW,CAAC,KAAK,CAAC,CAAA;EACzC,WAAA;EACJ,SAAA;EACJ,OAAA;EACJ,KAAA;EAAC,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,iBAAA;EAAA,IAAA,KAAA,EAED,SAAsC,eAAA,GAAA;EAClC,MAAA,IAAI,CAAC,IAAI,CAACxD,MAAM,EAAE;EACd,QAAA,OAAO,IAAI,CAAA;EACf,OAAC,MAAM;EACH,QAAA,IAAM0D,eAAe,GAAG,IAAI,CAACC,kBAAkB,EAAE,CAAA;UAEjD,IAAI,CAACD,eAAe,EAAE;YAClB,OAAO,IAAI,CAACE,SAAS,EAAE,CAAA;EAC3B,SAAC,MAAM,IAAIF,eAAe,CAACxC,WAAW,EAAE,EAAE;YACtC,OAAOwC,eAAe,CAACG,YAAY,EAAE,CAAA;EACzC,SAAC,MAAM;EACH,UAAA,OAAOH,eAAe,CAAA;EAC1B,SAAA;EACJ,OAAA;EACJ,KAAA;EAAC,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,wBAAA;EAAA,IAAA,KAAA,EAED,SAA6C,sBAAA,GAAA;EACzC,MAAA,IAAI,CAAC,IAAI,CAAC1D,MAAM,EAAE;EACd,QAAA,OAAO,IAAI,CAAA;EACf,OAAC,MAAM;EACH,QAAA,IAAM0D,eAAe,GAAG,IAAI,CAACC,kBAAkB,EAAE,CAAA;UAEjD,IAAI,CAACD,eAAe,EAAE;YAClB,OAAO,IAAI,CAACE,SAAS,EAAE,CAAA;EAC3B,SAAC,MAAM,IACH,CAACF,eAAe,CAACxC,WAAW,EAAE,IAC9B,CAACwC,eAAe,CAACD,OAAO,EAC1B;EACE;EACA,UAAA,OAAOC,eAAe,CAAA;EAC1B,SAAC,MAAM;EACH;YACA,OAAOA,eAAe,CAACG,YAAY,EAAE,CAAA;EACzC,SAAA;EACJ,OAAA;EACJ,KAAA;EAAC,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,WAAA;EAAA,IAAA,KAAA,EAED,SAAgC,SAAA,GAAA;EAC5B;EACA,MAAA,IAAI,CAAC,IAAI,CAAC7D,MAAM,EAAE;EACd,QAAA,OAAO,IAAI,CAAA;SACd,MAAM,IAAI,CAAC,IAAI,CAACA,MAAM,CAACA,MAAM,EAAE;EAC5B;EACA,QAAA,OAAO,IAAI,CAAA;EACf,OAAC,MAAM;UACH,OAAO,IAAI,CAACA,MAAM,CAAA;EACtB,OAAA;EACJ,KAAA;EAAC,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,cAAA;EAAA,IAAA,KAAA,EAED,SAAmC,YAAA,GAAA;EAC/B,MAAA,IAAI,CAAC,IAAI,CAACkB,WAAW,EAAE,EAAE;EACrB,QAAA,OAAO,IAAI,CAAA;EACf,OAAC,MAAM;EACH,QAAA,IAAM4C,SAAS,GAAG,IAAI,CAAC/D,QAAQ,CAAC,IAAI,CAACA,QAAQ,CAACW,MAAM,GAAG,CAAC,CAAC,CAAA;UACzD,IAAI,EAAEoD,SAAS,CAAC5C,WAAW,EAAE,IAAI4C,SAAS,CAACL,OAAO,CAAC,EAAE;EACjD,UAAA,OAAOK,SAAS,CAAA;EACpB,SAAC,MAAM;YACH,OAAOA,SAAS,CAACD,YAAY,EAAE,CAAA;EACnC,SAAA;EACJ,OAAA;EACJ,KAAA;;EAEA;EAAA,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,cAAA;MAAA,KACA,EAAA,SAAA,YAAA,CAAoBvE,IAAc,EAAQ;EAAA,MAAA,IAAA,MAAA,GAAA,IAAA,CAAA;EACtC,MAAA,IAAMyE,OAAO,GAAG,SAAVA,OAAO,CAAIC,QAAkB,EAAW;EAC1C,QAAA,MAAI,CAAClE,OAAO,CAACkE,QAAQ,CAAC,CAAA;UAEtB,IACI3E,wBAAwB,CAAC2E,QAAQ,CAAC,IAClCA,QAAQ,CAACjE,QAAQ,CAACW,MAAM,EAC1B;EACEuD,UAAAA,WAAW,CAACD,QAAQ,CAACjE,QAAQ,CAAC,CAAA;EAClC,SAAA;SACH,CAAA;EAED,MAAA,IAAMkE,WAAW,GAAG,SAAdA,WAAW,CAAIC,YAAwB,EAAW;EAAA,QAAA,IAAA,UAAA,GAAA,0BAAA,CAChCA,YAAY,CAAA;EAAA,UAAA,MAAA,CAAA;EAAA,QAAA,IAAA;YAAhC,KAAkC,UAAA,CAAA,CAAA,EAAA,EAAA,CAAA,CAAA,MAAA,GAAA,UAAA,CAAA,CAAA,EAAA,EAAA,IAAA,GAAA;EAAA,YAAA,IAAvB5C,KAAK,GAAA,MAAA,CAAA,KAAA,CAAA;EACZ,YAAA,IAAMf,MAAI,GAAG,MAAI,CAACC,UAAU,EAAE,CAAA;EAC9BD,YAAAA,MAAI,CAAC4D,YAAY,CAAC7C,KAAK,CAAC,CAAA;EACxB,YAAA,MAAI,CAACb,QAAQ,CAACF,MAAI,CAAC,CAAA;EACvB,WAAA;EAAC,SAAA,CAAA,OAAA,GAAA,EAAA;EAAA,UAAA,UAAA,CAAA,CAAA,CAAA,GAAA,CAAA,CAAA;EAAA,SAAA,SAAA;EAAA,UAAA,UAAA,CAAA,CAAA,EAAA,CAAA;EAAA,SAAA;SACJ,CAAA;QAEDwD,OAAO,CAACzE,IAAI,CAAC,CAAA;EACjB,KAAA;EAAC,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,WAAA;MAAA,KAED,EAAA,SAAA,SAAA,CAAkBU,MAAY,EAAQ;EAAA,MAAA,IAAA,WAAA,CAAA;QAClC,IAAI,CAACA,MAAM,GAAGA,MAAM,CAAA;EACpB,MAAA,IAAI,CAACG,IAAI,GAAGH,MAAM,CAACG,IAAI,CAAA;EACvB,MAAA,CAAA,WAAA,GAAA,IAAI,CAACA,IAAI,MAAA,IAAA,IAAA,WAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAT,YAAWiE,cAAc,CAAC,IAAI,CAAC,CAAA;EACnC,KAAA;EAAC,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,eAAA;MAAA,KAED,EAAA,SAAA,aAAA,CAAsB7D,IAAU,EAAQ;EAAA,MAAA,IAAA,WAAA,CAAA;EACpC,MAAA,IAAI,CAACR,QAAQ,CAACgB,MAAM,CAAC,IAAI,CAACa,aAAa,CAACrB,IAAI,CAAC,EAAE,CAAC,CAAC,CAAA;EACjD,MAAA,CAAA,WAAA,GAAA,IAAI,CAACJ,IAAI,MAAA,IAAA,IAAA,WAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAT,YAAW6C,mBAAmB,CAACzC,IAAI,CAAC,CAAA;EACxC,KAAA;EAAC,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,cAAA;EAAA,IAAA,KAAA,EAED,SAAoC,YAAA,GAAA;EAAA,MAAA,IAAA,WAAA,CAAA;EAChC,MAAA,OAAO,IAAI,CAACZ,SAAS,KAAI,IAAI,KAAJ,IAAA,IAAA,IAAI,KAAJ,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,CAAA,WAAA,GAAA,IAAI,CAAEQ,IAAI,MAAA,IAAA,IAAA,WAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAV,WAAYR,CAAAA,SAAS,KAAIH,IAAI,CAAA;EAC1D,KAAA;EAAC,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,YAAA;MAAA,KAED,EAAA,SAAA,UAAA,CAAmBwE,QAAmB,EAAQ;EAC1C,MAAA,IAAMrE,SAAS,GAAG,IAAI,CAAC0E,YAAY,EAAE,CAAA;EACrC,MAAA,OAAO,IAAI1E,SAAS,CAACqE,QAAQ,CAAC,CAAA;EAClC,KAAA;EAAC,GAAA,CAAA,CAAA,CAAA;EAAA,EAAA,OAAA,IAAA,CAAA;EAAA,CAAA,EAAA;;EC9qBL,IAAaM,kBAAkB,gBAAA,YAAA;EAY3B,EAAA,SAAA,kBAAA,CAAYC,UAAwB,EAAE;EAAA,IAAA,eAAA,CAAA,IAAA,EAAA,kBAAA,CAAA,CAAA;EAAA,IAAA,eAAA,CAAA,IAAA,EAAA,UAAA,EAAA,KAAA,CAAA,CAAA,CAAA;EAAA,IAAA,eAAA,CAAA,IAAA,EAAA,YAAA,EAAA,KAAA,CAAA,CAAA,CAAA;EAAA,IAAA,eAAA,CAAA,IAAA,EAAA,aAAA,EAAA,KAAA,CAAA,CAAA,CAAA;EAAA,IAAA,eAAA,CAAA,IAAA,EAAA,aAAA,EAAA,KAAA,CAAA,CAAA,CAAA;EAAA,IAAA,eAAA,CAAA,IAAA,EAAA,cAAA,EAAA,KAAA,CAAA,CAAA,CAAA;EAAA,IAAA,eAAA,CAAA,IAAA,EAAA,YAAA,EAAA,KAAA,CAAA,CAAA,CAAA;EAAA,IAAA,eAAA,CAAA,IAAA,EAAA,aAAA,EAAA,KAAA,CAAA,CAAA,CAAA;EAAA,IAAA,eAAA,CAAA,IAAA,EAAA,eAAA,EAAA,KAAA,CAAA,CAAA,CAAA;EAAA,IAAA,eAAA,CAAA,IAAA,EAAA,iBAAA,EAAA,KAAA,CAAA,CAAA,CAAA;MAClC,IAAI,CAACA,UAAU,GAAGA,UAAU,CAAA;MAE5B,IAAI,CAACC,WAAW,GAAG,IAAI,CAAA;MACvB,IAAI,CAACC,QAAQ,GAAG,EAAE,CAAA;MAClB,IAAI,CAACC,UAAU,GAAG,KAAK,CAAA;MACvB,IAAI,CAACC,WAAW,GAAG,IAAI,CAAA;MACvB,IAAI,CAACC,YAAY,GAAG,IAAI,CAAA;EAC5B,GAAA;EAAC,EAAA,YAAA,CAAA,kBAAA,EAAA,CAAA;EAAA,IAAA,GAAA,EAAA,cAAA;MAAA,KAED,EAAA,SAAA,YAAA,CAAoBA,YAA0B,EAAkB;EAC5D,MAAA,IAAMC,QAAQ,GAAGC,MAAM,CAACF,YAAY,CAACG,MAAM,CAAC,CAAA;EAE5C,MAAA,IAAI,CAAC,IAAI,CAACC,kBAAkB,CAACH,QAAQ,CAAC,EAAE;EACpC,QAAA,OAAO,IAAI,CAAA;EACf,OAAA;EAEA,MAAA,IACI,IAAI,CAACN,UAAU,CAACU,OAAO,CAACC,cAAc,IACtC,CAAC,IAAI,CAACX,UAAU,CAACU,OAAO,CAACC,cAAc,CAACL,QAAQ,CAAC,EACnD;EACE,QAAA,OAAO,IAAI,CAAA;EACf,OAAA;QAEA,IAAIM,WAAW,GAAG,IAAI,CAACZ,UAAU,CAACa,eAAe,CAACP,QAAQ,CAAC,CAAA;QAE3D,IAAIM,WAAW,IAAI,IAAI,CAACZ,UAAU,CAACU,OAAO,CAACI,SAAS,EAAE;EAClD,QAAA,IAAI,CAAC,IAAI,CAACd,UAAU,CAACU,OAAO,CAACI,SAAS,CAACF,WAAW,CAAC5E,IAAI,CAAC,EAAE;EACtD4E,UAAAA,WAAW,GAAG,IAAI,CAAA;EACtB,SAAA;EACJ,OAAA;QAEA,IAAI,CAACR,WAAW,GAAGQ,WAAW,CAAA;EAC9B,MAAA,OAAO,IAAI,CAACR,WAAW,IAAI,IAAI,CAAA;EACnC,KAAA;EAAC,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,YAAA;MAAA,KAED,EAAA,SAAA,UAAA,CAAkBC,YAA0B,EAAW;EAAA,MAAA,IAAA,qBAAA,CAAA;EACnD,MAAA,IACI,CAAC,IAAI,CAACD,WAAW,IACjBC,YAAY,CAACU,KAAK,KAAKC,SAAS,IAChCX,YAAY,CAACY,KAAK,KAAKD,SAAS,EAClC;EACE,QAAA,OAAO,KAAK,CAAA;EAChB,OAAA;QAEA,IAAI,CAACE,OAAO,EAAE,CAAA;QAEd,IAAMC,MAAM,GAAGZ,MAAM,CAACF,YAAY,CAACG,MAAM,CAAC,CAACW,MAAM,EAAE,CAAA;QACnD,IAAMC,IAAI,GAAGD,MAAM,GAAGA,MAAM,CAACC,IAAI,GAAG,CAAC,CAAA;QACrC,IAAMC,GAAG,GAAGF,MAAM,GAAGA,MAAM,CAACE,GAAG,GAAG,CAAC,CAAA;EAEnC,MAAA,IAAMrF,IAAI,GAAG,IAAI,CAACoE,WAAW,CAACpE,IAAI,CAAA;EAElC,MAAA,IAAI,CAACsF,WAAW,GAAG,IAAIC,WAAW,CAC9BvF,IAAI,CAACxB,IAAI,EACT6F,YAAY,CAACU,KAAK,GAAGK,IAAI,EACzBf,YAAY,CAACY,KAAK,GAAGI,GAAG,EACxB,IAAI,CAACrB,UAAU,CAACwB,OAAO,EAAA,CAAA,qBAAA,GACvB,IAAI,CAACxB,UAAU,CAACU,OAAO,CAACe,UAAU,MAAA,IAAA,IAAA,qBAAA,KAAA,KAAA,CAAA,GAAA,qBAAA,GAAI,IAAI,CAC7C,CAAA;QAED,IAAI,CAACtB,UAAU,GAAG,IAAI,CAAA;QACtB,IAAI,CAACE,YAAY,GAAGA,YAAY,CAAA;QAChC,IAAI,CAACD,WAAW,CAACE,QAAQ,CAACoB,QAAQ,CAAC,eAAe,CAAC,CAAA;EACnD,MAAA,OAAO,IAAI,CAAA;EACf,KAAA;EAAC,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,WAAA;MAAA,KAED,EAAA,SAAA,SAAA,CAAiBrB,YAA0B,EAAW;QAClD,IACI,CAAC,IAAI,CAACD,WAAW,IACjB,CAAC,IAAI,CAACkB,WAAW,IACjBjB,YAAY,CAACU,KAAK,KAAKC,SAAS,IAChCX,YAAY,CAACY,KAAK,KAAKD,SAAS,EAClC;EACE,QAAA,OAAO,KAAK,CAAA;EAChB,OAAA;EAEA,MAAA,IAAI,CAACM,WAAW,CAACK,IAAI,CAACtB,YAAY,CAACU,KAAK,EAAEV,YAAY,CAACY,KAAK,CAAC,CAAA;QAC7D,IAAI,CAACZ,YAAY,GAAGA,YAAY,CAAA;EAEhC,MAAA,IAAMuB,IAAI,GAAG,IAAI,CAACC,eAAe,CAC7BxB,YAAY,CAACU,KAAK,EAClBV,YAAY,CAACY,KAAK,CACrB,CAAA;QAED,IAAIW,IAAI,IAAI,IAAI,CAACE,aAAa,CAACF,IAAI,CAAC,EAAE;EAClC,QAAA,IAAI,CAACA,IAAI,CAAC5F,IAAI,CAAC+F,QAAQ,EAAE,EAAE;YACvB,IAAI,CAACC,mBAAmB,EAAE,CAAA;EAC9B,SAAA;EAEA,QAAA,IAAI,IAAI,CAAC/B,WAAW,KAAK2B,IAAI,EAAE;YAC3B,IAAI,CAAC3B,WAAW,GAAG2B,IAAI,CAAA;;EAEvB;EACA,UAAA,IAAI,IAAI,CAACK,mBAAmB,CAACL,IAAI,CAAC,EAAE;EAChC,YAAA,IAAI,CAACM,oBAAoB,CAACN,IAAI,CAAC5F,IAAI,CAAC,CAAA;EACxC,WAAC,MAAM;cACH,IAAI,CAACgG,mBAAmB,EAAE,CAAA;EAC9B,WAAA;YAEA,IAAI,CAACG,cAAc,EAAE,CAAA;EACzB,SAAA;EACJ,OAAC,MAAM;UACH,IAAI,CAACC,cAAc,EAAE,CAAA;UACrB,IAAI,CAACJ,mBAAmB,EAAE,CAAA;UAC1B,IAAI,CAAC/B,WAAW,GAAG2B,IAAI,CAAA;EAC3B,OAAA;QAEA,IAAI,CAACA,IAAI,EAAE;EACP,QAAA,IAAI,IAAI,CAAC5B,UAAU,CAACU,OAAO,CAAC2B,UAAU,EAAE;EACpC,UAAA,IAAI,CAACrC,UAAU,CAACU,OAAO,CAAC2B,UAAU,CAC9B,IAAI,CAACjC,WAAW,CAACpE,IAAI,EACrBqE,YAAY,CAACiC,aAAa,CAC7B,CAAA;EACL,SAAA;EACJ,OAAA;EAEA,MAAA,OAAO,IAAI,CAAA;EACf,KAAA;EAAC,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,WAAA;MAAA,KAED,EAAA,SAAA,SAAA,CAAiBjC,YAA0B,EAAW;EAClD,MAAA,IAAI,CAACkC,QAAQ,CAAClC,YAAY,CAAC,CAAA;QAC3B,IAAI,CAACmC,KAAK,EAAE,CAAA;QACZ,IAAI,CAACC,WAAW,EAAE,CAAA;QAClB,IAAI,CAACL,cAAc,EAAE,CAAA;QACrB,IAAI,CAACM,cAAc,EAAE,CAAA;EAErB,MAAA,IAAMtC,WAAW,GAAG,IAAI,CAACA,WAAW,CAAA;QAEpC,IAAI,IAAI,CAACA,WAAW,EAAE;UAClB,IAAI,CAACA,WAAW,CAACE,QAAQ,CAACqC,WAAW,CAAC,eAAe,CAAC,CAAA;UACtD,IAAI,CAACvC,WAAW,GAAG,IAAI,CAAA;EAC3B,OAAA;QAEA,IAAI,CAACD,UAAU,GAAG,KAAK,CAAA;QACvB,IAAI,CAACE,YAAY,GAAG,IAAI,CAAA;EAExB,MAAA,IAAI,CAAC,IAAI,CAACJ,WAAW,IAAIG,WAAW,EAAE;EAClC,QAAA,IAAI,IAAI,CAACJ,UAAU,CAACU,OAAO,CAACkC,UAAU,EAAE;EACpC,UAAA,IAAI,CAAC5C,UAAU,CAACU,OAAO,CAACkC,UAAU,CAC9BxC,WAAW,CAACpE,IAAI,EAChBqE,YAAY,CAACiC,aAAa,CAC7B,CAAA;EACL,SAAA;EACJ,OAAA;EAEA,MAAA,OAAO,KAAK,CAAA;EAChB,KAAA;EAAC,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,SAAA;EAAA,IAAA,KAAA,EAED,SAAuB,OAAA,GAAA;QACnB,IAAI,CAACI,cAAc,EAAE,CAAA;QAErB,IAAI,IAAI,CAACtC,WAAW,EAAE;UAClB,IAAI,CAACyC,gBAAgB,EAAE,CAAA;EAEvB,QAAA,IAAI,CAACzC,WAAW,GAAG,IAAI,CAACJ,UAAU,CAAC8C,sBAAsB,CACrD,IAAI,CAAC1C,WAAW,CAACpE,IAAI,CACxB,CAAA;UAED,IAAI,IAAI,CAACmE,UAAU,EAAE;YACjB,IAAI,CAACC,WAAW,CAACE,QAAQ,CAACoB,QAAQ,CAAC,eAAe,CAAC,CAAA;EACvD,SAAA;EACJ,OAAA;EACJ,KAAA;EAAC,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,kBAAA;EAAA,IAAA,KAAA,EAED,SAAiC,gBAAA,GAAA;EAC7B,MAAA,IAAI,CAAC,IAAI,CAACtB,WAAW,EAAE;UACnB,IAAI,CAACF,QAAQ,GAAG,EAAE,CAAA;EACtB,OAAC,MAAM;UACH,IAAM6C,iBAAiB,GAAG,IAAIC,iBAAiB,CAC3C,IAAI,CAAChD,UAAU,CAACpE,IAAI,EACpB,IAAI,CAACwE,WAAW,CAACpE,IAAI,EACrB,IAAI,CAACiH,iBAAiB,EAAE,CAACC,MAAM,CAClC,CAAA;EACD,QAAA,IAAI,CAAChD,QAAQ,GAAG6C,iBAAiB,CAACI,QAAQ,EAAE,CAAA;EAChD,OAAA;EACJ,KAAA;EAAC,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,oBAAA;MAAA,KAED,EAAA,SAAA,kBAAA,CAA2B7C,QAA6B,EAAW;EAC/D,MAAA,OAAO,CAACA,QAAQ,CAAC8C,EAAE,CAAC,uBAAuB,CAAC,CAAA;EAChD,KAAA;EAAC,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,eAAA;MAAA,KAED,EAAA,SAAA,aAAA,CAAsBxB,IAAa,EAAW;QAC1C,IAAI,CAAC,IAAI,CAAC5B,UAAU,CAACU,OAAO,CAAC2C,WAAW,EAAE;EACtC,QAAA,OAAO,IAAI,CAAA;EACf,OAAA;EAEA,MAAA,IAAI,CAAC,IAAI,CAACjD,WAAW,EAAE;EACnB,QAAA,OAAO,KAAK,CAAA;EAChB,OAAA;EAEA,MAAA,IAAMkD,YAAY,GAAGhJ,eAAe,CAACsH,IAAI,CAACrH,QAAQ,CAAC,CAAA;EAEnD,MAAA,OAAO,IAAI,CAACyF,UAAU,CAACU,OAAO,CAAC2C,WAAW,CACtC,IAAI,CAACjD,WAAW,CAACpE,IAAI,EACrB4F,IAAI,CAAC5F,IAAI,EACTsH,YAAY,CACf,CAAA;EACL,KAAA;EAAC,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,gBAAA;EAAA,IAAA,KAAA,EAED,SAA+B,cAAA,GAAA;QAC3B,IAAI,CAACpD,QAAQ,GAAG,EAAE,CAAA;EACtB,KAAA;EAAC,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,OAAA;EAAA,IAAA,KAAA,EAED,SAAsB,KAAA,GAAA;QAClB,IAAI,IAAI,CAACoB,WAAW,EAAE;EAClB,QAAA,IAAI,CAACA,WAAW,CAACiC,MAAM,EAAE,CAAA;UACzB,IAAI,CAACjC,WAAW,GAAG,IAAI,CAAA;EAC3B,OAAA;EACJ,KAAA;EAAC,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,gBAAA;EAAA,IAAA,KAAA,EAED,SAA+B,cAAA,GAAA;QAC3B,IAAI,IAAI,CAACkC,aAAa,EAAE;EACpB,QAAA,IAAI,CAACA,aAAa,CAACD,MAAM,EAAE,CAAA;EAC/B,OAAA;EACJ,KAAA;EAAC,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,aAAA;EAAA,IAAA,KAAA,EAED,SAA4B,WAAA,GAAA;QACxB,IAAI,CAACtD,WAAW,GAAG,IAAI,CAAA;EAC3B,KAAA;EAAC,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,iBAAA;EAAA,IAAA,KAAA,EAED,SAAwBwD,eAAAA,CAAAA,CAAS,EAAEC,CAAS,EAAkB;EAC1D,MAAA,IAAMC,UAAU,GAAG,IAAI,CAACV,iBAAiB,EAAE,CAAA;QAE3C,IACIQ,CAAC,GAAGE,UAAU,CAACvC,IAAI,IACnBsC,CAAC,GAAGC,UAAU,CAACtC,GAAG,IAClBoC,CAAC,GAAGE,UAAU,CAACC,KAAK,IACpBF,CAAC,GAAGC,UAAU,CAACT,MAAM,EACvB;EACE,QAAA,OAAO,IAAI,CAAA;EACf,OAAA;QAEA,IAAIW,GAAG,GAAG,CAAC,CAAA;EACX,MAAA,IAAIC,IAAI,GAAG,IAAI,CAAC5D,QAAQ,CAAC/D,MAAM,CAAA;QAC/B,OAAO0H,GAAG,GAAGC,IAAI,EAAE;EACf,QAAA,IAAMC,GAAG,GAAIF,GAAG,GAAGC,IAAI,IAAK,CAAC,CAAA;EAC7B,QAAA,IAAMlC,IAAI,GAAG,IAAI,CAAC1B,QAAQ,CAAC6D,GAAG,CAAC,CAAA;EAE/B,QAAA,IAAIL,CAAC,GAAG9B,IAAI,CAACP,GAAG,EAAE;EACdyC,UAAAA,IAAI,GAAGC,GAAG,CAAA;EACd,SAAC,MAAM,IAAIL,CAAC,GAAG9B,IAAI,CAACsB,MAAM,EAAE;YACxBW,GAAG,GAAGE,GAAG,GAAG,CAAC,CAAA;EACjB,SAAC,MAAM;EACH,UAAA,OAAOnC,IAAI,CAAA;EACf,SAAA;EACJ,OAAA;EAEA,MAAA,OAAO,IAAI,CAAA;EACf,KAAA;EAAC,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,qBAAA;MAAA,KAED,EAAA,SAAA,mBAAA,CAA4BA,IAAa,EAAW;EAChD,MAAA,IAAM5F,IAAI,GAAG4F,IAAI,CAAC5F,IAAI,CAAA;EAEtB,MAAA,OACIA,IAAI,CAAC+F,QAAQ,EAAE,IACf,CAAC/F,IAAI,CAACkD,OAAO,IACb0C,IAAI,CAACrH,QAAQ,KAAKX,QAAQ,CAACO,MAAM,CAAA;EAEzC,KAAA;EAAC,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,gBAAA;EAAA,IAAA,KAAA,EAED,SAA+B,cAAA,GAAA;EAC3B,MAAA,IAAI,CAAC,IAAI,CAAC8F,WAAW,EAAE;EACnB,QAAA,OAAA;EACJ,OAAA;;EAEA;QACA,IAAI,CAACmC,cAAc,EAAE,CAAA;;EAErB;EACA,MAAA,IAAMxB,WAAW,GAAG,IAAI,CAACZ,UAAU,CAAC8C,sBAAsB,CACtD,IAAI,CAAC7C,WAAW,CAACjE,IAAI,CACxB,CAAA;EACD,MAAA,IAAI,CAACwH,aAAa,GAAG5C,WAAW,CAACoD,WAAW,CAAC,IAAI,CAAC/D,WAAW,CAAC1F,QAAQ,CAAC,CAAA;EAC3E,KAAA;EAAC,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,sBAAA;MAAA,KAED,EAAA,SAAA,oBAAA,CAA6B0J,MAAY,EAAQ;EAAA,MAAA,IAAA,KAAA,GAAA,IAAA,CAAA;EAC7C,MAAA,IAAMC,UAAU,GAAG,SAAbA,UAAU,GAAe;EAC3B,QAAA,KAAI,CAAClE,UAAU,CAACmE,SAAS,CACrBF,MAAM,EACN,KAAI,CAACjE,UAAU,CAACU,OAAO,CAAC0D,KAAK,EAC7B,YAAM;YACF,KAAI,CAAClD,OAAO,EAAE,CAAA;YACd,KAAI,CAACiB,cAAc,EAAE,CAAA;EACzB,SAAC,CACJ,CAAA;SACJ,CAAA;QAED,IAAI,CAACH,mBAAmB,EAAE,CAAA;QAE1B,IAAMqC,eAAe,GAAG,IAAI,CAACrE,UAAU,CAACU,OAAO,CAAC2D,eAAe,CAAA;QAE/D,IAAIA,eAAe,KAAK,KAAK,EAAE;UAC3B,IAAI,CAACC,eAAe,GAAGC,MAAM,CAACC,UAAU,CACpCN,UAAU,EACVG,eAAe,CAClB,CAAA;EACL,OAAA;EACJ,KAAA;EAAC,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,qBAAA;EAAA,IAAA,KAAA,EAED,SAAoC,mBAAA,GAAA;QAChC,IAAI,IAAI,CAACC,eAAe,EAAE;EACtBG,QAAAA,YAAY,CAAC,IAAI,CAACH,eAAe,CAAC,CAAA;UAClC,IAAI,CAACA,eAAe,GAAG,IAAI,CAAA;EAC/B,OAAA;EACJ,KAAA;EAAC,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,UAAA;MAAA,KAED,EAAA,SAAA,QAAA,CAAiBjE,YAA0B,EAAQ;EAAA,MAAA,IAAA,MAAA,GAAA,IAAA,CAAA;QAC/C,IACI,IAAI,CAACD,WAAW,IAChB,IAAI,CAACH,WAAW,IAChB,IAAI,CAACA,WAAW,CAAC1F,QAAQ,KAAKX,QAAQ,CAACS,IAAI,IAC3C,IAAI,CAACyH,aAAa,CAAC,IAAI,CAAC7B,WAAW,CAAC,EACtC;EACE,QAAA,IAAMhD,SAAS,GAAG,IAAI,CAACmD,WAAW,CAACpE,IAAI,CAAA;EACvC,QAAA,IAAMkB,UAAU,GAAG,IAAI,CAAC+C,WAAW,CAACjE,IAAI,CAAA;EACxC,QAAA,IAAMzB,QAAQ,GAAG,IAAI,CAAC0F,WAAW,CAAC1F,QAAQ,CAAA;EAC1C,QAAA,IAAMmK,cAAc,GAAGzH,SAAS,CAACxB,MAAM,CAAA;EAEvC,QAAA,IAAIlB,QAAQ,KAAKX,QAAQ,CAACO,MAAM,EAAE;EAC9B,UAAA,IAAI,CAAC8F,WAAW,CAACjE,IAAI,CAACkD,OAAO,GAAG,IAAI,CAAA;EACxC,SAAA;EAEA,QAAA,IAAMyF,MAAM,GAAG,SAATA,MAAM,GAAe;EACvB,UAAA,MAAI,CAAC3E,UAAU,CAACpE,IAAI,CAACgJ,QAAQ,CAAC3H,SAAS,EAAEC,UAAU,EAAE3C,QAAQ,CAAC,CAAA;EAC9D,UAAA,MAAI,CAACyF,UAAU,CAACwB,OAAO,CAACqD,KAAK,EAAE,CAAA;EAC/B,UAAA,MAAI,CAAC7E,UAAU,CAAC8E,gBAAgB,CAAC,IAAI,CAAC,CAAA;WACzC,CAAA;UAED,IAAMC,KAAK,GAAG,IAAI,CAAC/E,UAAU,CAACgF,aAAa,CAAC,WAAW,EAAE;EACrDC,UAAAA,SAAS,EAAE;EACPC,YAAAA,UAAU,EAAEjI,SAAS;EACrBkI,YAAAA,WAAW,EAAEjI,UAAU;EACvB3C,YAAAA,QAAQ,EAAED,eAAe,CAACC,QAAQ,CAAC;EACnC6K,YAAAA,eAAe,EAAEV,cAAc;EAC/BW,YAAAA,OAAO,EAAEV,MAAM;cACfW,cAAc,EAAEjF,YAAY,CAACiC,aAAAA;EACjC,WAAA;EACJ,SAAC,CAAC,CAAA;EAEF,QAAA,IAAI,CAACyC,KAAK,CAACQ,kBAAkB,EAAE,EAAE;EAC7BZ,UAAAA,MAAM,EAAE,CAAA;EACZ,SAAA;EACJ,OAAA;EACJ,KAAA;EAAC,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,mBAAA;EAAA,IAAA,KAAA,EAED,SAAwC,iBAAA,GAAA;EACpC;EACA;QACA,IAAMxD,MAAM,GAAG,IAAI,CAACnB,UAAU,CAACwB,OAAO,CAACL,MAAM,EAAE,CAAA;QAE/C,IAAI,CAACA,MAAM,EAAE;UACT,OAAO;EAAEC,UAAAA,IAAI,EAAE,CAAC;EAAEC,UAAAA,GAAG,EAAE,CAAC;EAAEuC,UAAAA,KAAK,EAAE,CAAC;EAAEV,UAAAA,MAAM,EAAE,CAAA;WAAG,CAAA;EACnD,OAAC,MAAM;EACH,QAAA,IAAMsC,EAAE,GAAG,IAAI,CAACxF,UAAU,CAACwB,OAAO,CAAA;EAClC,QAAA,IAAMiE,KAAK,GAAGD,EAAE,CAACC,KAAK,EAAE,IAAI,CAAC,CAAA;EAC7B,QAAA,IAAMC,MAAM,GAAGF,EAAE,CAACE,MAAM,EAAE,IAAI,CAAC,CAAA;UAC/B,IAAMtE,IAAI,GAAGD,MAAM,CAACC,IAAI,GAAG,IAAI,CAACpB,UAAU,CAAC2F,cAAc,EAAE,CAAA;UAE3D,OAAO;EACHvE,UAAAA,IAAI,EAAJA,IAAI;YACJC,GAAG,EAAEF,MAAM,CAACE,GAAG;YACfuC,KAAK,EAAExC,IAAI,GAAGqE,KAAK;EACnBvC,UAAAA,MAAM,EAAE/B,MAAM,CAACE,GAAG,GAAGqE,MAAM,GAAG,EAAA;WACjC,CAAA;EACL,OAAA;EACJ,KAAA;EAAC,GAAA,CAAA,CAAA,CAAA;EAAA,EAAA,OAAA,kBAAA,CAAA;EAAA,CAAA,EAAA,CAAA;EACJ,IAEcE,mBAAmB,gBAAA,YAAA;EAG9B,EAAA,SAAA,mBAAA,CAAYhK,IAAU,EAAE;EAAA,IAAA,eAAA,CAAA,IAAA,EAAA,mBAAA,CAAA,CAAA;EAAA,IAAA,eAAA,CAAA,IAAA,EAAA,MAAA,EAAA,KAAA,CAAA,CAAA,CAAA;MACpB,IAAI,CAACA,IAAI,GAAGA,IAAI,CAAA;EACpB,GAAA;EAAC,EAAA,YAAA,CAAA,mBAAA,EAAA,CAAA;EAAA,IAAA,GAAA,EAAA,SAAA;EAAA,IAAA,KAAA,EAED,SAA0B,OAAA,GAAA;EAAA,MAAA,IAAA,MAAA,GAAA,IAAA,CAAA;QACtB,IAAIiK,WAAW,GAAG,IAAI,CAAA;QAEtB,IAAMC,YAAY,GAAG,SAAfA,YAAY,CAAI9J,IAAU,EAAE+J,QAAqB,EAAW;EAC9D,QAAA,IAAIC,iBAAiB,GACjB,CAAChK,IAAI,CAACkD,OAAO,IAAI,CAAClD,IAAI,CAACwF,OAAO,KAAKxF,IAAI,CAACW,WAAW,EAAE,CAAA;UAEzD,IAAI2D,QAAoC,GAAG,IAAI,CAAA;UAE/C,IAAItE,IAAI,CAACwF,OAAO,EAAE;EACdlB,UAAAA,QAAQ,GAAGC,MAAM,CAACvE,IAAI,CAACwF,OAAO,CAAC,CAAA;EAE/B,UAAA,IAAI,CAAClB,QAAQ,CAAC8C,EAAE,CAAC,UAAU,CAAC,EAAE;EAC1B,YAAA,OAAA;EACJ,WAAA;EAEA,UAAA,IAAIyC,WAAW,EAAE;EACb,YAAA,MAAI,CAACI,eAAe,CAACjK,IAAI,CAAC,CAAA;EAC1B6J,YAAAA,WAAW,GAAG,KAAK,CAAA;EACvB,WAAA;EAEA,UAAA,IAAI,CAAC7J,IAAI,CAACW,WAAW,EAAE,EAAE;cACrB,MAAI,CAACuJ,UAAU,CAAClK,IAAI,EAAE+J,QAAQ,EAAEzF,QAAQ,CAAC,CAAA;EAC7C,WAAC,MAAM,IAAItE,IAAI,CAACkD,OAAO,EAAE;cACrB,IAAI,CAAC,MAAI,CAACiH,gBAAgB,CAACnK,IAAI,EAAEsE,QAAQ,CAAC,EAAE;EACxC0F,cAAAA,iBAAiB,GAAG,KAAK,CAAA;EAC7B,aAAA;EACJ,WAAC,MAAM;cACH,MAAI,CAACI,kBAAkB,CAACpK,IAAI,EAAE+J,QAAQ,EAAEzF,QAAQ,CAAC,CAAA;EACrD,WAAA;EACJ,SAAA;EAEA,QAAA,IAAI0F,iBAAiB,EAAE;EACnB,UAAA,IAAMK,cAAc,GAAGrK,IAAI,CAACR,QAAQ,CAACW,MAAM,CAAA;YAC3CH,IAAI,CAACR,QAAQ,CAAC8K,OAAO,CAAC,UAACC,CAAC,EAAEC,CAAC,EAAK;EAC5B,YAAA,IAAIA,CAAC,KAAKH,cAAc,GAAG,CAAC,EAAE;gBAC1BP,YAAY,CAAC9J,IAAI,CAACR,QAAQ,CAACgL,CAAC,CAAC,EAAE,IAAI,CAAC,CAAA;EACxC,aAAC,MAAM;EACHV,cAAAA,YAAY,CAAC9J,IAAI,CAACR,QAAQ,CAACgL,CAAC,CAAC,EAAExK,IAAI,CAACR,QAAQ,CAACgL,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;EACxD,aAAA;EACJ,WAAC,CAAC,CAAA;EAEF,UAAA,IAAIxK,IAAI,CAACkD,OAAO,IAAIoB,QAAQ,EAAE;EAC1B,YAAA,MAAI,CAACmG,qBAAqB,CAACzK,IAAI,EAAE+J,QAAQ,CAAC,CAAA;EAC9C,WAAA;EACJ,SAAA;SACH,CAAA;EAEDD,MAAAA,YAAY,CAAC,IAAI,CAAClK,IAAI,EAAE,IAAI,CAAC,CAAA;EACjC,KAAA;EAAC,GAAA,CAAA,CAAA,CAAA;EAAA,EAAA,OAAA,mBAAA,CAAA;EAAA,CAAA,EAAA,CAAA;EA8BL,IAAaoH,iBAAiB,gBAAA,UAAA,oBAAA,EAAA;EAAA,EAAA,SAAA,CAAA,iBAAA,EAAA,oBAAA,CAAA,CAAA;EAAA,EAAA,IAAA,MAAA,GAAA,YAAA,CAAA,iBAAA,CAAA,CAAA;EAM1B,EAAA,SAAA,iBAAA,CAAYpH,IAAU,EAAE8K,WAAiB,EAAEC,UAAkB,EAAE;EAAA,IAAA,IAAA,MAAA,CAAA;EAAA,IAAA,eAAA,CAAA,IAAA,EAAA,iBAAA,CAAA,CAAA;EAC3D,IAAA,MAAA,GAAA,MAAA,CAAA,IAAA,CAAA,IAAA,EAAM/K,IAAI,CAAA,CAAA;EAAE,IAAA,eAAA,CAAA,sBAAA,CAAA,MAAA,CAAA,EAAA,aAAA,EAAA,KAAA,CAAA,CAAA,CAAA;EAAA,IAAA,eAAA,CAAA,sBAAA,CAAA,MAAA,CAAA,EAAA,YAAA,EAAA,KAAA,CAAA,CAAA,CAAA;EAAA,IAAA,eAAA,CAAA,sBAAA,CAAA,MAAA,CAAA,EAAA,WAAA,EAAA,KAAA,CAAA,CAAA,CAAA;EAAA,IAAA,eAAA,CAAA,sBAAA,CAAA,MAAA,CAAA,EAAA,SAAA,EAAA,KAAA,CAAA,CAAA,CAAA;MAEZ,MAAK8K,CAAAA,WAAW,GAAGA,WAAW,CAAA;MAC9B,MAAKC,CAAAA,UAAU,GAAGA,UAAU,CAAA;EAAC,IAAA,OAAA,MAAA,CAAA;EACjC,GAAA;EAAC,EAAA,YAAA,CAAA,iBAAA,EAAA,CAAA;EAAA,IAAA,GAAA,EAAA,UAAA;EAAA,IAAA,KAAA,EAED,SAA6B,QAAA,GAAA;QACzB,IAAI,CAACC,SAAS,GAAG,EAAE,CAAA;QACnB,IAAI,CAACC,OAAO,GAAG,CAAC,CAAA;QAEhB,IAAI,CAAC9I,OAAO,EAAE,CAAA;EAEd,MAAA,OAAO,IAAI,CAAC8E,gBAAgB,CAAC,IAAI,CAAC+D,SAAS,CAAC,CAAA;EAChD,KAAA;EAAC,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,kBAAA;MAAA,KAED,EAAA,SAAA,gBAAA,CAA2BA,SAAoB,EAAa;QACxD,IAAIE,WAAW,GAAG,CAAC,CAAC,CAAA;QACpB,IAAIC,KAAK,GAAG,EAAE,CAAA;QACd,IAAM7G,QAAmB,GAAG,EAAE,CAAA;EAAC,MAAA,IAAA,SAAA,GAAA,0BAAA,CAER0G,SAAS,CAAA;EAAA,QAAA,KAAA,CAAA;EAAA,MAAA,IAAA;UAAhC,KAAkC,SAAA,CAAA,CAAA,EAAA,EAAA,CAAA,CAAA,KAAA,GAAA,SAAA,CAAA,CAAA,EAAA,EAAA,IAAA,GAAA;EAAA,UAAA,IAAvBrM,QAAQ,GAAA,KAAA,CAAA,KAAA,CAAA;YACf,IAAIA,QAAQ,CAAC8G,GAAG,KAAKyF,WAAW,IAAIC,KAAK,CAAC5K,MAAM,EAAE;cAC9C,IAAI4K,KAAK,CAAC5K,MAAM,EAAE;EACd,cAAA,IAAI,CAAC6K,wBAAwB,CACzB9G,QAAQ,EACR6G,KAAK,EACLD,WAAW,EACXvM,QAAQ,CAAC8G,GAAG,CACf,CAAA;EACL,aAAA;cAEAyF,WAAW,GAAGvM,QAAQ,CAAC8G,GAAG,CAAA;EAC1B0F,YAAAA,KAAK,GAAG,EAAE,CAAA;EACd,WAAA;EAEAA,UAAAA,KAAK,CAAC1K,IAAI,CAAC9B,QAAQ,CAAC,CAAA;EACxB,SAAA;EAAC,OAAA,CAAA,OAAA,GAAA,EAAA;EAAA,QAAA,SAAA,CAAA,CAAA,CAAA,GAAA,CAAA,CAAA;EAAA,OAAA,SAAA;EAAA,QAAA,SAAA,CAAA,CAAA,EAAA,CAAA;EAAA,OAAA;EAED,MAAA,IAAI,CAACyM,wBAAwB,CACzB9G,QAAQ,EACR6G,KAAK,EACLD,WAAW,EACX,IAAI,CAACH,UAAU,CAClB,CAAA;EAED,MAAA,OAAOzG,QAAQ,CAAA;EACnB,KAAA;EAAC,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,kBAAA;EAAA,IAAA,KAAA,EAED,SAA2BlE,gBAAAA,CAAAA,IAAU,EAAEsE,QAAgB,EAAW;EAC9D,MAAA,IAAItE,IAAI,KAAK,IAAI,CAAC0K,WAAW,EAAE;EAC3B;EACA;EACA,QAAA,OAAO,KAAK,CAAA;EAChB,OAAA;;EAEA;QACA,IAAI1K,IAAI,CAACR,QAAQ,CAAC,CAAC,CAAC,KAAK,IAAI,CAACkL,WAAW,EAAE;EACvC,QAAA,IAAI,CAACO,WAAW,CAACjL,IAAI,EAAEpC,QAAQ,CAACO,MAAM,EAAE,IAAI,CAAC+M,MAAM,CAAC5G,QAAQ,CAAC,CAAC,CAAA;EAClE,OAAA;;EAEA;EACA,MAAA,OAAO,IAAI,CAAA;EACf,KAAA;EAAC,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,oBAAA;EAAA,IAAA,KAAA,EAED,4BACItE,IAAU,EACV+J,QAAc,EACdzF,QAAgB,EACZ;EACJ,MAAA,IAAMe,GAAG,GAAG,IAAI,CAAC6F,MAAM,CAAC5G,QAAQ,CAAC,CAAA;EAEjC,MAAA,IAAItE,IAAI,KAAK,IAAI,CAAC0K,WAAW,EAAE;EAC3B;UACA,IAAI,CAACO,WAAW,CAACjL,IAAI,EAAEpC,QAAQ,CAACS,IAAI,EAAEgH,GAAG,CAAC,CAAA;EAC9C,OAAC,MAAM;UACH,IAAI,CAAC4F,WAAW,CAACjL,IAAI,EAAEpC,QAAQ,CAACO,MAAM,EAAEkH,GAAG,CAAC,CAAA;;EAE5C;EACA,QAAA,IAAI0E,QAAQ,KAAK,IAAI,CAACW,WAAW,EAAE;YAC/B,IAAI,CAACO,WAAW,CAACjL,IAAI,EAAEpC,QAAQ,CAACK,KAAK,EAAEoH,GAAG,CAAC,CAAA;EAC/C,SAAA;EACJ,OAAA;EACJ,KAAA;EAAC,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,iBAAA;MAAA,KAED,EAAA,SAAA,eAAA,CAA0BrF,IAAU,EAAQ;EACxC,MAAA,IAAIA,IAAI,KAAK,IAAI,CAAC0K,WAAW,EAAE;UAC3B,IAAI,CAACO,WAAW,CACZjL,IAAI,EACJpC,QAAQ,CAACG,MAAM,EACf,IAAI,CAACmN,MAAM,CAAC3G,MAAM,CAACvE,IAAI,CAACwF,OAAO,CAAC,CAAC,CACpC,CAAA;EACL,OAAA;EACJ,KAAA;EAAC,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,uBAAA;EAAA,IAAA,KAAA,EAED,SAAgCxF,qBAAAA,CAAAA,IAAU,EAAE+J,QAAc,EAAQ;QAC9D,IAAI/J,IAAI,KAAK,IAAI,CAAC0K,WAAW,IAAIX,QAAQ,KAAK,IAAI,CAACW,WAAW,EAAE;EAC5D;EACA,QAAA,IAAI,CAACO,WAAW,CAACjL,IAAI,EAAEpC,QAAQ,CAACS,IAAI,EAAE,IAAI,CAACwM,OAAO,CAAC,CAAA;EACvD,OAAC,MAAM;EACH,QAAA,IAAI,CAACI,WAAW,CAACjL,IAAI,EAAEpC,QAAQ,CAACK,KAAK,EAAE,IAAI,CAAC4M,OAAO,CAAC,CAAA;EACxD,OAAA;EACJ,KAAA;EAAC,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,YAAA;EAAA,IAAA,KAAA,EAED,oBAAqB7K,IAAU,EAAE+J,QAAc,EAAEzF,QAAgB,EAAQ;EACrE,MAAA,IAAMe,GAAG,GAAG,IAAI,CAAC6F,MAAM,CAAC5G,QAAQ,CAAC,CAAA;EAEjC,MAAA,IAAItE,IAAI,KAAK,IAAI,CAAC0K,WAAW,EAAE;EAC3B;UACA,IAAI,CAACO,WAAW,CAACjL,IAAI,EAAEpC,QAAQ,CAACS,IAAI,EAAEgH,GAAG,CAAC,CAAA;EAC9C,OAAC,MAAM;UACH,IAAI,CAAC4F,WAAW,CAACjL,IAAI,EAAEpC,QAAQ,CAACO,MAAM,EAAEkH,GAAG,CAAC,CAAA;EAChD,OAAA;QAEA,IAAI0E,QAAQ,KAAK,IAAI,CAACW,WAAW,IAAI1K,IAAI,KAAK,IAAI,CAAC0K,WAAW,EAAE;EAC5D;UACA,IAAI,CAACO,WAAW,CAACjL,IAAI,EAAEpC,QAAQ,CAACS,IAAI,EAAEgH,GAAG,CAAC,CAAA;EAC9C,OAAC,MAAM;UACH,IAAI,CAAC4F,WAAW,CAACjL,IAAI,EAAEpC,QAAQ,CAACK,KAAK,EAAEoH,GAAG,CAAC,CAAA;EAC/C,OAAA;EACJ,KAAA;EAAC,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,QAAA;MAAA,KAED,EAAA,SAAA,MAAA,CAAef,QAA6B,EAAU;EAClD,MAAA,IAAMa,MAAM,GAAGb,QAAQ,CAACa,MAAM,EAAE,CAAA;EAEhC,MAAA,OAAOA,MAAM,GAAGA,MAAM,CAACE,GAAG,GAAG,CAAC,CAAA;EAClC,KAAA;EAAC,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,aAAA;EAAA,IAAA,KAAA,EAED,qBAAoBrF,IAAU,EAAEzB,QAAgB,EAAE8G,GAAW,EAAQ;EACjE,MAAA,IAAMO,IAAI,GAAG;EACTP,QAAAA,GAAG,EAAHA,GAAG;EACH6B,QAAAA,MAAM,EAAE,CAAC;EACTlH,QAAAA,IAAI,EAAJA,IAAI;EACJzB,QAAAA,QAAQ,EAARA,QAAAA;SACH,CAAA;EAED,MAAA,IAAI,CAACqM,SAAS,CAACvK,IAAI,CAACuF,IAAI,CAAC,CAAA;QACzB,IAAI,CAACiF,OAAO,GAAGxF,GAAG,CAAA;EACtB,KAAA;EAAC,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,0BAAA;MAAA,KAED,EAAA,SAAA,wBAAA,CACInB,QAAmB,EACnBiH,gBAA2B,EAC3B9F,GAAW,EACX6B,MAAc,EACV;EACJ;QACA,IAAMkE,aAAa,GAAGC,IAAI,CAACC,GAAG,CAACH,gBAAgB,CAAChL,MAAM,EAAE,CAAC,CAAC,CAAA;EAE1D,MAAA,IAAMoL,UAAU,GAAGF,IAAI,CAACG,KAAK,CAAC,CAACtE,MAAM,GAAG7B,GAAG,IAAI+F,aAAa,CAAC,CAAA;QAC7D,IAAIK,OAAO,GAAGpG,GAAG,CAAA;QAEjB,IAAImF,CAAC,GAAG,CAAC,CAAA;QACT,OAAOA,CAAC,GAAGY,aAAa,EAAE;EACtB,QAAA,IAAM7M,QAAQ,GAAG4M,gBAAgB,CAACX,CAAC,CAAC,CAAA;UAEpCtG,QAAQ,CAAC7D,IAAI,CAAC;EACVgF,UAAAA,GAAG,EAAEoG,OAAO;YACZvE,MAAM,EAAEuE,OAAO,GAAGF,UAAU;YAC5BvL,IAAI,EAAEzB,QAAQ,CAACyB,IAAI;YACnBzB,QAAQ,EAAEA,QAAQ,CAACA,QAAAA;EACvB,SAAC,CAAC,CAAA;EAEFkN,QAAAA,OAAO,IAAIF,UAAU,CAAA;EACrBf,QAAAA,CAAC,IAAI,CAAC,CAAA;EACV,OAAA;EACJ,KAAA;EAAC,GAAA,CAAA,CAAA,CAAA;EAAA,EAAA,OAAA,iBAAA,CAAA;EAAA,CAAA,CA5KkCZ,mBAAmB,CAAA,CAAA;EA6KzD,IAEKrE,WAAW,gBAAA,YAAA;IAKb,SACImG,WAAAA,CAAAA,QAAgB,EAChBC,OAAe,EACfC,OAAe,EACfC,KAAa,EACbpG,UAAmB,EACrB;EAAA,IAAA,eAAA,CAAA,IAAA,EAAA,WAAA,CAAA,CAAA;EAAA,IAAA,eAAA,CAAA,IAAA,EAAA,SAAA,EAAA,KAAA,CAAA,CAAA,CAAA;EAAA,IAAA,eAAA,CAAA,IAAA,EAAA,SAAA,EAAA,KAAA,CAAA,CAAA,CAAA;EAAA,IAAA,eAAA,CAAA,IAAA,EAAA,UAAA,EAAA,KAAA,CAAA,CAAA,CAAA;MACE,IAAI,CAACkG,OAAO,GAAGA,OAAO,CAAA;MACtB,IAAI,CAACC,OAAO,GAAGA,OAAO,CAAA;MAEtB,IAAI,CAACtH,QAAQ,GAAGC,MAAM,CAAC,QAAQ,CAAC,CAACmB,QAAQ,CACrC,8BAA8B,CACjC,CAAA;EAED,IAAA,IAAID,UAAU,EAAE;EACZ,MAAA,IAAI,CAACnB,QAAQ,CAACwH,IAAI,CAACJ,QAAQ,CAAC,CAAA;EAChC,KAAC,MAAM;EACH,MAAA,IAAI,CAACpH,QAAQ,CAACyH,IAAI,CAACL,QAAQ,CAAC,CAAA;EAChC,KAAA;MAEA,IAAI,CAACpH,QAAQ,CAAC0H,GAAG,CAAC,UAAU,EAAE,UAAU,CAAC,CAAA;EACzCH,IAAAA,KAAK,CAACI,MAAM,CAAC,IAAI,CAAC3H,QAAQ,CAAC,CAAA;EAC/B,GAAA;EAAC,EAAA,YAAA,CAAA,WAAA,EAAA,CAAA;EAAA,IAAA,GAAA,EAAA,MAAA;EAAA,IAAA,KAAA,EAED,SAAYS,IAAAA,CAAAA,KAAa,EAAEE,KAAa,EAAQ;EAC5C,MAAA,IAAI,CAACX,QAAQ,CAACa,MAAM,CAAC;EACjBC,QAAAA,IAAI,EAAEL,KAAK,GAAG,IAAI,CAAC4G,OAAO;EAC1BtG,QAAAA,GAAG,EAAEJ,KAAK,GAAG,IAAI,CAAC2G,OAAAA;EACtB,OAAC,CAAC,CAAA;EACN,KAAA;EAAC,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,QAAA;EAAA,IAAA,KAAA,EAED,SAAsB,MAAA,GAAA;EAClB,MAAA,IAAI,CAACtH,QAAQ,CAACiD,MAAM,EAAE,CAAA;EAC1B,KAAA;EAAC,GAAA,CAAA,CAAA,CAAA;EAAA,EAAA,OAAA,WAAA,CAAA;EAAA,CAAA,EAAA;;ECprBE,IAAM2E,KAAK,GAAG,SAARA,KAAK,CAAIpK,CAAU,EAAA;IAAA,OAC5B,OAAOA,CAAC,KAAK,QAAQ,IAAIA,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;EAAA,CAAA,CAAA;EAEjC,IAAMqK,UAAU,GAAG,SAAbA,UAAU,CAAIvK,CAAU,EAAA;IAAA,OAAc,OAAOA,CAAC,KAAK,UAAU,CAAA;EAAA,CAAA,CAAA;EAEnE,IAAMwK,aAAa,GAAG,SAAhBA,aAAa,CAAItM,KAAc,EAAA;EAAA,EAAA,OACxCA,KAAK,GAAG,MAAM,GAAG,OAAO,CAAA;EAAA,CAAA;;ECNW,IAMlBuM,gBAAgB,gBAAA,YAAA;EAKjC,EAAA,SAAA,gBAAA,CAAYrI,UAAwB,EAAE;EAAA,IAAA,eAAA,CAAA,IAAA,EAAA,gBAAA,CAAA,CAAA;EAAA,IAAA,eAAA,CAAA,IAAA,EAAA,mBAAA,EAAA,KAAA,CAAA,CAAA,CAAA;EAAA,IAAA,eAAA,CAAA,IAAA,EAAA,mBAAA,EAAA,KAAA,CAAA,CAAA,CAAA;EAAA,IAAA,eAAA,CAAA,IAAA,EAAA,YAAA,EAAA,KAAA,CAAA,CAAA,CAAA;MAClC,IAAI,CAACA,UAAU,GAAGA,UAAU,CAAA;EAE5B,IAAA,IAAI,CAACsI,iBAAiB,GAAG,IAAI,CAACC,mBAAmB,CAC7CvI,UAAU,CAACU,OAAO,CAAC8H,UAAU,IAAI,GAAG,CACvC,CAAA;EACD,IAAA,IAAI,CAACC,iBAAiB,GAAG,IAAI,CAACF,mBAAmB,CAC7CvI,UAAU,CAACU,OAAO,CAACgI,UAAU,IAAI,GAAG,CACvC,CAAA;EACL,GAAA;EAAC,EAAA,YAAA,CAAA,gBAAA,EAAA,CAAA;EAAA,IAAA,GAAA,EAAA,QAAA;MAAA,KAED,EAAA,SAAA,MAAA,CAAcC,QAAqB,EAAQ;EACvC,MAAA,IAAIA,QAAQ,IAAIA,QAAQ,CAAClN,MAAM,EAAE;EAC7B,QAAA,IAAI,CAACmN,cAAc,CAACD,QAAQ,CAAC,CAAA;EACjC,OAAC,MAAM;UACH,IAAI,CAACE,cAAc,EAAE,CAAA;EACzB,OAAA;EACJ,KAAA;EAAC,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,gBAAA;EAAA,IAAA,KAAA,EAED,SAA8B,cAAA,GAAA;EAC1B,MAAA,IAAMvI,QAAQ,GAAG,IAAI,CAACN,UAAU,CAACwB,OAAO,CAAA;QACxClB,QAAQ,CAACuE,KAAK,EAAE,CAAA;EAEhB,MAAA,IAAI,CAACiE,iBAAiB,CAClBxI,QAAQ,CAAC,CAAC,CAAC,EACX,IAAI,CAACN,UAAU,CAACpE,IAAI,CAACJ,QAAQ,EAC7B,IAAI,EACJ,CAAC,CACJ,CAAA;EACL,KAAA;EAAC,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,gBAAA;MAAA,KAED,EAAA,SAAA,cAAA,CAAsBQ,IAAU,EAAQ;EACpC;EACA,MAAA,IAAM+M,WAAW,GAAGxI,MAAM,CAACvE,IAAI,CAACwF,OAAO,CAAC,CAAA;;EAExC;EACA,MAAA,IAAMwH,EAAE,GAAG,IAAI,CAACC,QAAQ,CAACjN,IAAI,EAAEA,IAAI,CAACkN,QAAQ,EAAE,CAAC,CAAA;EAC/C,MAAA,IAAI,CAACC,cAAc,CAACnN,IAAI,EAAEgN,EAAE,CAAC,CAAA;;EAE7B;EACAD,MAAAA,WAAW,CAAC/O,KAAK,CAACgP,EAAE,CAAC,CAAA;;EAErB;QACAD,WAAW,CAACxF,MAAM,EAAE,CAAA;;EAEpB;QACA,IAAIvH,IAAI,CAACR,QAAQ,EAAE;EACf,QAAA,IAAI,CAACsN,iBAAiB,CAClBE,EAAE,EACFhN,IAAI,CAACR,QAAQ,EACb,KAAK,EACLQ,IAAI,CAACkN,QAAQ,EAAE,GAAG,CAAC,CACtB,CAAA;EACL,OAAA;EACJ,KAAA;EAAC,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,mBAAA;MAAA,KAED,EAAA,SAAA,iBAAA,CACI1H,OAAgB,EAChBhG,QAAgB,EAChB4N,UAAmB,EACnBtM,KAAa,EACT;EACJ,MAAA,IAAMuM,EAAE,GAAG,IAAI,CAACC,QAAQ,CAACF,UAAU,CAAC,CAAA;EACpC5H,MAAAA,OAAO,CAAC+H,WAAW,CAACF,EAAE,CAAC,CAAA;EAAC,MAAA,IAAA,SAAA,GAAA,0BAAA,CAEJ7N,QAAQ,CAAA;EAAA,QAAA,KAAA,CAAA;EAAA,MAAA,IAAA;UAA5B,KAA8B,SAAA,CAAA,CAAA,EAAA,EAAA,CAAA,CAAA,KAAA,GAAA,SAAA,CAAA,CAAA,EAAA,EAAA,IAAA,GAAA;EAAA,UAAA,IAAnBuB,KAAK,GAAA,KAAA,CAAA,KAAA,CAAA;YACZ,IAAMiM,EAAE,GAAG,IAAI,CAACC,QAAQ,CAAClM,KAAK,EAAED,KAAK,CAAC,CAAA;EACtCuM,UAAAA,EAAE,CAACE,WAAW,CAACP,EAAE,CAAC,CAAA;EAElB,UAAA,IAAI,CAACG,cAAc,CAACpM,KAAK,EAAEiM,EAAE,CAAC,CAAA;EAE9B,UAAA,IAAIjM,KAAK,CAACJ,WAAW,EAAE,EAAE;EACrB,YAAA,IAAI,CAACmM,iBAAiB,CAACE,EAAE,EAAEjM,KAAK,CAACvB,QAAQ,EAAE,KAAK,EAAEsB,KAAK,GAAG,CAAC,CAAC,CAAA;EAChE,WAAA;EACJ,SAAA;EAAC,OAAA,CAAA,OAAA,GAAA,EAAA;EAAA,QAAA,SAAA,CAAA,CAAA,CAAA,GAAA,CAAA,CAAA;EAAA,OAAA,SAAA;EAAA,QAAA,SAAA,CAAA,CAAA,EAAA,CAAA;EAAA,OAAA;EACL,KAAA;EAAC,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,gBAAA;EAAA,IAAA,KAAA,EAED,SAAuBd,cAAAA,CAAAA,IAAU,EAAEgN,EAAe,EAAQ;QACtDhN,IAAI,CAACwF,OAAO,GAAGwH,EAAE,CAAA;QACjBzI,MAAM,CAACyI,EAAE,CAAC,CAACjO,IAAI,CAAC,MAAM,EAAEiB,IAAI,CAAC,CAAA;EACjC,KAAA;EAAC,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,UAAA;MAAA,KAED,EAAA,SAAA,QAAA,CAAiBoN,UAAmB,EAAoB;EACpD,MAAA,IAAII,WAAW,CAAA;EACf,MAAA,IAAIC,IAAI,CAAA;QAER,IAAI,CAACL,UAAU,EAAE;EACbI,QAAAA,WAAW,GAAG,EAAE,CAAA;EAChBC,QAAAA,IAAI,GAAG,OAAO,CAAA;EAClB,OAAC,MAAM;EACHD,QAAAA,WAAW,GAAG,aAAa,CAAA;EAC3BC,QAAAA,IAAI,GAAG,MAAM,CAAA;EAEb,QAAA,IAAI,IAAI,CAACzJ,UAAU,CAACU,OAAO,CAACgJ,GAAG,EAAE;EAC7BF,UAAAA,WAAW,IAAI,aAAa,CAAA;EAChC,SAAA;EACJ,OAAA;EAEA,MAAA,IAAI,IAAI,CAACxJ,UAAU,CAACU,OAAO,CAACiJ,WAAW,EAAE;EACrCH,QAAAA,WAAW,IAAI,aAAa,CAAA;EAChC,OAAA;EAEA,MAAA,IAAMH,EAAE,GAAGO,QAAQ,CAACC,aAAa,CAAC,IAAI,CAAC,CAAA;EACvCR,MAAAA,EAAE,CAACS,SAAS,GAAoBN,gBAAAA,CAAAA,MAAAA,CAAAA,WAAW,CAAE,CAAA;EAE7CH,MAAAA,EAAE,CAACU,YAAY,CAAC,MAAM,EAAEN,IAAI,CAAC,CAAA;EAE7B,MAAA,OAAOJ,EAAE,CAAA;EACb,KAAA;EAAC,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,UAAA;EAAA,IAAA,KAAA,EAED,SAAiBrN,QAAAA,CAAAA,IAAU,EAAEc,KAAa,EAAiB;EACvD,MAAA,IAAMkN,UAAU,GAAGC,OAAO,CACtB,IAAI,CAACjK,UAAU,CAACkK,iBAAiB,CAACC,cAAc,CAACnO,IAAI,CAAC,CACzD,CAAA;EAED,MAAA,IAAMoO,cAAc,GAChBpO,IAAI,CAAC+F,QAAQ,EAAE,IACd/F,IAAI,CAACX,aAAa,IAAI,IAAI,CAAC2E,UAAU,CAACU,OAAO,CAAC2J,eAAgB,CAAA;QAEnE,IAAMrB,EAAE,GAAGoB,cAAc,GACnB,IAAI,CAACE,cAAc,CAACtO,IAAI,EAAEc,KAAK,EAAEkN,UAAU,CAAC,GAC5C,IAAI,CAACO,YAAY,CAACvO,IAAI,EAAEc,KAAK,EAAEkN,UAAU,CAAC,CAAA;EAEhD,MAAA,IAAI,IAAI,CAAChK,UAAU,CAACU,OAAO,CAAC8J,UAAU,EAAE;EACpC,QAAA,IAAI,CAACxK,UAAU,CAACU,OAAO,CAAC8J,UAAU,CAACxO,IAAI,EAAEuE,MAAM,CAACyI,EAAE,CAAC,EAAEgB,UAAU,CAAC,CAAA;EACpE,OAAA;EAEA,MAAA,OAAOhB,EAAE,CAAA;EACb,KAAA;EAAC,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,gBAAA;EAAA,IAAA,KAAA,EAED,wBACIhN,IAAU,EACVc,KAAa,EACbkN,UAAmB,EACN;EACb,MAAA,IAAMS,aAAa,GAAG,IAAI,CAACC,gBAAgB,CAAC1O,IAAI,CAAC,CAAA;QACjD,IAAM2O,aAAa,GAAG,IAAI,CAACC,gBAAgB,CAAC5O,IAAI,EAAEgO,UAAU,CAAC,CAAA;EAE7D,MAAA,IAAMa,WAAW,GAAG7O,IAAI,CAACkD,OAAO,GAC1B,IAAI,CAACoJ,iBAAiB,GACtB,IAAI,CAACG,iBAAiB,CAAA;;EAE5B;EACA,MAAA,IAAMO,EAAE,GAAGY,QAAQ,CAACC,aAAa,CAAC,IAAI,CAAC,CAAA;EACvCb,MAAAA,EAAE,CAACc,SAAS,GAAoBa,gBAAAA,CAAAA,MAAAA,CAAAA,aAAa,CAAE,CAAA;EAC/C3B,MAAAA,EAAE,CAACe,YAAY,CAAC,MAAM,EAAE,cAAc,CAAC,CAAA;;EAEvC;EACA,MAAA,IAAMe,GAAG,GAAGlB,QAAQ,CAACC,aAAa,CAAC,KAAK,CAAC,CAAA;QACzCiB,GAAG,CAAChB,SAAS,GAAG,8BAA8B,CAAA;EAC9CgB,MAAAA,GAAG,CAACf,YAAY,CAAC,MAAM,EAAE,cAAc,CAAC,CAAA;EAExCf,MAAAA,EAAE,CAACO,WAAW,CAACuB,GAAG,CAAC,CAAA;;EAEnB;EACA,MAAA,IAAMC,UAAU,GAAGnB,QAAQ,CAACC,aAAa,CAAC,GAAG,CAAC,CAAA;QAC9CkB,UAAU,CAACjB,SAAS,GAAGW,aAAa,CAAA;QAEpCM,UAAU,CAACxB,WAAW,CAACsB,WAAW,CAACG,SAAS,CAAC,IAAI,CAAC,CAAC,CAAA;EAEnDD,MAAAA,UAAU,CAAChB,YAAY,CAAC,MAAM,EAAE,cAAc,CAAC,CAAA;EAC/CgB,MAAAA,UAAU,CAAChB,YAAY,CAAC,aAAa,EAAE,MAAM,CAAC,CAAA;EAE9C,MAAA,IAAI,IAAI,CAAC/J,UAAU,CAACU,OAAO,CAACuK,UAAU,EAAE;EACpCH,QAAAA,GAAG,CAACvB,WAAW,CAACwB,UAAU,CAAC,CAAA;EAC/B,OAAA;;EAEA;QACAD,GAAG,CAACvB,WAAW,CACX,IAAI,CAAC2B,eAAe,CAChBlP,IAAI,CAACxB,IAAI,EACTsC,KAAK,EACLkN,UAAU,EACVhO,IAAI,CAACkD,OAAO,EACZ,IAAI,CACP,CACJ,CAAA;QAED,IAAI,CAAC,IAAI,CAACc,UAAU,CAACU,OAAO,CAACuK,UAAU,EAAE;EACrCH,QAAAA,GAAG,CAACvB,WAAW,CAACwB,UAAU,CAAC,CAAA;EAC/B,OAAA;EAEA,MAAA,OAAO/B,EAAE,CAAA;EACb,KAAA;EAAC,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,cAAA;EAAA,IAAA,KAAA,EAED,sBACIhN,IAAU,EACVc,KAAa,EACbkN,UAAmB,EACN;EACb,MAAA,IAAMmB,SAAS,GAAG,CAAC,eAAe,CAAC,CAAA;EAEnC,MAAA,IAAInB,UAAU,EAAE;EACZmB,QAAAA,SAAS,CAAC9O,IAAI,CAAC,iBAAiB,CAAC,CAAA;EACrC,OAAA;EAEA,MAAA,IAAMmN,WAAW,GAAG2B,SAAS,CAACC,IAAI,CAAC,GAAG,CAAC,CAAA;;EAEvC;EACA,MAAA,IAAMpC,EAAE,GAAGY,QAAQ,CAACC,aAAa,CAAC,IAAI,CAAC,CAAA;QACvCb,EAAE,CAACc,SAAS,GAAGN,WAAW,CAAA;EAC1BR,MAAAA,EAAE,CAACe,YAAY,CAAC,MAAM,EAAE,cAAc,CAAC,CAAA;;EAEvC;EACA,MAAA,IAAMe,GAAG,GAAGlB,QAAQ,CAACC,aAAa,CAAC,KAAK,CAAC,CAAA;QACzCiB,GAAG,CAAChB,SAAS,GAAG,8BAA8B,CAAA;EAC9CgB,MAAAA,GAAG,CAACf,YAAY,CAAC,MAAM,EAAE,cAAc,CAAC,CAAA;EAExCf,MAAAA,EAAE,CAACO,WAAW,CAACuB,GAAG,CAAC,CAAA;;EAEnB;QACAA,GAAG,CAACvB,WAAW,CACX,IAAI,CAAC2B,eAAe,CAChBlP,IAAI,CAACxB,IAAI,EACTsC,KAAK,EACLkN,UAAU,EACVhO,IAAI,CAACkD,OAAO,EACZ,KAAK,CACR,CACJ,CAAA;EAED,MAAA,OAAO8J,EAAE,CAAA;EACb,KAAA;EAAC,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,iBAAA;MAAA,KAED,EAAA,SAAA,eAAA,CACItB,QAAgB,EAChB5K,KAAa,EACbkN,UAAmB,EACnBqB,MAAe,EACftJ,QAAiB,EACF;EACf,MAAA,IAAMuJ,SAAS,GAAG1B,QAAQ,CAACC,aAAa,CAAC,MAAM,CAAC,CAAA;QAEhD,IAAI0B,OAAO,GAAG,4BAA4B,CAAA;EAE1C,MAAA,IAAIxJ,QAAQ,EAAE;EACVwJ,QAAAA,OAAO,IAAI,sBAAsB,CAAA;EACrC,OAAA;EAEAA,MAAAA,OAAO,IACH,uBAAA,CAAA,MAAA,CAAA,IAAI,CAACvL,UAAU,CAACU,OAAO,CAACuK,UAAU,GAAG,MAAM,GAAG,OAAO,CACvD,CAAA;QAEFK,SAAS,CAACxB,SAAS,GAAGyB,OAAO,CAAA;EAE7BD,MAAAA,SAAS,CAACvB,YAAY,CAAC,MAAM,EAAE,UAAU,CAAC,CAAA;EAC1CuB,MAAAA,SAAS,CAACvB,YAAY,CAAC,YAAY,EAAA,EAAA,CAAA,MAAA,CAAKjN,KAAK,CAAG,CAAA,CAAA;QAEhDwO,SAAS,CAACvB,YAAY,CAAC,eAAe,EAAE3B,aAAa,CAAC4B,UAAU,CAAC,CAAC,CAAA;QAClEsB,SAAS,CAACvB,YAAY,CAAC,eAAe,EAAE3B,aAAa,CAACiD,MAAM,CAAC,CAAC,CAAA;EAE9D,MAAA,IAAIrB,UAAU,EAAE;UACZ,IAAMwB,QAAQ,GAAG,IAAI,CAACxL,UAAU,CAACU,OAAO,CAAC8K,QAAQ,CAAA;UAEjD,IAAIA,QAAQ,KAAKxK,SAAS,EAAE;EACxBsK,UAAAA,SAAS,CAACvB,YAAY,CAAC,UAAU,EAAA,EAAA,CAAA,MAAA,CAAKyB,QAAQ,CAAG,CAAA,CAAA;EACrD,SAAA;EACJ,OAAA;EAEA,MAAA,IAAI,IAAI,CAACxL,UAAU,CAACU,OAAO,CAACe,UAAU,EAAE;UACpC6J,SAAS,CAACG,WAAW,GAAG/D,QAAQ,CAAA;EACpC,OAAC,MAAM;UACH4D,SAAS,CAACI,SAAS,GAAGhE,QAAQ,CAAA;EAClC,OAAA;EAEA,MAAA,OAAO4D,SAAS,CAAA;EACpB,KAAA;EAAC,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,kBAAA;MAAA,KAED,EAAA,SAAA,gBAAA,CAAyBtP,IAAU,EAAU;EACzC,MAAA,IAAMuP,OAAO,GAAG,CAAC,gBAAgB,EAAE,eAAe,CAAC,CAAA;EAEnD,MAAA,IAAI,CAACvP,IAAI,CAACkD,OAAO,EAAE;EACfqM,QAAAA,OAAO,CAAClP,IAAI,CAAC,eAAe,CAAC,CAAA;EACjC,OAAA;EAEA,MAAA,IAAI,IAAI,CAAC2D,UAAU,CAACU,OAAO,CAACuK,UAAU,EAAE;EACpCM,QAAAA,OAAO,CAAClP,IAAI,CAAC,qBAAqB,CAAC,CAAA;EACvC,OAAC,MAAM;EACHkP,QAAAA,OAAO,CAAClP,IAAI,CAAC,sBAAsB,CAAC,CAAA;EACxC,OAAA;EAEA,MAAA,OAAOkP,OAAO,CAACH,IAAI,CAAC,GAAG,CAAC,CAAA;EAC5B,KAAA;EAAC,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,kBAAA;EAAA,IAAA,KAAA,EAED,SAAyBpP,gBAAAA,CAAAA,IAAU,EAAEgO,UAAmB,EAAU;EAC9D,MAAA,IAAMuB,OAAO,GAAG,CAAC,eAAe,CAAC,CAAA;EAEjC,MAAA,IAAI,CAACvP,IAAI,CAACkD,OAAO,EAAE;EACfqM,QAAAA,OAAO,CAAClP,IAAI,CAAC,eAAe,CAAC,CAAA;EACjC,OAAA;EAEA,MAAA,IAAI2N,UAAU,EAAE;EACZuB,QAAAA,OAAO,CAAClP,IAAI,CAAC,iBAAiB,CAAC,CAAA;EACnC,OAAA;QAEA,IAAIL,IAAI,CAAC2P,UAAU,EAAE;EACjBJ,QAAAA,OAAO,CAAClP,IAAI,CAAC,gBAAgB,CAAC,CAAA;EAClC,OAAA;EAEA,MAAA,OAAOkP,OAAO,CAACH,IAAI,CAAC,GAAG,CAAC,CAAA;EAC5B,KAAA;EAAC,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,qBAAA;MAAA,KAED,EAAA,SAAA,mBAAA,CAA4BtP,KAAuB,EAAe;EAC9D,MAAA,IAAI,OAAOA,KAAK,KAAK,QAAQ,EAAE;EAC3B;EACA,QAAA,IAAMgP,GAAG,GAAGlB,QAAQ,CAACC,aAAa,CAAC,KAAK,CAAC,CAAA;UACzCiB,GAAG,CAACY,SAAS,GAAG5P,KAAK,CAAA;EAErB,QAAA,OAAO8N,QAAQ,CAACgC,cAAc,CAACd,GAAG,CAACY,SAAS,CAAC,CAAA;EACjD,OAAC,MAAM;EACH,QAAA,OAAOnL,MAAM,CAACzE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;EAC3B,OAAA;EACJ,KAAA;EAAC,GAAA,CAAA,CAAA,CAAA;EAAA,EAAA,OAAA,gBAAA,CAAA;EAAA,CAAA,EAAA;;MC9TgB+P,UAAU,gBAAA,YAAA;EAG3B,EAAA,SAAA,UAAA,CAAY7L,UAAwB,EAAE;EAAA,IAAA,eAAA,CAAA,IAAA,EAAA,UAAA,CAAA,CAAA;EAAA,IAAA,eAAA,CAAA,IAAA,EAAA,YAAA,EAAA,KAAA,CAAA,CAAA,CAAA;MAClC,IAAI,CAACA,UAAU,GAAGA,UAAU,CAAA;EAChC,GAAA;EAAC,EAAA,YAAA,CAAA,UAAA,EAAA,CAAA;EAAA,IAAA,GAAA,EAAA,aAAA;EAAA,IAAA,KAAA,EAED,qBACI8L,OAA4C,EAC5CC,UAAuB,EACvBC,UAAwC,EACpC;EAAA,MAAA,IAAA,KAAA,GAAA,IAAA,CAAA;QACJ,IAAI,CAACF,OAAO,EAAE;EACV,QAAA,OAAA;EACJ,OAAA;EAEA,MAAA,IAAMG,GAAG,GAAG,IAAI,CAACC,aAAa,CAACH,UAAU,CAAC,CAAA;EAC1C,MAAA,IAAI,CAACI,eAAe,CAACF,GAAG,CAAC,CAAA;QACzB,IAAI,CAACG,aAAa,CAAC,IAAI,EAAEL,UAAU,EAAEE,GAAG,CAAC,CAAA;EAEzC,MAAA,IAAMI,WAAW,GAAG,SAAdA,WAAW,GAAe;EAC5B,QAAA,KAAI,CAACC,kBAAkB,CAACL,GAAG,CAAC,CAAA;UAC5B,KAAI,CAACG,aAAa,CAAC,KAAK,EAAEL,UAAU,EAAEE,GAAG,CAAC,CAAA;SAC7C,CAAA;EAED,MAAA,IAAMM,aAAa,GAAG,SAAhBA,aAAa,CAAIxR,IAAyB,EAAW;EACvDsR,QAAAA,WAAW,EAAE,CAAA;EACb,QAAA,KAAI,CAACrM,UAAU,CAACwM,QAAQ,CAAC,KAAI,CAACC,SAAS,CAAC1R,IAAI,CAAC,EAAEgR,UAAU,CAAC,CAAA;EAE1D,QAAA,IAAIC,UAAU,IAAI,OAAOA,UAAU,KAAK,UAAU,EAAE;EAChDA,UAAAA,UAAU,EAAE,CAAA;EAChB,SAAA;SACH,CAAA;EAED,MAAA,IAAMU,WAAW,GAAG,SAAdA,WAAW,CAAIC,KAAmB,EAAW;EAC/CN,QAAAA,WAAW,EAAE,CAAA;EAEb,QAAA,IAAI,KAAI,CAACrM,UAAU,CAACU,OAAO,CAACkM,YAAY,EAAE;YACtC,KAAI,CAAC5M,UAAU,CAACU,OAAO,CAACkM,YAAY,CAACD,KAAK,CAAC,CAAA;EAC/C,SAAA;SACH,CAAA;QAED,IAAI,CAACE,aAAa,CAACf,OAAO,EAAES,aAAa,EAAEG,WAAW,CAAC,CAAA;EAC3D,KAAA;EAAC,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,iBAAA;MAAA,KAED,EAAA,SAAA,eAAA,CAAwBT,GAAwB,EAAQ;EACpD,MAAA,IAAIA,GAAG,EAAE;EACLA,QAAAA,GAAG,CAACvK,QAAQ,CAAC,gBAAgB,CAAC,CAAA;EAClC,OAAA;EACJ,KAAA;EAAC,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,oBAAA;MAAA,KAED,EAAA,SAAA,kBAAA,CAA2BuK,GAAwB,EAAQ;EACvD,MAAA,IAAIA,GAAG,EAAE;EACLA,QAAAA,GAAG,CAACtJ,WAAW,CAAC,gBAAgB,CAAC,CAAA;EACrC,OAAA;EACJ,KAAA;EAAC,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,eAAA;MAAA,KAED,EAAA,SAAA,aAAA,CAAsBoJ,UAAuB,EAAuB;EAChE,MAAA,IAAIA,UAAU,EAAE;EACZ,QAAA,OAAOxL,MAAM,CAACwL,UAAU,CAACvK,OAAO,CAAC,CAAA;EACrC,OAAC,MAAM;EACH,QAAA,OAAO,IAAI,CAACxB,UAAU,CAACwB,OAAO,CAAA;EAClC,OAAA;EACJ,KAAA;EAAC,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,eAAA;EAAA,IAAA,KAAA,EAED,uBACIsL,SAAkB,EAClB9Q,IAAiB,EACjBiQ,GAAW,EACP;EACJ,MAAA,IAAI,IAAI,CAACjM,UAAU,CAACU,OAAO,CAACqM,SAAS,EAAE;EACnC,QAAA,IAAI,CAAC/M,UAAU,CAACU,OAAO,CAACqM,SAAS,CAACD,SAAS,EAAE9Q,IAAI,EAAEiQ,GAAG,CAAC,CAAA;EAC3D,OAAA;EAEA,MAAA,IAAI,CAACjM,UAAU,CAACgF,aAAa,CAAC,mBAAmB,EAAE;EAC/C8H,QAAAA,SAAS,EAATA,SAAS;EACT9Q,QAAAA,IAAI,EAAJA,IAAI;EACJiQ,QAAAA,GAAG,EAAHA,GAAAA;EACJ,OAAC,CAAC,CAAA;EACN,KAAA;EAAC,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,eAAA;EAAA,IAAA,KAAA,EAED,uBACIe,YAA0C,EAC1CT,aAA+C,EAC/CG,WAA2C,EACvC;EAAA,MAAA,IAAA,oBAAA,CAAA;EACJ,MAAA,IAAMZ,OAAO,GACT,OAAOkB,YAAY,KAAK,QAAQ,GAC1B;EAAEC,QAAAA,GAAG,EAAED,YAAAA;EAAa,OAAC,GACrBA,YAAY,CAAA;EAEtB,MAAA,IAAME,YAAiC,GAAAC,cAAA,CAAA;EACnCC,QAAAA,MAAM,EAAE,KAAK;EACbC,QAAAA,KAAK,EAAE,KAAK;EACZC,QAAAA,QAAQ,EAAE,MAAM;EAChBC,QAAAA,OAAO,EAAEhB,aAAa;EACtBiB,QAAAA,KAAK,EAAEd,WAAAA;EAAW,OAAA,EACfZ,OAAO,CACb,CAAA;EAEDoB,MAAAA,YAAY,CAACE,MAAM,GAAG,CAAA,CAAA,oBAAA,GAAAF,YAAY,CAACE,MAAM,MAAA,IAAA,IAAA,oBAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAnB,oBAAqBK,CAAAA,WAAW,EAAE,KAAI,KAAK,CAAA;EAEjE,MAAA,KAAKlN,MAAM,CAACmN,IAAI,CAACR,YAAY,CAAC,CAAA;EAClC,KAAA;EAAC,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,WAAA;MAAA,KAED,EAAA,SAAA,SAAA,CAAkBnS,IAAyB,EAAc;QACrD,IAAQ4S,UAAU,GAAK,IAAI,CAAC3N,UAAU,CAACU,OAAO,CAAtCiN,UAAU,CAAA;EAElB,MAAA,IAAMC,aAAa,GAAG,SAAhBA,aAAa,GAAS;EACxB,QAAA,IAAI,OAAO7S,IAAI,KAAK,QAAQ,EAAE;EAC1B,UAAA,OAAO8S,IAAI,CAACC,KAAK,CAAC/S,IAAI,CAAC,CAAA;EAC3B,SAAC,MAAM;EACH,UAAA,OAAOA,IAAI,CAAA;EACf,SAAA;SACH,CAAA;QAED,IAAMgT,UAAU,GAAGH,aAAa,EAAE,CAAA;EAElC,MAAA,IAAID,UAAU,EAAE;UACZ,OAAOA,UAAU,CAACI,UAAU,CAAC,CAAA;EACjC,OAAC,MAAM;EACH,QAAA,OAAOA,UAAU,CAAA;EACrB,OAAA;EACJ,KAAA;EAAC,GAAA,CAAA,CAAA,CAAA;EAAA,EAAA,OAAA,UAAA,CAAA;EAAA,CAAA,EAAA;;MC7HgBC,UAAU,gBAAA,YAAA;EAQ3B,EAAA,SAAA,UAAA,CAAYhO,UAAwB,EAAE;EAAA,IAAA,IAAA,KAAA,GAAA,IAAA,CAAA;EAAA,IAAA,eAAA,CAAA,IAAA,EAAA,UAAA,CAAA,CAAA;EAAA,IAAA,eAAA,CAAA,IAAA,EAAA,YAAA,EAAA,KAAA,CAAA,CAAA,CAAA;MAAA,eAiEd,CAAA,IAAA,EAAA,eAAA,EAAA,UAACiO,CAAe,EAAc;EAClD,MAAA,IAAI,CAAC,KAAI,CAACC,iBAAiB,EAAE,EAAE;EAC3B,QAAA,OAAO,IAAI,CAAA;EACf,OAAA;EAEA,MAAA,IAAMC,YAAY,GAAG,KAAI,CAACnO,UAAU,CAACoO,eAAe,EAAE,CAAA;QACtD,IAAI,CAACD,YAAY,EAAE;EACf,QAAA,OAAO,IAAI,CAAA;EACf,OAAA;EAEA,MAAA,IAAMtS,GAAG,GAAGoS,CAAC,CAACI,KAAK,CAAA;EAEnB,MAAA,QAAQxS,GAAG;UACP,KAAKmS,UAAU,CAACM,IAAI;EAChB,UAAA,OAAO,KAAI,CAACC,QAAQ,CAACJ,YAAY,CAAC,CAAA;UAEtC,KAAKH,UAAU,CAACQ,EAAE;EACd,UAAA,OAAO,KAAI,CAACC,MAAM,CAACN,YAAY,CAAC,CAAA;UAEpC,KAAKH,UAAU,CAACU,KAAK;EACjB,UAAA,OAAO,KAAI,CAACC,SAAS,CAACR,YAAY,CAAC,CAAA;UAEvC,KAAKH,UAAU,CAACY,IAAI;EAChB,UAAA,OAAO,KAAI,CAACC,QAAQ,CAACV,YAAY,CAAC,CAAA;EAEtC,QAAA;EACI,UAAA,OAAO,IAAI,CAAA;EAAC,OAAA;OAEvB,CAAA,CAAA;MA5FG,IAAI,CAACnO,UAAU,GAAGA,UAAU,CAAA;EAE5B,IAAA,IAAIA,UAAU,CAACU,OAAO,CAACoO,eAAe,EAAE;QACpCvO,MAAM,CAACqJ,QAAQ,CAAC,CAACmF,EAAE,CAAC,gBAAgB,EAAE,IAAI,CAACC,aAAa,CAAC,CAAA;EAC7D,KAAA;EACJ,GAAA;EAAC,EAAA,YAAA,CAAA,UAAA,EAAA,CAAA;EAAA,IAAA,GAAA,EAAA,QAAA;EAAA,IAAA,KAAA,EAED,SAAsB,MAAA,GAAA;EAClBzO,MAAAA,MAAM,CAACqJ,QAAQ,CAAC,CAACqF,GAAG,CAAC,gBAAgB,CAAC,CAAA;EAC1C,KAAA;EAAC,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,UAAA;MAAA,KAED,EAAA,SAAA,QAAA,CAAgBd,YAAkB,EAAW;QACzC,OAAO,IAAI,CAACe,UAAU,CAACf,YAAY,CAACgB,kBAAkB,EAAE,CAAC,CAAA;EAC7D,KAAA;EAAC,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,QAAA;MAAA,KAED,EAAA,SAAA,MAAA,CAAchB,YAAkB,EAAW;QACvC,OAAO,IAAI,CAACe,UAAU,CAACf,YAAY,CAACiB,sBAAsB,EAAE,CAAC,CAAA;EACjE,KAAA;EAAC,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,WAAA;MAAA,KAED,EAAA,SAAA,SAAA,CAAiBjB,YAAkB,EAAW;EAC1C,MAAA,IAAI,CAACA,YAAY,CAACpM,QAAQ,EAAE,EAAE;EAC1B,QAAA,OAAO,IAAI,CAAA;EACf,OAAC,MAAM;EACH;UACA,IAAIoM,YAAY,CAACjP,OAAO,EAAE;EACtB;YACA,OAAO,IAAI,CAACgQ,UAAU,CAACf,YAAY,CAACgB,kBAAkB,EAAE,CAAC,CAAA;EAC7D,SAAC,MAAM;EACH;EACA,UAAA,IAAI,CAACnP,UAAU,CAACqP,QAAQ,CAAClB,YAAY,CAAC,CAAA;EACtC,UAAA,OAAO,KAAK,CAAA;EAChB,SAAA;EACJ,OAAA;EACJ,KAAA;EAAC,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,UAAA;MAAA,KAED,EAAA,SAAA,QAAA,CAAgBA,YAAkB,EAAW;QACzC,IAAIA,YAAY,CAACpM,QAAQ,EAAE,IAAIoM,YAAY,CAACjP,OAAO,EAAE;EACjD;EACA,QAAA,IAAI,CAACc,UAAU,CAACsP,SAAS,CAACnB,YAAY,CAAC,CAAA;EACvC,QAAA,OAAO,KAAK,CAAA;EAChB,OAAC,MAAM;EACH;UACA,OAAO,IAAI,CAACe,UAAU,CAACf,YAAY,CAAC9O,SAAS,EAAE,CAAC,CAAA;EACpD,OAAA;EACJ,KAAA;EAAC,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,YAAA;MAAA,KAED,EAAA,SAAA,UAAA,CAAkBrD,IAAiB,EAAW;QAC1C,IAAI,CAACA,IAAI,EAAE;EACP,QAAA,OAAO,IAAI,CAAA;EACf,OAAC,MAAM;EACH,QAAA,IAAI,CAACgE,UAAU,CAACkP,UAAU,CAAClT,IAAI,CAAC,CAAA;UAEhC,IACI,CAAC,IAAI,CAACgE,UAAU,CAACuP,aAAa,CAACC,kBAAkB,CAC7CjP,MAAM,CAACvE,IAAI,CAACwF,OAAO,CAAC,CAACiO,IAAI,CAAC,iBAAiB,CAAC,CAC/C,EACH;EACE,UAAA,IAAI,CAACzP,UAAU,CAAC0P,YAAY,CAAC1T,IAAI,CAAC,CAAA;EACtC,SAAA;EAEA,QAAA,OAAO,KAAK,CAAA;EAChB,OAAA;EACJ,KAAA;EAAC,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,mBAAA;EAAA,IAAA,KAAA,EAgCD,SAAqC,iBAAA,GAAA;EACjC,MAAA,OACI,CAAC,IAAI,CAACgE,UAAU,CAACU,OAAO,CAACoO,eAAe,IAAI,KAAK,KACjD,IAAI,CAAC9O,UAAU,CAACkK,iBAAiB,CAACyF,aAAa,EAAE,CAAA;EAEzD,KAAA;EAAC,GAAA,CAAA,CAAA,CAAA;EAAA,EAAA,OAAA,UAAA,CAAA;EAAA,CAAA,EAAA,CAAA;EAAA,eA5GgB3B,CAAAA,UAAU,UACL,EAAE,CAAA,CAAA;EAAA,eADPA,CAAAA,UAAU,QAEP,EAAE,CAAA,CAAA;EAAA,eAFLA,CAAAA,UAAU,WAGJ,EAAE,CAAA,CAAA;EAAA,eAHRA,CAAAA,UAAU,UAIL,EAAE,CAAA;;ECP5B,IAAM4B,SAAQ,GAAG,SAAXA,QAAQ,CAAIC,WAAoB,EAAEC,UAAkB,EAAW;IACjE,IAAMC,UAAU,GAAG,SAAbA,UAAU,GAAA;EAAA,IAAA,OAAA,gBAAA,CAAA,MAAA,CAAkCD,UAAU,CAAA,CAAA;KAAE,CAAA;IAE9D,IAAME,aAAa,GAAG,SAAhBA,aAAa,CACfxK,EAAe,EACfyK,OAAe,EACgB;MAC/B,IAAMC,MAAM,GAAG3P,MAAM,CAACxF,IAAI,CAACyK,EAAE,EAAEyK,OAAO,CAAY,CAAA;EAElD,IAAA,IAAIC,MAAM,IAAIA,MAAM,YAAYC,YAAY,EAAE;EAC1C,MAAA,OAAOD,MAAM,CAAA;EACjB,KAAC,MAAM;EACH,MAAA,OAAO,IAAI,CAAA;EACf,KAAA;KACH,CAAA;IAED,IAAME,YAAY,GAAG,SAAfA,YAAY,CAAInE,GAAW,EAAEvL,OAAgB,EAAa;MAC5D,IAAMuP,OAAO,GAAGF,UAAU,EAAE,CAAA;MAAC,IAEZ9D,SAAAA,GAAAA,0BAAAA,CAAAA,GAAG,CAAC3N,GAAG,EAAE,CAAA;EAAA,MAAA,KAAA,CAAA;EAAA,IAAA,IAAA;QAA1B,KAA4B,SAAA,CAAA,CAAA,EAAA,EAAA,CAAA,CAAA,KAAA,GAAA,SAAA,CAAA,CAAA,EAAA,EAAA,IAAA,GAAA;EAAA,QAAA,IAAjBkH,EAAE,GAAA,KAAA,CAAA,KAAA,CAAA;EACT,QAAA,IAAM6K,cAAc,GAAGL,aAAa,CAACxK,EAAE,EAAEyK,OAAO,CAAC,CAAA;UAEjD,IAAI,CAACI,cAAc,EAAE;YACjB,IAAMC,iBAAiB,GAAGT,WAAkC,CAAA;YAC5D,IAAMK,MAAM,GAAG,IAAII,iBAAiB,CAAC9K,EAAE,EAAE9E,OAAO,CAAC,CAAA;YAEjD,IAAI,CAACH,MAAM,CAACxF,IAAI,CAACyK,EAAE,EAAEyK,OAAO,CAAC,EAAE;cAC3B1P,MAAM,CAACxF,IAAI,CAACyK,EAAE,EAAEyK,OAAO,EAAEC,MAAM,CAAC,CAAA;EACpC,WAAA;;EAEA;YACAA,MAAM,CAACK,IAAI,EAAE,CAAA;EACjB,SAAA;EACJ,OAAA;EAAC,KAAA,CAAA,OAAA,GAAA,EAAA;EAAA,MAAA,SAAA,CAAA,CAAA,CAAA,GAAA,CAAA,CAAA;EAAA,KAAA,SAAA;EAAA,MAAA,SAAA,CAAA,CAAA,EAAA,CAAA;EAAA,KAAA;EAED,IAAA,OAAOtE,GAAG,CAAA;KACb,CAAA;EAED,EAAA,IAAMuE,aAAa,GAAG,SAAhBA,aAAa,CAAIvE,GAAW,EAAW;MACzC,IAAMgE,OAAO,GAAGF,UAAU,EAAE,CAAA;MAAC,IAEZ9D,UAAAA,GAAAA,0BAAAA,CAAAA,GAAG,CAAC3N,GAAG,EAAE,CAAA;EAAA,MAAA,MAAA,CAAA;EAAA,IAAA,IAAA;QAA1B,KAA4B,UAAA,CAAA,CAAA,EAAA,EAAA,CAAA,CAAA,MAAA,GAAA,UAAA,CAAA,CAAA,EAAA,EAAA,IAAA,GAAA;EAAA,QAAA,IAAjBkH,EAAE,GAAA,MAAA,CAAA,KAAA,CAAA;EACT,QAAA,IAAM0K,MAAM,GAAGF,aAAa,CAACxK,EAAE,EAAEyK,OAAO,CAAC,CAAA;EAEzC,QAAA,IAAIC,MAAM,EAAE;YACRA,MAAM,CAACO,OAAO,EAAE,CAAA;EACpB,SAAA;EAEAlQ,QAAAA,MAAM,CAACmQ,UAAU,CAAClL,EAAE,EAAEyK,OAAO,CAAC,CAAA;EAClC,OAAA;EAAC,KAAA,CAAA,OAAA,GAAA,EAAA;EAAA,MAAA,UAAA,CAAA,CAAA,CAAA,GAAA,CAAA,CAAA;EAAA,KAAA,SAAA;EAAA,MAAA,UAAA,CAAA,CAAA,EAAA,CAAA;EAAA,KAAA;KACJ,CAAA;IAED,IAAMU,YAAY,GAAG,SAAfA,YAAY,CACd1E,GAAW,EACX2E,YAAoB,EACpBC,IAAe,EACL;MACV,IAAI7T,MAAM,GAAG,IAAI,CAAA;MAAC,IAEDiP,UAAAA,GAAAA,0BAAAA,CAAAA,GAAG,CAAC3N,GAAG,EAAE,CAAA;EAAA,MAAA,MAAA,CAAA;EAAA,IAAA,IAAA;QAA1B,KAA4B,UAAA,CAAA,CAAA,EAAA,EAAA,CAAA,CAAA,MAAA,GAAA,UAAA,CAAA,CAAA,EAAA,EAAA,IAAA,GAAA;EAAA,QAAA,IAAjBkH,EAAE,GAAA,MAAA,CAAA,KAAA,CAAA;UACT,IAAM0K,MAAM,GAAG3P,MAAM,CAACxF,IAAI,CAACyK,EAAE,EAAEuK,UAAU,EAAE,CAAY,CAAA;EAEvD,QAAA,IAAIG,MAAM,IAAIA,MAAM,YAAYC,YAAY,EAAE;YAC1C,IAAMW,YAAY,GAAGZ,MAA+B,CAAA;EACpD,UAAA,IAAMa,cAAc,GAAGD,YAAY,CAACF,YAAY,CAAC,CAAA;EAEjD,UAAA,IAAIG,cAAc,IAAI,OAAOA,cAAc,KAAK,UAAU,EAAE;cACxD/T,MAAM,GAAG+T,cAAc,CAACC,KAAK,CAACd,MAAM,EAAEW,IAAI,CAAY,CAAA;EAC1D,WAAA;EACJ,SAAA;EACJ,OAAA;EAAC,KAAA,CAAA,OAAA,GAAA,EAAA;EAAA,MAAA,UAAA,CAAA,CAAA,CAAA,GAAA,CAAA,CAAA;EAAA,KAAA,SAAA;EAAA,MAAA,UAAA,CAAA,CAAA,EAAA,CAAA;EAAA,KAAA;EAED,IAAA,OAAO7T,MAAM,CAAA;KAChB,CAAA;;EAED;IACCuD,MAAM,CAAC0Q,EAAE,CAASnB,UAAU,CAAC,GAAG,UAE7BoB,SAAkB,EAEpB;MACE,IAAI,CAACA,SAAS,EAAE;EACZ,MAAA,OAAOd,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;EACnC,KAAC,MAAM,IAAI,OAAA,CAAOc,SAAS,CAAA,KAAK,QAAQ,EAAE;QACtC,IAAMxQ,OAAO,GAAGwQ,SAAoB,CAAA;EACpC,MAAA,OAAOd,YAAY,CAAC,IAAI,EAAE1P,OAAO,CAAC,CAAA;EACtC,KAAC,MAAM,IAAI,OAAOwQ,SAAS,KAAK,QAAQ,IAAIA,SAAS,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;QAC9D,IAAMN,YAAY,GAAGM,SAAS,CAAA;QAE9B,IAAIN,YAAY,KAAK,SAAS,EAAE;UAC5B,OAAOJ,aAAa,CAAC,IAAI,CAAC,CAAA;EAC9B,OAAC,MAAM,IAAII,YAAY,KAAK,kBAAkB,EAAE;EAC5C,QAAA,OAAOf,WAAW,CAAA;EACtB,OAAC,MAAM;EAAA,QAAA,KAAA,IAAA,IAAA,GAAA,SAAA,CAAA,MAAA,EAdRgB,IAAI,GAAA,IAAA,KAAA,CAAA,IAAA,GAAA,CAAA,GAAA,IAAA,GAAA,CAAA,GAAA,CAAA,CAAA,EAAA,IAAA,GAAA,CAAA,EAAA,IAAA,GAAA,IAAA,EAAA,IAAA,EAAA,EAAA;YAAJA,IAAI,CAAA,IAAA,GAAA,CAAA,CAAA,GAAA,SAAA,CAAA,IAAA,CAAA,CAAA;EAAA,SAAA;EAeC,QAAA,OAAOF,YAAY,CAAC,IAAI,EAAEC,YAAY,EAAEC,IAAI,CAAC,CAAA;EACjD,OAAA;EACJ,KAAA;KACH,CAAA;EACL,CAAC,CAAA;EAAC,IAEmBV,YAAY,gBAAA,YAAA;IAa7B,SAAY3K,YAAAA,CAAAA,EAAe,EAAE9E,OAAsB,EAAE;EAAA,IAAA,eAAA,CAAA,IAAA,EAAA,YAAA,CAAA,CAAA;EAAA,IAAA,eAAA,CAAA,IAAA,EAAA,SAAA,EAAA,KAAA,CAAA,CAAA,CAAA;EAAA,IAAA,eAAA,CAAA,IAAA,EAAA,KAAA,EAAA,KAAA,CAAA,CAAA,CAAA;EACjD,IAAA,IAAI,CAACuL,GAAG,GAAG1L,MAAM,CAACiF,EAAE,CAAC,CAAA;;EAErB;EACA,IAAA,IAAM2L,QAAQ,GAAI,IAAI,CAACC,WAAW,CAAS,UAAU,CAAkB,CAAA;EACvE,IAAA,IAAI,CAAC1Q,OAAO,GAAAyM,cAAA,CAAAA,cAAA,CAAA,EAAA,EAAQgE,QAAQ,CAAA,EAAKzQ,OAAO,CAAE,CAAA;EAC9C,GAAA;EAAC,EAAA,YAAA,CAAA,YAAA,EAAA,CAAA;EAAA,IAAA,GAAA,EAAA,SAAA;EAAA,IAAA,KAAA,EAED,SAAuB,OAAA,GAAA;QACnB,IAAI,CAAC2Q,MAAM,EAAE,CAAA;EACjB,KAAA;EAAC,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,MAAA;EAAA,IAAA,KAAA,EAED,SAAoB,IAAA,GAAA;EAChB;EAAA,KAAA;EACH,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,QAAA;EAAA,IAAA,KAAA,EAED,SAAsB,MAAA,GAAA;EAClB;EAAA,KAAA;EACH,GAAA,CAAA,EAAA,CAAA;EAAA,IAAA,GAAA,EAAA,UAAA;EAAA,IAAA,KAAA,EA9BD,SAAuBxB,QAAAA,CAAAA,WAAoB,EAAEC,UAAkB,EAAQ;EACnEF,MAAAA,SAAQ,CAACC,WAAW,EAAEC,UAAU,CAAC,CAAA;EACrC,KAAA;EAAC,GAAA,CAAA,CAAA,CAAA;EAAA,EAAA,OAAA,YAAA,CAAA;EAAA,CAAA,EAAA,CAAA;EAAA,eAHgBK,CAAAA,YAAY,EAOQ,UAAA,EAAA,EAAE,CAAA;;ECrG3C,IAAMmB,6BAA6B,GAAG,SAAhCA,6BAA6B,CAAIrD,CAAa,EAAA;IAAA,OAAoB;MACpElN,KAAK,EAAEkN,CAAC,CAAClN,KAAK;MACdE,KAAK,EAAEgN,CAAC,CAAChN,KAAK;MACdT,MAAM,EAAEyN,CAAC,CAACzN,MAAqB;EAC/B8B,IAAAA,aAAa,EAAE2L,CAAAA;KAClB,CAAA;EAAA,CAAC,CAAA;EAEF,IAAMsD,wBAAwB,GAAG,SAA3BA,wBAAwB,CAC1BC,KAAY,EACZvD,CAAa,EAAA;IAAA,OACG;MAChBlN,KAAK,EAAEyQ,KAAK,CAACzQ,KAAK;MAClBE,KAAK,EAAEuQ,KAAK,CAACvQ,KAAK;MAClBT,MAAM,EAAEgR,KAAK,CAAChR,MAAqB;EACnC8B,IAAAA,aAAa,EAAE2L,CAAAA;KAClB,CAAA;EAAA,CAAC,CAAA;EAAC,IAEYwD,WAAW,gBAAA,UAAA,aAAA,EAAA;EAAA,EAAA,SAAA,CAAA,WAAA,EAAA,aAAA,CAAA,CAAA;EAAA,EAAA,IAAA,MAAA,GAAA,YAAA,CAAA,WAAA,CAAA,CAAA;EAAA,EAAA,SAAA,WAAA,GAAA;EAAA,IAAA,IAAA,KAAA,CAAA;EAAA,IAAA,eAAA,CAAA,IAAA,EAAA,WAAA,CAAA,CAAA;EAAA,IAAA,KAAA,IAAA,IAAA,GAAA,SAAA,CAAA,MAAA,EAAA,IAAA,GAAA,IAAA,KAAA,CAAA,IAAA,CAAA,EAAA,IAAA,GAAA,CAAA,EAAA,IAAA,GAAA,IAAA,EAAA,IAAA,EAAA,EAAA;EAAA,MAAA,IAAA,CAAA,IAAA,CAAA,GAAA,SAAA,CAAA,IAAA,CAAA,CAAA;EAAA,KAAA;EAAA,IAAA,KAAA,GAAA,MAAA,CAAA,IAAA,CAAA,KAAA,CAAA,MAAA,EAAA,CAAA,IAAA,CAAA,CAAA,MAAA,CAAA,IAAA,CAAA,CAAA,CAAA;EAAA,IAAA,eAAA,CAAA,sBAAA,CAAA,KAAA,CAAA,EAAA,gBAAA,EAAA,KAAA,CAAA,CAAA,CAAA;EAAA,IAAA,eAAA,CAAA,sBAAA,CAAA,KAAA,CAAA,EAAA,eAAA,EAAA,KAAA,CAAA,CAAA,CAAA;EAAA,IAAA,eAAA,CAAA,sBAAA,CAAA,KAAA,CAAA,EAAA,iBAAA,EAAA,KAAA,CAAA,CAAA,CAAA;EAAA,IAAA,eAAA,CAAA,sBAAA,CAAA,KAAA,CAAA,EAAA,iBAAA,EAAA,KAAA,CAAA,CAAA,CAAA;MAAA,eAoDF,CAAA,sBAAA,CAAA,KAAA,CAAA,EAAA,WAAA,EAAA,UAACxD,CAAa,EAAW;EACzC;EACA,MAAA,IAAIA,CAAC,CAACyD,MAAM,KAAK,CAAC,EAAE;EAChB,QAAA,OAAA;EACJ,OAAA;QAEA,IAAM1U,MAAM,GAAG,KAAK2U,CAAAA,eAAe,CAACL,6BAA6B,CAACrD,CAAC,CAAC,CAAC,CAAA;EAErE,MAAA,IAAIjR,MAAM,IAAIiR,CAAC,CAAC2D,UAAU,EAAE;UACxB3D,CAAC,CAAC4D,cAAc,EAAE,CAAA;EACtB,OAAA;OACH,CAAA,CAAA;MAAA,eAsDmB,CAAA,sBAAA,CAAA,KAAA,CAAA,EAAA,WAAA,EAAA,UAAC5D,CAAa,EAAW;QACzC,KAAK6D,CAAAA,eAAe,CAAC7D,CAAC,EAAEqD,6BAA6B,CAACrD,CAAC,CAAC,CAAC,CAAA;OAC5D,CAAA,CAAA;MAAA,eAkCiB,CAAA,sBAAA,CAAA,KAAA,CAAA,EAAA,SAAA,EAAA,UAACA,CAAa,EAAW;EACvC,MAAA,KAAA,CAAK8D,aAAa,CAACT,6BAA6B,CAACrD,CAAC,CAAC,CAAC,CAAA;OACvD,CAAA,CAAA;MAAA,eAgCoB,CAAA,sBAAA,CAAA,KAAA,CAAA,EAAA,YAAA,EAAA,UAACA,CAAa,EAAW;QAC1C,IAAI,CAACA,CAAC,EAAE;EACJ,QAAA,OAAA;EACJ,OAAA;EAEA,MAAA,IAAIA,CAAC,CAAC+D,OAAO,CAAC7V,MAAM,GAAG,CAAC,EAAE;EACtB,QAAA,OAAA;EACJ,OAAA;EAEA,MAAA,IAAMqV,KAAK,GAAGvD,CAAC,CAACgE,cAAc,CAAC,CAAC,CAAC,CAAA;QAEjC,KAAKN,CAAAA,eAAe,CAACJ,wBAAwB,CAACC,KAAK,EAAEvD,CAAC,CAAC,CAAC,CAAA;OAC3D,CAAA,CAAA;MAAA,eAEmB,CAAA,sBAAA,CAAA,KAAA,CAAA,EAAA,WAAA,EAAA,UAACA,CAAa,EAAW;QACzC,IAAI,CAACA,CAAC,EAAE;EACJ,QAAA,OAAA;EACJ,OAAA;EAEA,MAAA,IAAIA,CAAC,CAAC+D,OAAO,CAAC7V,MAAM,GAAG,CAAC,EAAE;EACtB,QAAA,OAAA;EACJ,OAAA;EAEA,MAAA,IAAMqV,KAAK,GAAGvD,CAAC,CAACgE,cAAc,CAAC,CAAC,CAAC,CAAA;QAEjC,KAAKH,CAAAA,eAAe,CAAC7D,CAAC,EAAEsD,wBAAwB,CAACC,KAAK,EAAEvD,CAAC,CAAC,CAAC,CAAA;OAC9D,CAAA,CAAA;MAAA,eAEkB,CAAA,sBAAA,CAAA,KAAA,CAAA,EAAA,UAAA,EAAA,UAACA,CAAa,EAAW;QACxC,IAAI,CAACA,CAAC,EAAE;EACJ,QAAA,OAAA;EACJ,OAAA;EAEA,MAAA,IAAIA,CAAC,CAAC+D,OAAO,CAAC7V,MAAM,GAAG,CAAC,EAAE;EACtB,QAAA,OAAA;EACJ,OAAA;EAEA,MAAA,IAAMqV,KAAK,GAAGvD,CAAC,CAACgE,cAAc,CAAC,CAAC,CAAC,CAAA;QAEjC,KAAKF,CAAAA,aAAa,CAACR,wBAAwB,CAACC,KAAK,EAAEvD,CAAC,CAAC,CAAC,CAAA;OACzD,CAAA,CAAA;EAAA,IAAA,OAAA,KAAA,CAAA;EAAA,GAAA;EAAA,EAAA,YAAA,CAAA,WAAA,EAAA,CAAA;EAAA,IAAA,GAAA,EAAA,MAAA;EAAA,IAAA,KAAA,EA7ND,SAAoB,IAAA,GAAA;QAChB,IAAMzM,OAAO,GAAG,IAAI,CAACyK,GAAG,CAAC3N,GAAG,CAAC,CAAC,CAAC,CAAA;EAE/B,MAAA,IAAIkD,OAAO,EAAE;UACTA,OAAO,CAAC0Q,gBAAgB,CAAC,WAAW,EAAE,IAAI,CAACC,SAAS,EAAE;EAClDC,UAAAA,OAAO,EAAE,KAAA;EACb,SAAC,CAAC,CAAA;UACF5Q,OAAO,CAAC0Q,gBAAgB,CAAC,YAAY,EAAE,IAAI,CAACG,UAAU,EAAE;EACpDD,UAAAA,OAAO,EAAE,KAAA;EACb,SAAC,CAAC,CAAA;EACN,OAAA;QAEA,IAAI,CAACE,cAAc,GAAG,KAAK,CAAA;QAC3B,IAAI,CAACC,eAAe,GAAG,IAAI,CAAA;QAC3B,IAAI,CAACC,eAAe,GAAG,KAAK,CAAA;QAC5B,IAAI,CAACC,aAAa,GAAG,IAAI,CAAA;EAC7B,KAAA;EAAC,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,QAAA;EAAA,IAAA,KAAA,EAED,SAAsB,MAAA,GAAA;QAClB,IAAMjN,EAAE,GAAG,IAAI,CAACyG,GAAG,CAAC3N,GAAG,CAAC,CAAC,CAAC,CAAA;EAE1B,MAAA,IAAIkH,EAAE,EAAE;EACJ;UACCA,EAAE,CAASkN,mBAAmB,CAAC,WAAW,EAAE,IAAI,CAACP,SAAS,EAAE;EACzDC,UAAAA,OAAO,EAAE,KAAA;EACb,SAAC,CAAC,CAAA;;EAEF;UACC5M,EAAE,CAASkN,mBAAmB,CAAC,YAAY,EAAE,IAAI,CAACL,UAAU,EAAE;EAC3DD,UAAAA,OAAO,EAAE,KAAA;EACb,SAAC,CAAC,CAAA;EACN,OAAA;QAEA,IAAI,CAACO,6BAA6B,EAAE,CAAA;EACxC,KAAA;EAAC,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,iBAAA;MAAA,KAyBD,EAAA,SAAA,eAAA,CAAwBtS,YAA0B,EAAW;EACzD;QACA,IAAI,IAAI,CAACiS,cAAc,EAAE;EACrB,QAAA,IAAI,CAACP,aAAa,CAAC1R,YAAY,CAAC,CAAA;EACpC,OAAA;QAEA,IAAI,CAACoS,aAAa,GAAGpS,YAAY,CAAA;EAEjC,MAAA,IAAI,CAAC,IAAI,CAACuS,YAAY,CAACvS,YAAY,CAAC,EAAE;EAClC,QAAA,OAAO,KAAK,CAAA;EAChB,OAAA;QAEA,IAAI,CAACwS,gBAAgB,EAAE,CAAA;EAEvB,MAAA,OAAO,IAAI,CAAA;EACf,KAAA;EAAC,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,kBAAA;EAAA,IAAA,KAAA,EAED,SAAiC,gBAAA,GAAA;QAC7BjJ,QAAQ,CAACsI,gBAAgB,CAAC,WAAW,EAAE,IAAI,CAACY,SAAS,EAAE;EACnDV,QAAAA,OAAO,EAAE,KAAA;EACb,OAAC,CAAC,CAAA;QACFxI,QAAQ,CAACsI,gBAAgB,CAAC,WAAW,EAAE,IAAI,CAACa,SAAS,EAAE;EACnDX,QAAAA,OAAO,EAAE,KAAA;EACb,OAAC,CAAC,CAAA;QACFxI,QAAQ,CAACsI,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAACc,OAAO,EAAE;EAAEZ,QAAAA,OAAO,EAAE,KAAA;EAAM,OAAC,CAAC,CAAA;QACtExI,QAAQ,CAACsI,gBAAgB,CAAC,UAAU,EAAE,IAAI,CAACe,QAAQ,EAAE;EACjDb,QAAAA,OAAO,EAAE,KAAA;EACb,OAAC,CAAC,CAAA;EAEF,MAAA,IAAMc,UAAU,GAAG,IAAI,CAACC,aAAa,EAAE,CAAA;EAEvC,MAAA,IAAID,UAAU,EAAE;EACZ,QAAA,IAAI,CAACE,oBAAoB,CAACF,UAAU,CAAC,CAAA;EACzC,OAAC,MAAM;UACH,IAAI,CAACV,eAAe,GAAG,IAAI,CAAA;EAC/B,OAAA;EACJ,KAAA;EAAC,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,sBAAA;MAAA,KAED,EAAA,SAAA,oBAAA,CAA6BU,UAAkB,EAAQ;EAAA,MAAA,IAAA,MAAA,GAAA,IAAA,CAAA;QACnD,IAAI,IAAI,CAACX,eAAe,EAAE;EACtB9N,QAAAA,YAAY,CAAC,IAAI,CAAC8N,eAAe,CAAC,CAAA;EACtC,OAAA;EAEA,MAAA,IAAI,CAACA,eAAe,GAAGhO,MAAM,CAACC,UAAU,CAAC,YAAM;UAC3C,IAAI,MAAI,CAACiO,aAAa,EAAE;YACpB,MAAI,CAACD,eAAe,GAAG,IAAI,CAAA;EAC/B,SAAA;SACH,EAAEU,UAAU,CAAC,CAAA;QAEd,IAAI,CAACV,eAAe,GAAG,KAAK,CAAA;EAChC,KAAA;EAAC,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,iBAAA;EAAA,IAAA,KAAA,EAMD,SACIvE,eAAAA,CAAAA,CAA0B,EAC1B5N,YAA0B,EACtB;QACJ,IAAI,IAAI,CAACiS,cAAc,EAAE;EACrB,QAAA,IAAI,CAACe,SAAS,CAAChT,YAAY,CAAC,CAAA;UAE5B,IAAI4N,CAAC,CAAC2D,UAAU,EAAE;YACd3D,CAAC,CAAC4D,cAAc,EAAE,CAAA;EACtB,SAAA;EACA,QAAA,OAAA;EACJ,OAAA;EAEA,MAAA,IAAI,CAAC,IAAI,CAACW,eAAe,EAAE;EACvB,QAAA,OAAA;EACJ,OAAA;QAEA,IAAI,IAAI,CAACC,aAAa,EAAE;EACpB,QAAA,IAAI,CAACH,cAAc,GAAG,IAAI,CAACgB,UAAU,CAAC,IAAI,CAACb,aAAa,CAAC,KAAK,KAAK,CAAA;EACvE,OAAA;QAEA,IAAI,IAAI,CAACH,cAAc,EAAE;EACrB,QAAA,IAAI,CAACe,SAAS,CAAChT,YAAY,CAAC,CAAA;UAE5B,IAAI4N,CAAC,CAAC2D,UAAU,EAAE;YACd3D,CAAC,CAAC4D,cAAc,EAAE,CAAA;EACtB,SAAA;EACJ,OAAC,MAAM;EACH,QAAA,IAAI,CAACE,aAAa,CAAC1R,YAAY,CAAC,CAAA;EACpC,OAAA;EACJ,KAAA;EAAC,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,eAAA;MAAA,KAMD,EAAA,SAAA,aAAA,CAAsBA,YAA0B,EAAQ;QACpD,IAAI,CAACsS,6BAA6B,EAAE,CAAA;QACpC,IAAI,CAACH,eAAe,GAAG,KAAK,CAAA;QAC5B,IAAI,CAACC,aAAa,GAAG,IAAI,CAAA;QAEzB,IAAI,IAAI,CAACH,cAAc,EAAE;UACrB,IAAI,CAACA,cAAc,GAAG,KAAK,CAAA;EAC3B,QAAA,IAAI,CAACiB,SAAS,CAAClT,YAAY,CAAC,CAAA;EAChC,OAAA;EACJ,KAAA;EAAC,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,+BAAA;EAAA,IAAA,KAAA,EAED,SAAwC,6BAAA,GAAA;EACpC;QACCuJ,QAAQ,CAAS8I,mBAAmB,CAAC,WAAW,EAAE,IAAI,CAACI,SAAS,EAAE;EAC/DV,QAAAA,OAAO,EAAE,KAAA;EACb,OAAC,CAAC,CAAA;EACF;QACCxI,QAAQ,CAAS8I,mBAAmB,CAAC,WAAW,EAAE,IAAI,CAACK,SAAS,EAAE;EAC/DX,QAAAA,OAAO,EAAE,KAAA;EACb,OAAC,CAAC,CAAA;EACF;QACCxI,QAAQ,CAAS8I,mBAAmB,CAAC,SAAS,EAAE,IAAI,CAACM,OAAO,EAAE;EAC3DZ,QAAAA,OAAO,EAAE,KAAA;EACb,OAAC,CAAC,CAAA;EACF;QACCxI,QAAQ,CAAS8I,mBAAmB,CAAC,UAAU,EAAE,IAAI,CAACO,QAAQ,EAAE;EAC7Db,QAAAA,OAAO,EAAE,KAAA;EACb,OAAC,CAAC,CAAA;EACN,KAAA;EAAC,GAAA,CAAA,CAAA,CAAA;EAAA,EAAA,OAAA,WAAA,CAAA;EAAA,CAAA,CAzL6CjC,YAAY,CAAA;;ECvB/B,IASVqD,gBAAgB,gBAAA,YAAA;EAIjC,EAAA,SAAA,gBAAA,CAAYxT,UAAwB,EAAE;EAAA,IAAA,eAAA,CAAA,IAAA,EAAA,gBAAA,CAAA,CAAA;EAAA,IAAA,eAAA,CAAA,IAAA,EAAA,YAAA,EAAA,KAAA,CAAA,CAAA,CAAA;EAAA,IAAA,eAAA,CAAA,IAAA,EAAA,uBAAA,EAAA,KAAA,CAAA,CAAA,CAAA;MAClC,IAAI,CAACA,UAAU,GAAGA,UAAU,CAAA;EAChC,GAAA;EAAC,EAAA,YAAA,CAAA,gBAAA,EAAA,CAAA;EAAA,IAAA,GAAA,EAAA,WAAA;EAAA,IAAA,KAAA,EAED,SAAyB,SAAA,GAAA;QACrB,IAAMyT,KAAK,GAAG5F,IAAI,CAAC6F,SAAS,CAAC,IAAI,CAACC,QAAQ,EAAE,CAAC,CAAA;EAE7C,MAAA,IAAI,IAAI,CAAC3T,UAAU,CAACU,OAAO,CAACkT,qBAAqB,EAAE;UAC/C,IAAI,CAAC5T,UAAU,CAACU,OAAO,CAACkT,qBAAqB,CAACH,KAAK,CAAC,CAAA;EACxD,OAAC,MAAM,IAAI,IAAI,CAACI,oBAAoB,EAAE,EAAE;UACpCC,YAAY,CAACC,OAAO,CAAC,IAAI,CAACC,UAAU,EAAE,EAAEP,KAAK,CAAC,CAAA;EAClD,OAAA;EACJ,KAAA;EAAC,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,qBAAA;EAAA,IAAA,KAAA,EAED,SAAgD,mBAAA,GAAA;EAC5C,MAAA,IAAMQ,QAAQ,GAAG,IAAI,CAACC,eAAe,EAAE,CAAA;EAEvC,MAAA,IAAID,QAAQ,EAAE;EACV,QAAA,OAAO,IAAI,CAACE,UAAU,CAACF,QAAQ,CAAC,CAAA;EACpC,OAAC,MAAM;EACH,QAAA,OAAO,IAAI,CAAA;EACf,OAAA;EACJ,KAAA;EAAC,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,UAAA;EAAA,IAAA,KAAA,EAED,SAA8B,QAAA,GAAA;EAAA,MAAA,IAAA,KAAA,GAAA,IAAA,CAAA;EAC1B,MAAA,IAAMG,cAAc,GAAG,SAAjBA,cAAc,GAAmB;UACnC,IAAMC,SAAmB,GAAG,EAAE,CAAA;UAE9B,KAAI,CAACrU,UAAU,CAACpE,IAAI,CAACmC,OAAO,CAAC,UAAC/B,IAAU,EAAK;EACzC,UAAA,IAAIA,IAAI,CAACkD,OAAO,IAAIlD,IAAI,CAACuC,EAAE,IAAIvC,IAAI,CAACW,WAAW,EAAE,EAAE;EAC/C0X,YAAAA,SAAS,CAAChY,IAAI,CAACL,IAAI,CAACuC,EAAE,CAAC,CAAA;EAC3B,WAAA;EACA,UAAA,OAAO,IAAI,CAAA;EACf,SAAC,CAAC,CAAA;EAEF,QAAA,OAAO8V,SAAS,CAAA;SACnB,CAAA;EAED,MAAA,IAAMC,kBAAkB,GAAG,SAArBA,kBAAkB,GAAmB;UACvC,IAAMC,eAAyB,GAAG,EAAE,CAAA;UAEpC,KAAI,CAACvU,UAAU,CAACwU,gBAAgB,EAAE,CAAClO,OAAO,CAAC,UAACtK,IAAI,EAAK;EACjD,UAAA,IAAIA,IAAI,CAACuC,EAAE,IAAI,IAAI,EAAE;EACjBgW,YAAAA,eAAe,CAAClY,IAAI,CAACL,IAAI,CAACuC,EAAE,CAAC,CAAA;EACjC,WAAA;EACJ,SAAC,CAAC,CAAA;EAEF,QAAA,OAAOgW,eAAe,CAAA;SACzB,CAAA;QAED,OAAO;UACHE,UAAU,EAAEL,cAAc,EAAE;EAC5BM,QAAAA,aAAa,EAAEJ,kBAAkB,EAAA;SACpC,CAAA;EACL,KAAA;;EAEA;EACJ;EACA;EACA;EACA;EAJI,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,iBAAA;MAAA,KAMA,EAAA,SAAA,eAAA,CAAuBb,KAAiB,EAAW;QAC/C,IAAI,CAACA,KAAK,EAAE;EACR,QAAA,OAAO,KAAK,CAAA;EAChB,OAAC,MAAM;UACH,IAAIkB,gBAAgB,GAAG,KAAK,CAAA;UAE5B,IAAIlB,KAAK,CAACgB,UAAU,EAAE;YAClBE,gBAAgB,GAAG,IAAI,CAACC,gBAAgB,CAACnB,KAAK,CAACgB,UAAU,CAAC,CAAA;EAC9D,SAAA;UAEA,IAAIhB,KAAK,CAACiB,aAAa,EAAE;YACrB,IAAI,CAACG,cAAc,EAAE,CAAA;EACrB,UAAA,IAAI,CAACC,kBAAkB,CAACrB,KAAK,CAACiB,aAAa,CAAC,CAAA;EAChD,SAAA;EAEA,QAAA,OAAOC,gBAAgB,CAAA;EAC3B,OAAA;EACJ,KAAA;EAAC,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,yBAAA;EAAA,IAAA,KAAA,EAED,SACIlB,uBAAAA,CAAAA,KAAiB,EACjBsB,UAAsB,EAClB;EACJ,MAAA,IAAItB,KAAK,EAAE;EACP,QAAA,IAAI,CAACuB,yBAAyB,CAC1BvB,KAAK,CAACgB,UAAU,EAChBhB,KAAK,CAACiB,aAAa,EACnBK,UAAU,CACb,CAAA;EACL,OAAC,MAAM;EACHA,QAAAA,UAAU,EAAE,CAAA;EAChB,OAAA;EACJ,KAAA;EAAC,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,uBAAA;EAAA,IAAA,KAAA,EAED,SAA8C,qBAAA,GAAA;EAC1C,MAAA,IAAMtB,KAAK,GAAG,IAAI,CAACwB,mBAAmB,EAAE,CAAA;EAExC,MAAA,IAAIxB,KAAK,IAAIA,KAAK,CAACiB,aAAa,EAAE;EAC9B,QAAA,OAAOjB,KAAK,CAACiB,aAAa,CAAC,CAAC,CAAC,CAAA;EACjC,OAAC,MAAM;EACH,QAAA,OAAO,IAAI,CAAA;EACf,OAAA;EACJ,KAAA;EAAC,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,YAAA;MAAA,KAED,EAAA,SAAA,UAAA,CAAmBT,QAAgB,EAAc;EAC7C,MAAA,IAAMR,KAAK,GAAG5F,IAAI,CAACC,KAAK,CAACmG,QAAQ,CAA4B,CAAA;;EAE7D;EACA,MAAA,IAAIR,KAAK,IAAIA,KAAK,CAACiB,aAAa,IAAIxM,KAAK,CAACuL,KAAK,CAACiB,aAAa,CAAC,EAAE;EAC5D;EACAjB,QAAAA,KAAK,CAACiB,aAAa,GAAG,CAACjB,KAAK,CAACiB,aAAa,CAAC,CAAA;EAC/C,OAAA;EAEA,MAAA,OAAOjB,KAAK,CAAA;EAChB,KAAA;EAAC,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,iBAAA;EAAA,IAAA,KAAA,EAED,SAAyC,eAAA,GAAA;EACrC,MAAA,IAAI,IAAI,CAACzT,UAAU,CAACU,OAAO,CAACwU,qBAAqB,EAAE;EAC/C,QAAA,OAAO,IAAI,CAAClV,UAAU,CAACU,OAAO,CAACwU,qBAAqB,EAAE,CAAA;EAC1D,OAAC,MAAM,IAAI,IAAI,CAACrB,oBAAoB,EAAE,EAAE;UACpC,OAAOC,YAAY,CAACqB,OAAO,CAAC,IAAI,CAACnB,UAAU,EAAE,CAAC,CAAA;EAClD,OAAC,MAAM;EACH,QAAA,OAAO,IAAI,CAAA;EACf,OAAA;EACJ,KAAA;EAAC,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,kBAAA;MAAA,KAED,EAAA,SAAA,gBAAA,CAAyBoB,OAAiB,EAAW;QACjD,IAAIT,gBAAgB,GAAG,KAAK,CAAA;EAAC,MAAA,IAAA,SAAA,GAAA,0BAAA,CAERS,OAAO,CAAA;EAAA,QAAA,KAAA,CAAA;EAAA,MAAA,IAAA;UAA5B,KAA8B,SAAA,CAAA,CAAA,EAAA,EAAA,CAAA,CAAA,KAAA,GAAA,SAAA,CAAA,CAAA,EAAA,EAAA,IAAA,GAAA;EAAA,UAAA,IAAnB/W,MAAM,GAAA,KAAA,CAAA,KAAA,CAAA;YACb,IAAMrC,IAAI,GAAG,IAAI,CAACgE,UAAU,CAACqV,WAAW,CAAChX,MAAM,CAAC,CAAA;EAEhD,UAAA,IAAIrC,IAAI,EAAE;EACN,YAAA,IAAI,CAACA,IAAI,CAACV,cAAc,EAAE;gBACtBU,IAAI,CAACkD,OAAO,GAAG,IAAI,CAAA;EACvB,aAAC,MAAM;EACHyV,cAAAA,gBAAgB,GAAG,IAAI,CAAA;EAC3B,aAAA;EACJ,WAAA;EACJ,SAAA;EAAC,OAAA,CAAA,OAAA,GAAA,EAAA;EAAA,QAAA,SAAA,CAAA,CAAA,CAAA,GAAA,CAAA,CAAA;EAAA,OAAA,SAAA;EAAA,QAAA,SAAA,CAAA,CAAA,EAAA,CAAA;EAAA,OAAA;EAED,MAAA,OAAOA,gBAAgB,CAAA;EAC3B,KAAA;EAAC,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,oBAAA;MAAA,KAED,EAAA,SAAA,kBAAA,CAA2BS,OAAiB,EAAW;QACnD,IAAIE,WAAW,GAAG,CAAC,CAAA;EAAC,MAAA,IAAA,UAAA,GAAA,0BAAA,CAECF,OAAO,CAAA;EAAA,QAAA,MAAA,CAAA;EAAA,MAAA,IAAA;UAA5B,KAA8B,UAAA,CAAA,CAAA,EAAA,EAAA,CAAA,CAAA,MAAA,GAAA,UAAA,CAAA,CAAA,EAAA,EAAA,IAAA,GAAA;EAAA,UAAA,IAAnB/W,MAAM,GAAA,MAAA,CAAA,KAAA,CAAA;YACb,IAAMrC,IAAI,GAAG,IAAI,CAACgE,UAAU,CAACqV,WAAW,CAAChX,MAAM,CAAC,CAAA;EAEhD,UAAA,IAAIrC,IAAI,EAAE;EACNsZ,YAAAA,WAAW,IAAI,CAAC,CAAA;cAEhB,IAAI,CAACtV,UAAU,CAACkK,iBAAiB,CAACqL,cAAc,CAACvZ,IAAI,CAAC,CAAA;EAC1D,WAAA;EACJ,SAAA;EAAC,OAAA,CAAA,OAAA,GAAA,EAAA;EAAA,QAAA,UAAA,CAAA,CAAA,CAAA,GAAA,CAAA,CAAA;EAAA,OAAA,SAAA;EAAA,QAAA,UAAA,CAAA,CAAA,EAAA,CAAA;EAAA,OAAA;QAED,OAAOsZ,WAAW,KAAK,CAAC,CAAA;EAC5B,KAAA;EAAC,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,gBAAA;EAAA,IAAA,KAAA,EAED,SAA+B,cAAA,GAAA;EAC3B,MAAA,IAAMpL,iBAAiB,GAAG,IAAI,CAAClK,UAAU,CAACkK,iBAAiB,CAAA;EAE3D,MAAA,IAAMsL,aAAa,GAAGtL,iBAAiB,CAACsK,gBAAgB,EAAE,CAAA;EAE1DgB,MAAAA,aAAa,CAAClP,OAAO,CAAC,UAACtK,IAAI,EAAK;EAC5BkO,QAAAA,iBAAiB,CAACuL,mBAAmB,CAACzZ,IAAI,CAAC,CAAA;EAC/C,OAAC,CAAC,CAAA;EACN,KAAA;EAAC,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,2BAAA;EAAA,IAAA,KAAA,EAED,mCACI0Z,YAAsB,EACtBF,aAAuB,EACvBT,UAAsB,EAClB;EAAA,MAAA,IAAA,MAAA,GAAA,IAAA,CAAA;QACJ,IAAIY,YAAY,GAAG,CAAC,CAAA;QACpB,IAAIP,OAAO,GAAGM,YAAY,CAAA;EAE1B,MAAA,IAAMrB,SAAS,GAAG,SAAZA,SAAS,GAAe;UAC1B,IAAMuB,WAAW,GAAG,EAAE,CAAA;EAAC,QAAA,IAAA,UAAA,GAAA,0BAAA,CAEFR,OAAO,CAAA;EAAA,UAAA,MAAA,CAAA;EAAA,QAAA,IAAA;YAA5B,KAA8B,UAAA,CAAA,CAAA,EAAA,EAAA,CAAA,CAAA,MAAA,GAAA,UAAA,CAAA,CAAA,EAAA,EAAA,IAAA,GAAA;EAAA,YAAA,IAAnB/W,MAAM,GAAA,MAAA,CAAA,KAAA,CAAA;cACb,IAAMrC,IAAI,GAAG,MAAI,CAACgE,UAAU,CAACqV,WAAW,CAAChX,MAAM,CAAC,CAAA;cAEhD,IAAI,CAACrC,IAAI,EAAE;EACP4Z,cAAAA,WAAW,CAACvZ,IAAI,CAACgC,MAAM,CAAC,CAAA;EAC5B,aAAC,MAAM;EACH,cAAA,IAAI,CAACrC,IAAI,CAAC2P,UAAU,EAAE;kBAClB,IAAI3P,IAAI,CAACV,cAAc,EAAE;oBACrBua,eAAe,CAAC7Z,IAAI,CAAC,CAAA;EACzB,iBAAC,MAAM;oBACH,MAAI,CAACgE,UAAU,CAACmE,SAAS,CAACnI,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,CAAA;EAChD,iBAAA;EACJ,eAAA;EACJ,aAAA;EACJ,WAAA;EAAC,SAAA,CAAA,OAAA,GAAA,EAAA;EAAA,UAAA,UAAA,CAAA,CAAA,CAAA,GAAA,CAAA,CAAA;EAAA,SAAA,SAAA;EAAA,UAAA,UAAA,CAAA,CAAA,EAAA,CAAA;EAAA,SAAA;EAEDoZ,QAAAA,OAAO,GAAGQ,WAAW,CAAA;EAErB,QAAA,IAAI,MAAI,CAACd,kBAAkB,CAACU,aAAa,CAAC,EAAE;EACxC,UAAA,MAAI,CAACxV,UAAU,CAAC8E,gBAAgB,CAAC,IAAI,CAAC,CAAA;EAC1C,SAAA;UAEA,IAAI6Q,YAAY,KAAK,CAAC,EAAE;EACpBZ,UAAAA,UAAU,EAAE,CAAA;EAChB,SAAA;SACH,CAAA;EAED,MAAA,IAAMc,eAAe,GAAG,SAAlBA,eAAe,CAAI7Z,IAAU,EAAW;EAC1C2Z,QAAAA,YAAY,IAAI,CAAC,CAAA;UACjB,MAAI,CAAC3V,UAAU,CAACmE,SAAS,CAACnI,IAAI,EAAE,KAAK,EAAE,YAAM;EACzC2Z,UAAAA,YAAY,IAAI,CAAC,CAAA;EACjBtB,UAAAA,SAAS,EAAE,CAAA;EACf,SAAC,CAAC,CAAA;SACL,CAAA;EAEDA,MAAAA,SAAS,EAAE,CAAA;EACf,KAAA;EAAC,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,YAAA;EAAA,IAAA,KAAA,EAED,SAA6B,UAAA,GAAA;QACzB,IAAI,OAAO,IAAI,CAACrU,UAAU,CAACU,OAAO,CAACoV,SAAS,KAAK,QAAQ,EAAE;EACvD,QAAA,OAAO,IAAI,CAAC9V,UAAU,CAACU,OAAO,CAACoV,SAAS,CAAA;EAC5C,OAAC,MAAM;EACH,QAAA,OAAO,MAAM,CAAA;EACjB,OAAA;EACJ,KAAA;EAAC,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,sBAAA;EAAA,IAAA,KAAA,EAED,SAAwC,oBAAA,GAAA;EACpC,MAAA,IAAMC,WAAW,GAAG,SAAdA,WAAW,GAAkB;EAC/B;UACA,IAAIjC,YAAY,IAAI,IAAI,EAAE;EACtB,UAAA,OAAO,KAAK,CAAA;EAChB,SAAC,MAAM;EACH;YACA,IAAI;cACA,IAAMjY,GAAG,GAAG,eAAe,CAAA;EAC3Bma,YAAAA,cAAc,CAACjC,OAAO,CAAClY,GAAG,EAAE,OAAO,CAAC,CAAA;EACpCma,YAAAA,cAAc,CAACC,UAAU,CAACpa,GAAG,CAAC,CAAA;aACjC,CAAC,OAAO2R,KAAK,EAAE;EACZ,YAAA,OAAO,KAAK,CAAA;EAChB,WAAA;EAEA,UAAA,OAAO,IAAI,CAAA;EACf,SAAA;SACH,CAAA;EAED,MAAA,IAAI,IAAI,CAAC0I,qBAAqB,IAAI,IAAI,EAAE;EACpC,QAAA,IAAI,CAACA,qBAAqB,GAAGH,WAAW,EAAE,CAAA;EAC9C,OAAA;QAEA,OAAO,IAAI,CAACG,qBAAqB,CAAA;EACrC,KAAA;EAAC,GAAA,CAAA,CAAA,CAAA;EAAA,EAAA,OAAA,gBAAA,CAAA;EAAA,CAAA,EAAA;;MCvQgBC,aAAa,gBAAA,YAAA;EAO9B,EAAA,SAAA,aAAA,CAAYnW,UAAwB,EAAE;EAAA,IAAA,eAAA,CAAA,IAAA,EAAA,aAAA,CAAA,CAAA;EAAA,IAAA,eAAA,CAAA,IAAA,EAAA,YAAA,EAAA,KAAA,CAAA,CAAA,CAAA;EAAA,IAAA,eAAA,CAAA,IAAA,EAAA,aAAA,EAAA,KAAA,CAAA,CAAA,CAAA;EAAA,IAAA,eAAA,CAAA,IAAA,EAAA,eAAA,EAAA,KAAA,CAAA,CAAA,CAAA;EAAA,IAAA,eAAA,CAAA,IAAA,EAAA,eAAA,EAAA,KAAA,CAAA,CAAA,CAAA;EAAA,IAAA,eAAA,CAAA,IAAA,EAAA,iBAAA,EAAA,KAAA,CAAA,CAAA,CAAA;MAClC,IAAI,CAACA,UAAU,GAAGA,UAAU,CAAA;EAC5B,IAAA,IAAI,CAAC8G,WAAW,GAAG,CAAC,CAAC,CAAA;MACrB,IAAI,CAACsP,aAAa,GAAG,KAAK,CAAA;EAC9B,GAAA;EAAC,EAAA,YAAA,CAAA,aAAA,EAAA,CAAA;EAAA,IAAA,GAAA,EAAA,gBAAA;EAAA,IAAA,KAAA,EAED,SAA8B,cAAA,GAAA;QAC1B,IAAI,CAACC,UAAU,EAAE,CAAA;QACjB,IAAI,CAACC,sBAAsB,EAAE,CAAA;QAC7B,IAAI,CAACC,wBAAwB,EAAE,CAAA;EACnC,KAAA;EAAC,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,WAAA;MAAA,KAED,EAAA,SAAA,SAAA,CAAiBlV,GAAW,EAAQ;QAChC,IAAI,CAACgV,UAAU,EAAE,CAAA;QAEjB,IAAI,IAAI,CAACG,aAAa,EAAE;UACpB,IAAI,CAACA,aAAa,CAAC,CAAC,CAAC,CAACC,SAAS,GAAGpV,GAAG,CAAA;EACzC,OAAC,MAAM;UACH,IAAMF,MAAM,GAAG,IAAI,CAACnB,UAAU,CAACiM,GAAG,CAAC9K,MAAM,EAAE,CAAA;UAC3C,IAAMuV,OAAO,GAAGvV,MAAM,GAAGA,MAAM,CAACE,GAAG,GAAG,CAAC,CAAA;UAEvCd,MAAM,CAACqJ,QAAQ,CAAC,CAAC6M,SAAS,CAACpV,GAAG,GAAGqV,OAAO,CAAC,CAAA;EAC7C,OAAA;EACJ,KAAA;EAAC,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,oBAAA;MAAA,KAED,EAAA,SAAA,kBAAA,CAA0BpW,QAAgB,EAAW;QACjD,IAAI,CAAC+V,UAAU,EAAE,CAAA;EAEjB,MAAA,IAAIM,aAAqB,CAAA;EACzB,MAAA,IAAIC,UAAkB,CAAA;EACtB,MAAA,IAAIC,UAAkB,CAAA;EACtB,MAAA,IAAIC,OAAe,CAAA;EAEnB,MAAA,IAAMC,QAAQ,GAAGzW,QAAQ,CAACoF,MAAM,EAAE,IAAI,CAAC,CAAA;QAEvC,IAAI,IAAI,CAAC8Q,aAAa,EAAE;EACpBM,QAAAA,OAAO,GAAG,CAAC,CAAA;UACXF,UAAU,GAAG,IAAI,CAACJ,aAAa,CAAC9Q,MAAM,EAAE,IAAI,CAAC,CAAA;EAE7C,QAAA,IAAMvE,MAAM,GAAGb,QAAQ,CAACa,MAAM,EAAE,CAAA;UAChC,IAAM6V,WAAW,GAAG7V,MAAM,GAAGA,MAAM,CAACE,GAAG,GAAG,CAAC,CAAA;EAE3CwV,QAAAA,UAAU,GAAGG,WAAW,GAAG,IAAI,CAACC,eAAe,CAAA;UAC/CN,aAAa,GAAGE,UAAU,GAAGE,QAAQ,CAAA;EACzC,OAAC,MAAM;UACHD,OAAO,GAAGvW,MAAM,CAACgE,MAAM,CAAC,CAACkS,SAAS,EAAE,IAAI,CAAC,CAAA;UAEzC,IAAMS,YAAY,GAAG3W,MAAM,CAACgE,MAAM,CAAC,CAACmB,MAAM,EAAE,IAAI,CAAC,CAAA;UACjDkR,UAAU,GAAGE,OAAO,GAAGI,YAAY,CAAA;EAEnC,QAAA,IAAM/V,OAAM,GAAGb,QAAQ,CAACa,MAAM,EAAE,CAAA;EAEhC0V,QAAAA,UAAU,GAAG1V,OAAM,GAAGA,OAAM,CAACE,GAAG,GAAG,CAAC,CAAA;UACpCsV,aAAa,GAAGE,UAAU,GAAGE,QAAQ,CAAA;EACzC,OAAA;EAEA,MAAA,OAAOJ,aAAa,IAAIC,UAAU,IAAIC,UAAU,IAAIC,OAAO,CAAA;EAC/D,KAAA;EAAC,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,eAAA;EAAA,IAAA,KAAA,EAED,SAA+B,aAAA,GAAA;EAC3B,MAAA,IAAI,CAAC,IAAI,CAACN,aAAa,EAAE;EACrB,QAAA,OAAO,CAAC,CAAA;EACZ,OAAC,MAAM;EACH,QAAA,OAAO,IAAI,CAACA,aAAa,CAACW,UAAU,EAAE,IAAI,CAAC,CAAA;EAC/C,OAAA;EACJ,KAAA;EAAC,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,kBAAA;EAAA,IAAA,KAAA,EAED,SAAiC,gBAAA,GAAA;EAAA,MAAA,IAAA,KAAA,GAAA,IAAA,CAAA;EAC7B,MAAA,IAAMC,qBAAqB,GAAG,SAAxBA,qBAAqB,GAAwB;EAC/C,QAAA,IAAMC,aAAa,GAAG,CAAC,UAAU,EAAE,YAAY,CAAC,CAAA;EAEhD,QAAA,IAAMC,WAAW,GAAG,SAAdA,WAAW,CAAIrL,GAAW,EAAc;EAC1C,UAAA,KAAA,IAAA,EAAA,GAAA,CAAA,EAAA,cAAA,GAAmBoL,aAAa,EAAE,EAAA,GAAA,cAAA,CAAA,MAAA,EAAA,EAAA,EAAA,EAAA;EAA7B,YAAA,IAAME,IAAI,GAAA,cAAA,CAAA,EAAA,CAAA,CAAA;EACX,YAAA,IAAMC,aAAa,GAAGvL,GAAG,CAACjE,GAAG,CAACuP,IAAI,CAAC,CAAA;EACnC,YAAA,IACIC,aAAa,KAAK,MAAM,IACxBA,aAAa,KAAK,QAAQ,EAC5B;EACE,cAAA,OAAO,IAAI,CAAA;EACf,aAAA;EACJ,WAAA;EAEA,UAAA,OAAO,KAAK,CAAA;WACf,CAAA;UAED,IAAIF,WAAW,CAAC,KAAI,CAACtX,UAAU,CAACiM,GAAG,CAAC,EAAE;EAClC,UAAA,OAAO,KAAI,CAACjM,UAAU,CAACiM,GAAG,CAAA;EAC9B,SAAA;UAAC,IAEgB,SAAA,GAAA,0BAAA,CAAA,KAAI,CAACjM,UAAU,CAACiM,GAAG,CAACwL,OAAO,EAAE,CAACnZ,GAAG,EAAE,CAAA;EAAA,UAAA,KAAA,CAAA;EAAA,QAAA,IAAA;YAApD,KAAsD,SAAA,CAAA,CAAA,EAAA,EAAA,CAAA,CAAA,KAAA,GAAA,SAAA,CAAA,CAAA,EAAA,EAAA,IAAA,GAAA;EAAA,YAAA,IAA3CkH,EAAE,GAAA,KAAA,CAAA,KAAA,CAAA;EACT,YAAA,IAAMyG,GAAG,GAAG1L,MAAM,CAACiF,EAAE,CAAC,CAAA;EACtB,YAAA,IAAI8R,WAAW,CAACrL,GAAG,CAAC,EAAE;EAClB,cAAA,OAAOA,GAAG,CAAA;EACd,aAAA;EACJ,WAAA;EAAC,SAAA,CAAA,OAAA,GAAA,EAAA;EAAA,UAAA,SAAA,CAAA,CAAA,CAAA,GAAA,CAAA,CAAA;EAAA,SAAA,SAAA;EAAA,UAAA,SAAA,CAAA,CAAA,EAAA,CAAA;EAAA,SAAA;EAED,QAAA,OAAO,IAAI,CAAA;SACd,CAAA;EAED,MAAA,IAAMyL,yBAAyB,GAAG,SAA5BA,yBAAyB,GAAe;UAC1C,KAAI,CAACT,eAAe,GAAG,CAAC,CAAA;UACxB,KAAI,CAACT,aAAa,GAAG,IAAI,CAAA;SAC5B,CAAA;EAED,MAAA,IAAI,IAAI,CAACxW,UAAU,CAACiM,GAAG,CAACjE,GAAG,CAAC,UAAU,CAAC,KAAK,OAAO,EAAE;EACjD0P,QAAAA,yBAAyB,EAAE,CAAA;EAC/B,OAAA;QAEA,IAAMlB,aAAa,GAAGY,qBAAqB,EAAE,CAAA;EAE7C,MAAA,IACIZ,aAAa,IACbA,aAAa,CAACra,MAAM,IACpBqa,aAAa,CAAC,CAAC,CAAC,CAACmB,OAAO,KAAK,MAAM,EACrC;UACE,IAAI,CAACnB,aAAa,GAAGA,aAAa,CAAA;EAElC,QAAA,IAAMrV,MAAM,GAAG,IAAI,CAACqV,aAAa,CAACrV,MAAM,EAAE,CAAA;UAC1C,IAAI,CAAC8V,eAAe,GAAG9V,MAAM,GAAGA,MAAM,CAACE,GAAG,GAAG,CAAC,CAAA;EAClD,OAAC,MAAM;EACHqW,QAAAA,yBAAyB,EAAE,CAAA;EAC/B,OAAA;QAEA,IAAI,CAACtB,aAAa,GAAG,IAAI,CAAA;EAC7B,KAAA;EAAC,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,YAAA;EAAA,IAAA,KAAA,EAED,SAA2B,UAAA,GAAA;EACvB,MAAA,IAAI,CAAC,IAAI,CAACA,aAAa,EAAE;UACrB,IAAI,CAACwB,gBAAgB,EAAE,CAAA;EAC3B,OAAA;EACJ,KAAA;EAAC,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,yCAAA;MAAA,KAED,EAAA,SAAA,uCAAA,CAAgDhW,IAAa,EAAQ;QACjE,IAAMiW,YAAY,GAAG,IAAI,CAACrB,aAAa,IAAI,IAAI,CAACA,aAAa,CAAC,CAAC,CAAC,CAAA;QAEhE,IAAI,CAACqB,YAAY,EAAE;EACf,QAAA,OAAA;EACJ,OAAA;EAEA,MAAA,IAAMC,cAAc,GAChB,IAAI,CAACb,eAAe,GAAGY,YAAY,CAACE,YAAY,GAAGnW,IAAI,CAACsB,MAAM,CAAA;QAElE,IAAI4U,cAAc,GAAG,EAAE,EAAE;UACrBD,YAAY,CAACpB,SAAS,IAAI,EAAE,CAAA;EAC5B,QAAA,IAAI,CAACzW,UAAU,CAACgY,eAAe,EAAE,CAAA;EACjC,QAAA,IAAI,CAAClR,WAAW,GAAG,CAAC,CAAC,CAAA;SACxB,MAAM,IAAIlF,IAAI,CAACP,GAAG,GAAG,IAAI,CAAC4V,eAAe,GAAG,EAAE,EAAE;UAC7CY,YAAY,CAACpB,SAAS,IAAI,EAAE,CAAA;EAC5B,QAAA,IAAI,CAACzW,UAAU,CAACgY,eAAe,EAAE,CAAA;EACjC,QAAA,IAAI,CAAClR,WAAW,GAAG,CAAC,CAAC,CAAA;EACzB,OAAA;EACJ,KAAA;EAAC,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,qCAAA;MAAA,KAED,EAAA,SAAA,mCAAA,CAA4ClF,IAAa,EAAQ;QAC7D,IAAM6U,SAAS,GAAGlW,MAAM,CAACqJ,QAAQ,CAAC,CAAC6M,SAAS,EAAE,IAAI,CAAC,CAAA;EACnD,MAAA,IAAMwB,WAAW,GAAGrW,IAAI,CAACP,GAAG,GAAGoV,SAAS,CAAA;QAExC,IAAIwB,WAAW,GAAG,EAAE,EAAE;UAClB1X,MAAM,CAACqJ,QAAQ,CAAC,CAAC6M,SAAS,CAACA,SAAS,GAAG,EAAE,CAAC,CAAA;EAC9C,OAAC,MAAM;UACH,IAAMS,YAAY,GAAG3W,MAAM,CAACgE,MAAM,CAAC,CAACmB,MAAM,EAAE,IAAI,CAAC,CAAA;UAEjD,IAAIwR,YAAY,IAAItV,IAAI,CAACsB,MAAM,GAAGuT,SAAS,CAAC,GAAG,EAAE,EAAE;YAC/ClW,MAAM,CAACqJ,QAAQ,CAAC,CAAC6M,SAAS,CAACA,SAAS,GAAG,EAAE,CAAC,CAAA;EAC9C,SAAA;EACJ,OAAA;EACJ,KAAA;EAAC,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,wBAAA;EAAA,IAAA,KAAA,EAED,SAAuC,sBAAA,GAAA;QACnC,IAAMxW,WAAW,GAAG,IAAI,CAACD,UAAU,CAACkY,UAAU,CAACjY,WAAW,CAAA;QAE1D,IAAIA,WAAW,IAAIA,WAAW,CAACoB,GAAG,KAAK,IAAI,CAACyF,WAAW,EAAE;EACrD,QAAA,IAAI,CAACA,WAAW,GAAG7G,WAAW,CAACoB,GAAG,CAAA;UAElC,IAAI,IAAI,CAACmV,aAAa,EAAE;EACpB,UAAA,IAAI,CAAC2B,uCAAuC,CAAClY,WAAW,CAAC,CAAA;EAC7D,SAAC,MAAM;EACH,UAAA,IAAI,CAACmY,mCAAmC,CAACnY,WAAW,CAAC,CAAA;EACzD,SAAA;EACJ,OAAA;EACJ,KAAA;EAAC,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,0BAAA;EAAA,IAAA,KAAA,EAED,SAAyC,wBAAA,GAAA;QACrC,IAAMI,YAAY,GAAG,IAAI,CAACL,UAAU,CAACkY,UAAU,CAAC7X,YAAY,CAAA;QAE5D,IAAI,CAACA,YAAY,EAAE;EACf,QAAA,OAAA;EACJ,OAAA;QAEA,IAAI,IAAI,CAACmW,aAAa,EAAE;EACpB,QAAA,IAAI,CAAC6B,mCAAmC,CAAChY,YAAY,CAAC,CAAA;EAC1D,OAAC,MAAM;EACH,QAAA,IAAI,CAACiY,qCAAqC,CAACjY,YAAY,CAAC,CAAA;EAC5D,OAAA;EACJ,KAAA;EAAC,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,qCAAA;MAAA,KAED,EAAA,SAAA,mCAAA,CACIA,YAA0B,EACtB;QACJ,IACIA,YAAY,CAACU,KAAK,KAAKC,SAAS,IAChCX,YAAY,CAACY,KAAK,KAAKD,SAAS,EAClC;EACE,QAAA,OAAA;EACJ,OAAA;EAEA,MAAA,IAAMwV,aAAa,GAAG,IAAI,CAACA,aAAa,CAAA;EACxC,MAAA,IAAM+B,kBAAkB,GAAG/B,aAAa,IAAIA,aAAa,CAACrV,MAAM,EAAE,CAAA;EAElE,MAAA,IAAI,EAAEqV,aAAa,IAAI+B,kBAAkB,CAAC,EAAE;EACxC,QAAA,OAAA;EACJ,OAAA;EAEA,MAAA,IAAMV,YAAY,GAAGrB,aAAa,CAAC,CAAC,CAAC,CAAA;EAErC,MAAA,IAAMgC,cAAc,GAChBX,YAAY,CAACV,UAAU,GAAGU,YAAY,CAACY,WAAW,GAClDZ,YAAY,CAACa,WAAW,CAAA;EAC5B,MAAA,IAAMC,aAAa,GAAGd,YAAY,CAACV,UAAU,GAAG,CAAC,CAAA;QAEjD,IAAMyB,SAAS,GAAGL,kBAAkB,CAACnX,IAAI,GAAGyW,YAAY,CAACY,WAAW,CAAA;EACpE,MAAA,IAAMI,QAAQ,GAAGN,kBAAkB,CAACnX,IAAI,CAAA;QACxC,IAAM0X,eAAe,GAAGzY,YAAY,CAACU,KAAK,GAAG6X,SAAS,GAAG,EAAE,CAAA;QAC3D,IAAMG,cAAc,GAAG1Y,YAAY,CAACU,KAAK,GAAG8X,QAAQ,GAAG,EAAE,CAAA;QAEzD,IAAIC,eAAe,IAAIN,cAAc,EAAE;EACnCX,QAAAA,YAAY,CAACV,UAAU,GAAG9P,IAAI,CAACC,GAAG,CAC9BuQ,YAAY,CAACV,UAAU,GAAG,EAAE,EAC5BU,YAAY,CAACa,WAAW,CAC3B,CAAA;EACL,OAAC,MAAM,IAAIK,cAAc,IAAIJ,aAAa,EAAE;EACxCd,QAAAA,YAAY,CAACV,UAAU,GAAG9P,IAAI,CAAC2R,GAAG,CAACnB,YAAY,CAACV,UAAU,GAAG,EAAE,EAAE,CAAC,CAAC,CAAA;EACvE,OAAA;EACJ,KAAA;EAAC,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,uCAAA;MAAA,KAED,EAAA,SAAA,qCAAA,CACI9W,YAA0B,EACtB;QACJ,IACIA,YAAY,CAACU,KAAK,KAAKC,SAAS,IAChCX,YAAY,CAACY,KAAK,KAAKD,SAAS,EAClC;EACE,QAAA,OAAA;EACJ,OAAA;EAEA,MAAA,IAAMiY,SAAS,GAAG1Y,MAAM,CAACqJ,QAAQ,CAAC,CAAA;EAElC,MAAA,IAAMuN,UAAU,GAAG8B,SAAS,CAAC9B,UAAU,EAAE,IAAI,CAAC,CAAA;QAC9C,IAAM+B,WAAW,GAAG3Y,MAAM,CAACgE,MAAM,CAAC,CAACkB,KAAK,EAAE,IAAI,CAAC,CAAA;EAE/C,MAAA,IAAMkT,aAAa,GAAGxB,UAAU,GAAG,CAAC,CAAA;QAEpC,IAAM2B,eAAe,GAAGzY,YAAY,CAACU,KAAK,GAAGmY,WAAW,GAAG,EAAE,CAAA;QAC7D,IAAMH,cAAc,GAAG1Y,YAAY,CAACU,KAAK,GAAGoW,UAAU,GAAG,EAAE,CAAA;EAE3D,MAAA,IAAI2B,eAAe,EAAE;EACjBG,QAAAA,SAAS,CAAC9B,UAAU,CAACA,UAAU,GAAG,EAAE,CAAC,CAAA;EACzC,OAAC,MAAM,IAAI4B,cAAc,IAAIJ,aAAa,EAAE;EACxCM,QAAAA,SAAS,CAAC9B,UAAU,CAAC9P,IAAI,CAAC2R,GAAG,CAAC7B,UAAU,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,CAAA;EACtD,OAAA;EACJ,KAAA;EAAC,GAAA,CAAA,CAAA,CAAA;EAAA,EAAA,OAAA,aAAA,CAAA;EAAA,CAAA,EAAA;;MC3QgBgC,iBAAiB,gBAAA,YAAA;EAKlC,EAAA,SAAA,iBAAA,CAAYnZ,UAAwB,EAAE;EAAA,IAAA,eAAA,CAAA,IAAA,EAAA,iBAAA,CAAA,CAAA;EAAA,IAAA,eAAA,CAAA,IAAA,EAAA,YAAA,EAAA,KAAA,CAAA,CAAA,CAAA;EAAA,IAAA,eAAA,CAAA,IAAA,EAAA,eAAA,EAAA,KAAA,CAAA,CAAA,CAAA;EAAA,IAAA,eAAA,CAAA,IAAA,EAAA,oBAAA,EAAA,KAAA,CAAA,CAAA,CAAA;MAClC,IAAI,CAACA,UAAU,GAAGA,UAAU,CAAA;EAC5B,IAAA,IAAI,CAACwV,aAAa,GAAG,IAAI4D,GAAG,EAAU,CAAA;MACtC,IAAI,CAAC5W,KAAK,EAAE,CAAA;EAChB,GAAA;EAAC,EAAA,YAAA,CAAA,iBAAA,EAAA,CAAA;EAAA,IAAA,GAAA,EAAA,iBAAA;EAAA,IAAA,KAAA,EAED,SAAuC,eAAA,GAAA;EACnC,MAAA,IAAMgT,aAAa,GAAG,IAAI,CAAChB,gBAAgB,EAAE,CAAA;QAE7C,IAAIgB,aAAa,CAACrZ,MAAM,EAAE;UACtB,OAAOqZ,aAAa,CAAC,CAAC,CAAC,CAAA;EAC3B,OAAC,MAAM;EACH,QAAA,OAAO,KAAK,CAAA;EAChB,OAAA;EACJ,KAAA;EAAC,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,kBAAA;EAAA,IAAA,KAAA,EAED,SAAkC,gBAAA,GAAA;EAAA,MAAA,IAAA,KAAA,GAAA,IAAA,CAAA;QAC9B,IAAI,IAAI,CAAC6D,kBAAkB,EAAE;EACzB,QAAA,OAAO,CAAC,IAAI,CAACA,kBAAkB,CAAC,CAAA;EACpC,OAAC,MAAM;UACH,IAAM7D,aAAqB,GAAG,EAAE,CAAA;EAEhC,QAAA,IAAI,CAACA,aAAa,CAAClP,OAAO,CAAC,UAAC/H,EAAE,EAAK;YAC/B,IAAMvC,IAAI,GAAG,KAAI,CAACgE,UAAU,CAACqV,WAAW,CAAC9W,EAAE,CAAC,CAAA;EAC5C,UAAA,IAAIvC,IAAI,EAAE;EACNwZ,YAAAA,aAAa,CAACnZ,IAAI,CAACL,IAAI,CAAC,CAAA;EAC5B,WAAA;EACJ,SAAC,CAAC,CAAA;EAEF,QAAA,OAAOwZ,aAAa,CAAA;EACxB,OAAA;EACJ,KAAA;EAAC,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,uBAAA;MAAA,KAED,EAAA,SAAA,qBAAA,CAA6B/Z,MAAY,EAAU;QAC/C,IAAI,IAAI,CAAC4d,kBAAkB,EAAE;UACzB,IAAI5d,MAAM,CAAC0B,UAAU,CAAC,IAAI,CAACkc,kBAAkB,CAAC,EAAE;EAC5C,UAAA,OAAO,CAAC,IAAI,CAACA,kBAAkB,CAAC,CAAA;EACpC,SAAC,MAAM;EACH,UAAA,OAAO,EAAE,CAAA;EACb,SAAA;EACJ,OAAC,MAAM;UACH,IAAM7D,aAAa,GAAG,EAAE,CAAA;EAExB,QAAA,KAAK,IAAMjX,EAAE,IAAI,IAAI,CAACiX,aAAa,EAAE;EACjC,UAAA,IACI/a,MAAM,CAACC,SAAS,CAACC,cAAc,CAACC,IAAI,CAAC,IAAI,CAAC4a,aAAa,EAAEjX,EAAE,CAAC,EAC9D;cACE,IAAMvC,IAAI,GAAG,IAAI,CAACgE,UAAU,CAACqV,WAAW,CAAC9W,EAAE,CAAC,CAAA;cAC5C,IAAIvC,IAAI,IAAIP,MAAM,CAAC0B,UAAU,CAACnB,IAAI,CAAC,EAAE;EACjCwZ,cAAAA,aAAa,CAACnZ,IAAI,CAACL,IAAI,CAAC,CAAA;EAC5B,aAAA;EACJ,WAAA;EACJ,SAAA;EAEA,QAAA,OAAOwZ,aAAa,CAAA;EACxB,OAAA;EACJ,KAAA;EAAC,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,gBAAA;MAAA,KAED,EAAA,SAAA,cAAA,CAAsBxZ,IAAU,EAAW;EACvC,MAAA,IAAIA,IAAI,CAACuC,EAAE,IAAI,IAAI,EAAE;UACjB,OAAO,IAAI,CAACiX,aAAa,CAAC8D,GAAG,CAACtd,IAAI,CAACuC,EAAE,CAAC,CAAA;EAC1C,OAAC,MAAM,IAAI,IAAI,CAAC8a,kBAAkB,EAAE;UAChC,OAAO,IAAI,CAACA,kBAAkB,CAAC7X,OAAO,KAAKxF,IAAI,CAACwF,OAAO,CAAA;EAC3D,OAAC,MAAM;EACH,QAAA,OAAO,KAAK,CAAA;EAChB,OAAA;EACJ,KAAA;EAAC,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,OAAA;EAAA,IAAA,KAAA,EAED,SAAqB,KAAA,GAAA;EACjB,MAAA,IAAI,CAACgU,aAAa,CAAChT,KAAK,EAAE,CAAA;QAC1B,IAAI,CAAC6W,kBAAkB,GAAG,IAAI,CAAA;EAClC,KAAA;EAAC,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,qBAAA;MAAA,KAED,EAAA,SAAA,mBAAA,CAA2Brd,IAAU,EAAiC;EAAA,MAAA,IAAA,MAAA,GAAA,IAAA,CAAA;QAAA,IAA/B8C,eAAe,uEAAG,KAAK,CAAA;EAC1D,MAAA,IAAI9C,IAAI,CAACuC,EAAE,IAAI,IAAI,EAAE;EACjB,QAAA,IACI,IAAI,CAAC8a,kBAAkB,IACvBrd,IAAI,CAACwF,OAAO,KAAK,IAAI,CAAC6X,kBAAkB,CAAC7X,OAAO,EAClD;YACE,IAAI,CAAC6X,kBAAkB,GAAG,IAAI,CAAA;EAClC,SAAA;EACJ,OAAC,MAAM;EACH,QAAA,IAAI,CAAC7D,aAAa,CAAA,QAAA,CAAO,CAACxZ,IAAI,CAACuC,EAAE,CAAC,CAAA;EAElC,QAAA,IAAIO,eAAe,EAAE;YACjB9C,IAAI,CAAC+B,OAAO,CAAC,YAAM;EACf,YAAA,IAAI/B,IAAI,CAACuC,EAAE,IAAI,IAAI,EAAE;EACjB,cAAA,MAAI,CAACiX,aAAa,CAAA,QAAA,CAAO,CAACxZ,IAAI,CAACuC,EAAE,CAAC,CAAA;EACtC,aAAA;EACA,YAAA,OAAO,IAAI,CAAA;EACf,WAAC,CAAC,CAAA;EACN,SAAA;EACJ,OAAA;EACJ,KAAA;EAAC,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,gBAAA;MAAA,KAED,EAAA,SAAA,cAAA,CAAsBvC,IAAU,EAAQ;EACpC,MAAA,IAAIA,IAAI,CAACuC,EAAE,IAAI,IAAI,EAAE;UACjB,IAAI,CAACiX,aAAa,CAAC+D,GAAG,CAACvd,IAAI,CAACuC,EAAE,CAAC,CAAA;EACnC,OAAC,MAAM;UACH,IAAI,CAAC8a,kBAAkB,GAAGrd,IAAI,CAAA;EAClC,OAAA;EACJ,KAAA;EAAC,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,eAAA;EAAA,IAAA,KAAA,EAED,SAAgC,aAAA,GAAA;EAC5B,MAAA,IAAMwd,aAAa,GAAG5P,QAAQ,CAAC4P,aAAa,CAAA;EAE5C,MAAA,OAAOvP,OAAO,CACVuP,aAAa,IACTA,aAAa,CAAC7B,OAAO,KAAK,MAAM,IAChC,IAAI,CAAC3X,UAAU,CAACyZ,gBAAgB,CAACD,aAAa,CAAgB,CACrE,CAAA;EACL,KAAA;EAAC,GAAA,CAAA,CAAA,CAAA;EAAA,EAAA,OAAA,iBAAA,CAAA;EAAA,CAAA,EAAA;;ECjHL,IAAaE,WAAW,gBAAA,YAAA;IAKpB,SAAY1d,WAAAA,CAAAA,IAAU,EAAEgE,UAAwB,EAAE;EAAA,IAAA,eAAA,CAAA,IAAA,EAAA,WAAA,CAAA,CAAA;EAAA,IAAA,eAAA,CAAA,IAAA,EAAA,MAAA,EAAA,KAAA,CAAA,CAAA,CAAA;EAAA,IAAA,eAAA,CAAA,IAAA,EAAA,UAAA,EAAA,KAAA,CAAA,CAAA,CAAA;EAAA,IAAA,eAAA,CAAA,IAAA,EAAA,YAAA,EAAA,KAAA,CAAA,CAAA,CAAA;EAC9C,IAAA,IAAI,CAACuQ,IAAI,CAACvU,IAAI,EAAEgE,UAAU,CAAC,CAAA;EAC/B,GAAA;EAAC,EAAA,YAAA,CAAA,WAAA,EAAA,CAAA;EAAA,IAAA,GAAA,EAAA,MAAA;EAAA,IAAA,KAAA,EAED,SAAYhE,IAAAA,CAAAA,IAAU,EAAEgE,UAAwB,EAAQ;QACpD,IAAI,CAAChE,IAAI,GAAGA,IAAI,CAAA;QAChB,IAAI,CAACgE,UAAU,GAAGA,UAAU,CAAA;EAE5B,MAAA,IAAI,CAAChE,IAAI,CAACwF,OAAO,EAAE;UACf,IAAMA,OAAO,GAAG,IAAI,CAACxB,UAAU,CAACwB,OAAO,CAAClD,GAAG,CAAC,CAAC,CAAC,CAAA;EAE9C,QAAA,IAAIkD,OAAO,EAAE;YACTxF,IAAI,CAACwF,OAAO,GAAGA,OAAO,CAAA;EAC1B,SAAA;EACJ,OAAA;QAEA,IAAIxF,IAAI,CAACwF,OAAO,EAAE;UACd,IAAI,CAAClB,QAAQ,GAAGC,MAAM,CAACvE,IAAI,CAACwF,OAAO,CAAC,CAAA;EACxC,OAAA;EACJ,KAAA;EAAC,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,aAAA;MAAA,KAED,EAAA,SAAA,WAAA,CAAmBjH,QAAgB,EAAY;EAC3C,MAAA,IAAI,IAAI,CAACof,sBAAsB,CAACpf,QAAQ,CAAC,EAAE;EACvC,QAAA,OAAO,IAAIqf,cAAc,CACrB,IAAI,CAACtZ,QAAQ,EACb,IAAI,CAACN,UAAU,CAAC2F,cAAc,EAAE,CACnC,CAAA;EACL,OAAC,MAAM;EACH,QAAA,OAAO,IAAIkU,aAAa,CAAC,IAAI,CAAC7d,IAAI,EAAE,IAAI,CAACsE,QAAQ,EAAE/F,QAAQ,CAAC,CAAA;EAChE,OAAA;EACJ,KAAA;EAAC,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,QAAA;MAAA,KAED,EAAA,SAAA,MAAA,CAAcuf,YAAqB,EAAQ;EAAA,MAAA,IAAA,qBAAA,CAAA;EACvC,MAAA,IAAMC,GAAG,GAAG,IAAI,CAACC,KAAK,EAAE,CAAA;EAExBD,MAAAA,GAAG,CAACrY,QAAQ,CAAC,iBAAiB,CAAC,CAAA;EAC/BqY,MAAAA,GAAG,CAACxC,IAAI,CAAC,eAAe,EAAE,MAAM,CAAC,CAAA;EAEjC,MAAA,IAAM0C,KAAK,GAAG,IAAI,CAACC,OAAO,EAAE,CAAA;EAC5BD,MAAAA,KAAK,CAAC1C,IAAI,CAAC,UAAU,2BAAE,IAAI,CAACvX,UAAU,CAACU,OAAO,CAAC8K,QAAQ,MAAA,IAAA,IAAA,qBAAA,KAAA,KAAA,CAAA,GAAA,qBAAA,GAAI,IAAI,CAAC,CAAA;EAEhE,MAAA,IAAIsO,YAAY,EAAE;EACdG,QAAAA,KAAK,CAACE,OAAO,CAAC,OAAO,CAAC,CAAA;EAC1B,OAAA;EACJ,KAAA;EAAC,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,UAAA;EAAA,IAAA,KAAA,EAED,SAAwB,QAAA,GAAA;EACpB,MAAA,IAAMJ,GAAG,GAAG,IAAI,CAACC,KAAK,EAAE,CAAA;EAExBD,MAAAA,GAAG,CAACpX,WAAW,CAAC,iBAAiB,CAAC,CAAA;EAClCoX,MAAAA,GAAG,CAACxC,IAAI,CAAC,eAAe,EAAE,OAAO,CAAC,CAAA;EAElC,MAAA,IAAM0C,KAAK,GAAG,IAAI,CAACC,OAAO,EAAE,CAAA;EAC5BD,MAAAA,KAAK,CAACG,UAAU,CAAC,UAAU,CAAC,CAAA;QAE5BH,KAAK,CAACI,IAAI,EAAE,CAAA;EAChB,KAAA;EAAC,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,OAAA;EAAA,IAAA,KAAA,EAED,SAAuC,KAAA,GAAA;EACnC,MAAA,OAAO,IAAI,CAAC/Z,QAAQ,CAAC9E,QAAQ,CAAC,UAAU,CAAC,CAAA;EAC7C,KAAA;EAAC,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,SAAA;EAAA,IAAA,KAAA,EAED,SAAyC,OAAA,GAAA;EACrC,MAAA,OAAO,IAAI,CAAC8E,QAAQ,CACf9E,QAAQ,CAAC,iBAAiB,CAAC,CAC3BiU,IAAI,CAAC,mBAAmB,CAAC,CAAA;EAClC,KAAA;EAAC,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,OAAA;EAAA,IAAA,KAAA,EAED,SAAuC,KAAA,GAAA;QACnC,OAAO,IAAI,CAACnP,QAAQ,CAAA;EACxB,KAAA;EAAC,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,wBAAA;MAAA,KAED,EAAA,SAAA,sBAAA,CAAiC/F,QAAgB,EAAW;EACxD,MAAA,OAAOA,QAAQ,KAAKX,QAAQ,CAACO,MAAM,CAAA;EACvC,KAAA;EAAC,GAAA,CAAA,CAAA,CAAA;EAAA,EAAA,OAAA,WAAA,CAAA;EAAA,CAAA,EAAA,CAAA;EAGL,IAAamgB,aAAa,gBAAA,UAAA,YAAA,EAAA;EAAA,EAAA,SAAA,CAAA,aAAA,EAAA,YAAA,CAAA,CAAA;EAAA,EAAA,IAAA,MAAA,GAAA,YAAA,CAAA,aAAA,CAAA,CAAA;EAAA,EAAA,SAAA,aAAA,GAAA;EAAA,IAAA,eAAA,CAAA,IAAA,EAAA,aAAA,CAAA,CAAA;EAAA,IAAA,OAAA,MAAA,CAAA,KAAA,CAAA,IAAA,EAAA,SAAA,CAAA,CAAA;EAAA,GAAA;EAAA,EAAA,YAAA,CAAA,aAAA,EAAA,CAAA;EAAA,IAAA,GAAA,EAAA,MAAA;MAAA,KACtB,EAAA,SAAA,IAAA,CACItO,UAAmC,EAG/B;EAAA,MAAA,IAAA,KAAA,GAAA,IAAA,CAAA;QAAA,IAFJ5H,KAAK,uEAAG,IAAI,CAAA;QAAA,IACZmW,cAAwC,uEAAG,MAAM,CAAA;EAEjD,MAAA,IAAI,IAAI,CAACve,IAAI,CAACkD,OAAO,EAAE;EACnB,QAAA,OAAA;EACJ,OAAA;EAEA,MAAA,IAAI,CAAClD,IAAI,CAACkD,OAAO,GAAG,IAAI,CAAA;EAExB,MAAA,IAAMsb,OAAO,GAAG,IAAI,CAACC,SAAS,EAAE,CAAA;EAChCD,MAAAA,OAAO,CAAC7X,WAAW,CAAC,eAAe,CAAC,CAAA;EACpC6X,MAAAA,OAAO,CAACzS,IAAI,CAAC,EAAE,CAAC,CAAA;EAEhB,MAAA,IAAM2S,QAAQ,GAAGF,OAAO,CAAClc,GAAG,CAAC,CAAC,CAAC,CAAA;EAE/B,MAAA,IAAIoc,QAAQ,EAAE;EACV,QAAA,IAAMC,IAAI,GACN,IAAI,CAAC3a,UAAU,CAAC4a,QAAQ,CAACtS,iBAAiB,CAAC0C,SAAS,CAAC,IAAI,CAAC,CAAA;EAE9D0P,QAAAA,QAAQ,CAACnR,WAAW,CAACoR,IAAI,CAAC,CAAA;EAC9B,OAAA;EAEA,MAAA,IAAME,MAAM,GAAG,SAATA,MAAM,GAAe;EACvB,QAAA,IAAMd,GAAG,GAAG,KAAI,CAACC,KAAK,EAAE,CAAA;EACxBD,QAAAA,GAAG,CAACpX,WAAW,CAAC,eAAe,CAAC,CAAA;EAEhC,QAAA,IAAMsX,KAAK,GAAG,KAAI,CAACC,OAAO,EAAE,CAAA;EAC5BD,QAAAA,KAAK,CAAC1C,IAAI,CAAC,eAAe,EAAE,MAAM,CAAC,CAAA;EAEnC,QAAA,IAAIvL,UAAU,EAAE;EACZA,UAAAA,UAAU,CAAC,KAAI,CAAChQ,IAAI,CAAC,CAAA;EACzB,SAAA;EAEA,QAAA,KAAI,CAACgE,UAAU,CAACgF,aAAa,CAAC,WAAW,EAAE;YACvChJ,IAAI,EAAE,KAAI,CAACA,IAAAA;EACf,SAAC,CAAC,CAAA;SACL,CAAA;EAED,MAAA,IAAIoI,KAAK,EAAE;UACP,IAAI,CAAC0W,KAAK,EAAE,CAACC,SAAS,CAACR,cAAc,EAAEM,MAAM,CAAC,CAAA;EAClD,OAAC,MAAM;EACH,QAAA,IAAI,CAACC,KAAK,EAAE,CAACE,IAAI,EAAE,CAAA;EACnBH,QAAAA,MAAM,EAAE,CAAA;EACZ,OAAA;EACJ,KAAA;EAAC,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,OAAA;EAAA,IAAA,KAAA,EAED,SAGQ,KAAA,GAAA;EAAA,MAAA,IAAA,MAAA,GAAA,IAAA,CAAA;QAAA,IAFJzW,KAAK,uEAAG,IAAI,CAAA;QAAA,IACZmW,cAAwC,uEAAG,MAAM,CAAA;EAEjD,MAAA,IAAI,CAAC,IAAI,CAACve,IAAI,CAACkD,OAAO,EAAE;EACpB,QAAA,OAAA;EACJ,OAAA;EAEA,MAAA,IAAI,CAAClD,IAAI,CAACkD,OAAO,GAAG,KAAK,CAAA;EAEzB,MAAA,IAAMsb,OAAO,GAAG,IAAI,CAACC,SAAS,EAAE,CAAA;EAChCD,MAAAA,OAAO,CAAC9Y,QAAQ,CAAC,eAAe,CAAC,CAAA;EACjC8Y,MAAAA,OAAO,CAACzS,IAAI,CAAC,EAAE,CAAC,CAAA;EAEhB,MAAA,IAAM2S,QAAQ,GAAGF,OAAO,CAAClc,GAAG,CAAC,CAAC,CAAC,CAAA;EAE/B,MAAA,IAAIoc,QAAQ,EAAE;EACV,QAAA,IAAMC,IAAI,GACN,IAAI,CAAC3a,UAAU,CAAC4a,QAAQ,CAACnS,iBAAiB,CAACuC,SAAS,CAAC,IAAI,CAAC,CAAA;EAE9D0P,QAAAA,QAAQ,CAACnR,WAAW,CAACoR,IAAI,CAAC,CAAA;EAC9B,OAAA;EAEA,MAAA,IAAMM,OAAO,GAAG,SAAVA,OAAO,GAAe;EACxB,QAAA,IAAMlB,GAAG,GAAG,MAAI,CAACC,KAAK,EAAE,CAAA;EACxBD,QAAAA,GAAG,CAACrY,QAAQ,CAAC,eAAe,CAAC,CAAA;EAE7B,QAAA,IAAMuY,KAAK,GAAG,MAAI,CAACC,OAAO,EAAE,CAAA;EAC5BD,QAAAA,KAAK,CAAC1C,IAAI,CAAC,eAAe,EAAE,OAAO,CAAC,CAAA;EAEpC,QAAA,MAAI,CAACvX,UAAU,CAACgF,aAAa,CAAC,YAAY,EAAE;YACxChJ,IAAI,EAAE,MAAI,CAACA,IAAAA;EACf,SAAC,CAAC,CAAA;SACL,CAAA;EAED,MAAA,IAAIoI,KAAK,EAAE;UACP,IAAI,CAAC0W,KAAK,EAAE,CAACI,OAAO,CAACX,cAAc,EAAEU,OAAO,CAAC,CAAA;EACjD,OAAC,MAAM;EACH,QAAA,IAAI,CAACH,KAAK,EAAE,CAACK,IAAI,EAAE,CAAA;EACnBF,QAAAA,OAAO,EAAE,CAAA;EACb,OAAA;EACJ,KAAA;EAAC,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,wBAAA;MAAA,KAED,EAAA,SAAA,sBAAA,CAAiC1gB,QAAgB,EAAW;QACxD,OAAO,CAAC,IAAI,CAACyB,IAAI,CAACkD,OAAO,IAAI3E,QAAQ,KAAKX,QAAQ,CAACO,MAAM,CAAA;EAC7D,KAAA;EAAC,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,WAAA;EAAA,IAAA,KAAA,EAED,SAA4B,SAAA,GAAA;EACxB,MAAA,OAAO,IAAI,CAACmG,QAAQ,CACf9E,QAAQ,CAAC,iBAAiB,CAAC,CAC3BiU,IAAI,CAAC,kBAAkB,CAAC,CAAA;EACjC,KAAA;EAAC,GAAA,CAAA,CAAA,CAAA;EAAA,EAAA,OAAA,aAAA,CAAA;EAAA,CAAA,CApG8BiK,WAAW,CAAA,CAAA;EAuG9C,IAAaE,cAAc,gBAAA,YAAA;IAGvB,SAAYtZ,cAAAA,CAAAA,QAAyB,EAAE6W,UAAkB,EAAE;EAAA,IAAA,eAAA,CAAA,IAAA,EAAA,cAAA,CAAA,CAAA;EAAA,IAAA,eAAA,CAAA,IAAA,EAAA,OAAA,EAAA,KAAA,CAAA,CAAA,CAAA;EACvD,IAAA,IAAMiE,IAAI,GAAG9a,QAAQ,CAAC9E,QAAQ,CAAC,iBAAiB,CAAC,CAAA;EAEjD,IAAA,IAAM6f,OAAO,GAAG/a,QAAQ,CAACmF,KAAK,EAAE,IAAI,CAAC,CAAA;EACrC,IAAA,IAAMA,KAAK,GAAG4B,IAAI,CAAC2R,GAAG,CAACqC,OAAO,GAAGlE,UAAU,GAAG,CAAC,EAAE,CAAC,CAAC,CAAA;EAEnD,IAAA,IAAMJ,QAAQ,GAAGqE,IAAI,CAACE,WAAW,EAAE,IAAI,CAAC,CAAA;MACxC,IAAM5V,MAAM,GAAG2B,IAAI,CAAC2R,GAAG,CAACjC,QAAQ,GAAG,CAAC,EAAE,CAAC,CAAC,CAAA;EAExC,IAAA,IAAI,CAACwE,KAAK,GAAGhb,MAAM,CAAC,qCAAqC,CAAC,CAAA;EAC1D6a,IAAAA,IAAI,CAACnT,MAAM,CAAC,IAAI,CAACsT,KAAK,CAAC,CAAA;EAEvB,IAAA,IAAI,CAACA,KAAK,CAACvT,GAAG,CAAC;EAAEvC,MAAAA,KAAK,EAALA,KAAK;EAAEC,MAAAA,MAAM,EAANA,MAAAA;EAAO,KAAC,CAAC,CAAA;EACrC,GAAA;EAAC,EAAA,YAAA,CAAA,cAAA,EAAA,CAAA;EAAA,IAAA,GAAA,EAAA,QAAA;EAAA,IAAA,KAAA,EAED,SAAsB,MAAA,GAAA;EAClB,MAAA,IAAI,CAAC6V,KAAK,CAAChY,MAAM,EAAE,CAAA;EACvB,KAAA;EAAC,GAAA,CAAA,CAAA,CAAA;EAAA,EAAA,OAAA,cAAA,CAAA;EAAA,CAAA,EAAA,CAAA;EACJ,IAEKsW,aAAa,gBAAA,YAAA;EAKf,EAAA,SAAA,aAAA,CAAY7d,IAAU,EAAEsE,QAAyB,EAAE/F,QAAgB,EAAE;EAAA,IAAA,eAAA,CAAA,IAAA,EAAA,aAAA,CAAA,CAAA;EAAA,IAAA,eAAA,CAAA,IAAA,EAAA,UAAA,EAAA,KAAA,CAAA,CAAA,CAAA;EAAA,IAAA,eAAA,CAAA,IAAA,EAAA,MAAA,EAAA,KAAA,CAAA,CAAA,CAAA;EAAA,IAAA,eAAA,CAAA,IAAA,EAAA,QAAA,EAAA,KAAA,CAAA,CAAA,CAAA;MACjE,IAAI,CAAC+F,QAAQ,GAAGA,QAAQ,CAAA;MAExB,IAAI,CAACtE,IAAI,GAAGA,IAAI,CAAA;EAChB,IAAA,IAAI,CAACwf,MAAM,GAAGjb,MAAM,CAGnB,kKAAA,CAAA,CAAA;EAED,IAAA,IAAIhG,QAAQ,KAAKX,QAAQ,CAACK,KAAK,EAAE;QAC7B,IAAI,CAACwhB,SAAS,EAAE,CAAA;EACpB,KAAC,MAAM,IAAIlhB,QAAQ,KAAKX,QAAQ,CAACG,MAAM,EAAE;QACrC,IAAI,CAAC2hB,UAAU,EAAE,CAAA;EACrB,KAAC,MAAM,IAAInhB,QAAQ,KAAKX,QAAQ,CAACO,MAAM,EAAE;QACrC,IAAI6B,IAAI,CAAC+F,QAAQ,EAAE,IAAI/F,IAAI,CAACkD,OAAO,EAAE;UACjC,IAAI,CAACyc,oBAAoB,EAAE,CAAA;EAC/B,OAAC,MAAM;UACH,IAAI,CAACC,UAAU,EAAE,CAAA;EACrB,OAAA;EACJ,KAAA;EACJ,GAAA;EAAC,EAAA,YAAA,CAAA,aAAA,EAAA,CAAA;EAAA,IAAA,GAAA,EAAA,QAAA;EAAA,IAAA,KAAA,EAED,SAAsB,MAAA,GAAA;EAClB,MAAA,IAAI,CAACJ,MAAM,CAACjY,MAAM,EAAE,CAAA;EACxB,KAAA;EAAC,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,WAAA;EAAA,IAAA,KAAA,EAED,SAAyB,SAAA,GAAA;QACrB,IAAI,CAACjD,QAAQ,CAACtG,KAAK,CAAC,IAAI,CAACwhB,MAAM,CAAC,CAAA;EACpC,KAAA;EAAC,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,YAAA;EAAA,IAAA,KAAA,EAED,SAA0B,UAAA,GAAA;QACtB,IAAI,CAAClb,QAAQ,CAACxG,MAAM,CAAC,IAAI,CAAC0hB,MAAM,CAAC,CAAA;EACrC,KAAA;EAAC,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,sBAAA;EAAA,IAAA,KAAA,EAED,SAAoC,oBAAA,GAAA;QAChC,IAAMK,YAAY,GAAG,IAAI,CAAC7f,IAAI,CAACR,QAAQ,CAAC,CAAC,CAAC,CAACgG,OAAO,CAAA;EAElD,MAAA,IAAIqa,YAAY,EAAE;UACdtb,MAAM,CAACsb,YAAY,CAAC,CAAC/hB,MAAM,CAAC,IAAI,CAAC0hB,MAAM,CAAC,CAAA;EAC5C,OAAA;EACJ,KAAA;EAAC,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,YAAA;EAAA,IAAA,KAAA,EAED,SAA0B,UAAA,GAAA;QACtB,IAAI,CAAClb,QAAQ,CAACtG,KAAK,CAAC,IAAI,CAACwhB,MAAM,CAAC,CAAA;EAChC,MAAA,IAAI,CAACA,MAAM,CAAC9Z,QAAQ,CAAC,eAAe,CAAC,CAAA;EACzC,KAAA;EAAC,GAAA,CAAA,CAAA,CAAA;EAAA,EAAA,OAAA,aAAA,CAAA;EAAA,CAAA,EAAA;;EC9OL,IAAMoa,mBAAmB,GAAG,yBAAyB,CAAA;EACrD,IAAMC,cAAc,GAAG,sBAAsB,CAAA;AAE7C,MAAaC,YAAY,gBAAA,UAAA,YAAA,EAAA;EAAA,EAAA,SAAA,CAAA,YAAA,EAAA,YAAA,CAAA,CAAA;EAAA,EAAA,IAAA,MAAA,GAAA,YAAA,CAAA,YAAA,CAAA,CAAA;EAAA,EAAA,SAAA,YAAA,GAAA;EAAA,IAAA,IAAA,KAAA,CAAA;EAAA,IAAA,eAAA,CAAA,IAAA,EAAA,YAAA,CAAA,CAAA;EAAA,IAAA,KAAA,IAAA,IAAA,GAAA,SAAA,CAAA,MAAA,EAAA,IAAA,GAAA,IAAA,KAAA,CAAA,IAAA,CAAA,EAAA,IAAA,GAAA,CAAA,EAAA,IAAA,GAAA,IAAA,EAAA,IAAA,EAAA,EAAA;EAAA,MAAA,IAAA,CAAA,IAAA,CAAA,GAAA,SAAA,CAAA,IAAA,CAAA,CAAA;EAAA,KAAA;EAAA,IAAA,KAAA,GAAA,MAAA,CAAA,IAAA,CAAA,KAAA,CAAA,MAAA,EAAA,CAAA,IAAA,CAAA,CAAA,MAAA,CAAA,IAAA,CAAA,CAAA,CAAA;EAAA,IAAA,eAAA,CAAA,sBAAA,CAAA,KAAA,CAAA,EAAA,SAAA,EAAA,KAAA,CAAA,CAAA,CAAA;EAAA,IAAA,eAAA,CAAA,sBAAA,CAAA,KAAA,CAAA,EAAA,MAAA,EAAA,KAAA,CAAA,CAAA,CAAA;EAAA,IAAA,eAAA,CAAA,sBAAA,CAAA,KAAA,CAAA,EAAA,YAAA,EAAA,KAAA,CAAA,CAAA,CAAA;EAAA,IAAA,eAAA,CAAA,sBAAA,CAAA,KAAA,CAAA,EAAA,UAAA,EAAA,KAAA,CAAA,CAAA,CAAA;EAAA,IAAA,eAAA,CAAA,sBAAA,CAAA,KAAA,CAAA,EAAA,YAAA,EAAA,KAAA,CAAA,CAAA,CAAA;EAAA,IAAA,eAAA,CAAA,sBAAA,CAAA,KAAA,CAAA,EAAA,eAAA,EAAA,KAAA,CAAA,CAAA,CAAA;EAAA,IAAA,eAAA,CAAA,sBAAA,CAAA,KAAA,CAAA,EAAA,mBAAA,EAAA,KAAA,CAAA,CAAA,CAAA;EAAA,IAAA,eAAA,CAAA,sBAAA,CAAA,KAAA,CAAA,EAAA,eAAA,EAAA,KAAA,CAAA,CAAA,CAAA;EAAA,IAAA,eAAA,CAAA,sBAAA,CAAA,KAAA,CAAA,EAAA,kBAAA,EAAA,KAAA,CAAA,CAAA,CAAA;EAAA,IAAA,eAAA,CAAA,sBAAA,CAAA,KAAA,CAAA,EAAA,YAAA,EAAA,KAAA,CAAA,CAAA,CAAA;MAAA,eA42BC,CAAA,sBAAA,CAAA,KAAA,CAAA,EAAA,aAAA,EAAA,UAClB/N,CAAgE,EACzD;QACP,IAAMgO,WAAW,GAAG,KAAKC,CAAAA,cAAc,CAACjO,CAAC,CAACzN,MAAM,CAAC,CAAA;EAEjD,MAAA,IAAIyb,WAAW,EAAE;EACb,QAAA,IAAIA,WAAW,CAACE,IAAI,KAAK,QAAQ,EAAE;YAC/B,KAAKC,CAAAA,MAAM,CAACH,WAAW,CAACjgB,IAAI,EAAE,KAAK0E,CAAAA,OAAO,CAAC0D,KAAK,CAAC,CAAA;YAEjD6J,CAAC,CAAC4D,cAAc,EAAE,CAAA;YAClB5D,CAAC,CAACoO,eAAe,EAAE,CAAA;EACvB,SAAC,MAAM,IAAIJ,WAAW,CAACE,IAAI,KAAK,OAAO,EAAE;EACrC,UAAA,IAAMngB,MAAI,GAAGigB,WAAW,CAACjgB,IAAI,CAAA;EAC7B,UAAA,IAAM+I,KAAK,GAAG,KAAA,CAAKC,aAAa,CAAC,YAAY,EAAE;EAC3ChJ,YAAAA,IAAI,EAAJA,MAAI;EACJsgB,YAAAA,WAAW,EAAErO,CAAAA;EACjB,WAAC,CAAC,CAAA;EAEF,UAAA,IAAI,CAAClJ,KAAK,CAACQ,kBAAkB,EAAE,EAAE;cAC7B,KAAKgX,CAAAA,YAAY,CAACvgB,MAAI,CAAC,CAAA;EAC3B,WAAA;EACJ,SAAA;EACJ,OAAA;OACH,CAAA,CAAA;MAAA,eAEwB,CAAA,sBAAA,CAAA,KAAA,CAAA,EAAA,gBAAA,EAAA,UACrBiS,CAAsE,EAC/D;QACP,IAAMgO,WAAW,GAAG,KAAKC,CAAAA,cAAc,CAACjO,CAAC,CAACzN,MAAM,CAAC,CAAA;QAEjD,IAAI,CAAAyb,WAAW,KAAA,IAAA,IAAXA,WAAW,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAXA,WAAW,CAAEE,IAAI,MAAK,OAAO,EAAE;UAC/B,KAAKnX,CAAAA,aAAa,CAAC,eAAe,EAAE;YAChChJ,IAAI,EAAEigB,WAAW,CAACjgB,IAAI;EACtBsgB,UAAAA,WAAW,EAAErO,CAAAA;EACjB,SAAC,CAAC,CAAA;EACN,OAAA;OACH,CAAA,CAAA;MAAA,eAyC2B,CAAA,sBAAA,CAAA,KAAA,CAAA,EAAA,mBAAA,EAAA,UACxBA,CAAsE,EACrE;EACD,MAAA,IAAMmN,IAAI,GAAG7a,MAAM,CAAC0N,CAAC,CAACzN,MAAM,CAAC,CAACgc,OAAO,CAAC,gCAAgC,CAAC,CAAA;QACvE,IAAIpB,IAAI,CAACjf,MAAM,EAAE;EACb,QAAA,IAAMH,MAAI,GAAG,KAAA,CAAKygB,OAAO,CAACrB,IAAI,CAAC,CAAA;EAC/B,QAAA,IAAIpf,MAAI,EAAE;YACNiS,CAAC,CAAC4D,cAAc,EAAE,CAAA;YAClB5D,CAAC,CAACoO,eAAe,EAAE,CAAA;YAEnB,KAAKrX,CAAAA,aAAa,CAAC,kBAAkB,EAAE;EACnChJ,YAAAA,IAAI,EAAJA,MAAI;EACJsgB,YAAAA,WAAW,EAAErO,CAAAA;EACjB,WAAC,CAAC,CAAA;EACF,UAAA,OAAO,KAAK,CAAA;EAChB,SAAA;EACJ,OAAA;EAEA,MAAA,OAAO,IAAI,CAAA;OACd,CAAA,CAAA;EAAA,IAAA,OAAA,KAAA,CAAA;EAAA,GAAA;EAAA,EAAA,YAAA,CAAA,YAAA,EAAA,CAAA;EAAA,IAAA,GAAA,EAAA,QAAA;MAAA,KAx5BD,EAAA,SAAA,MAAA,CAAcjS,IAAU,EAA6C;QAAA,IAA3C0gB,UAA0B,uEAAG,IAAI,CAAA;QACvD,IAAI,CAAC1gB,IAAI,EAAE;UACP,MAAM2gB,KAAK,CAACb,mBAAmB,CAAC,CAAA;EACpC,OAAA;EAEA,MAAA,IAAM1X,KAAK,GAAGsY,UAAU,KAAA,IAAA,IAAVA,UAAU,KAAA,KAAA,CAAA,GAAVA,UAAU,GAAI,IAAI,CAAChc,OAAO,CAAC0D,KAAK,CAAA;QAE9C,IAAIpI,IAAI,CAACkD,OAAO,EAAE;EACd,QAAA,IAAI,CAACoQ,SAAS,CAACtT,IAAI,EAAEoI,KAAK,CAAC,CAAA;EAC/B,OAAC,MAAM;EACH,QAAA,IAAI,CAACiL,QAAQ,CAACrT,IAAI,EAAEoI,KAAK,CAAC,CAAA;EAC9B,OAAA;QAEA,OAAO,IAAI,CAAC5C,OAAO,CAAA;EACvB,KAAA;EAAC,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,SAAA;EAAA,IAAA,KAAA,EAED,SAAuB,OAAA,GAAA;QACnB,OAAO,IAAI,CAAC5F,IAAI,CAAA;EACpB,KAAA;EAAC,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,YAAA;EAAA,IAAA,KAAA,EAED,SACII,UAAAA,CAAAA,IAAiB,EACjB4gB,YAAgC,EAC1B;EACN,MAAA,IAAI,CAACL,YAAY,CAACvgB,IAAI,EAAE4gB,YAAY,CAAC,CAAA;QACrC,OAAO,IAAI,CAACpb,OAAO,CAAA;EACvB,KAAA;EAAC,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,iBAAA;EAAA,IAAA,KAAA,EAED,SAAuC,eAAA,GAAA;EACnC,MAAA,OAAO,IAAI,CAAC0I,iBAAiB,CAACkE,eAAe,EAAE,CAAA;EACnD,KAAA;EAAC,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,QAAA;EAAA,IAAA,KAAA,EAED,SAAwB,MAAA,GAAA;QACpB,OAAOP,IAAI,CAAC6F,SAAS,CAAC,IAAI,CAAC9X,IAAI,CAACihB,OAAO,EAAE,CAAC,CAAA;EAC9C,KAAA;EAAC,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,UAAA;EAAA,IAAA,KAAA,EAED,SAAgB9hB,QAAAA,CAAAA,IAAgB,EAAEgR,UAAuB,EAAU;EAC/D,MAAA,IAAI,CAAC+Q,UAAU,CAAC/hB,IAAI,EAAEgR,UAAU,CAAC,CAAA;QACjC,OAAO,IAAI,CAACvK,OAAO,CAAA;EACvB,KAAA;;EAEA;EACJ;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAZI,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,iBAAA;EAAA,IAAA,KAAA,EAcA,yBACIub,MAA4B,EAC5BC,MAA4C,EAC5CC,MAA8B,EACxB;EACN,MAAA,IAAI,OAAOF,MAAM,KAAK,QAAQ,EAAE;EAC5B;EACA,QAAA,IAAI,CAACG,iBAAiB,CAClBH,MAAM,EACNC,MAAM,EACNC,MAAM,KAAA,IAAA,IAANA,MAAM,KAAA,KAAA,CAAA,GAANA,MAAM,GAAI,IAAI,CACjB,CAAA;EACL,OAAC,MAAM;EACH;UACA,IAAI,CAACC,iBAAiB,CAClB,IAAI,EACJH,MAAM,EACNC,MAAM,CACT,CAAA;EACL,OAAA;QAEA,OAAO,IAAI,CAACxb,OAAO,CAAA;EACvB,KAAA;EAAC,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,QAAA;MAAA,KAED,EAAA,SAAA,MAAA,CAAcwK,UAAwC,EAAU;QAC5D,IAAI,CAACkR,iBAAiB,CAAC,IAAI,EAAE,IAAI,EAAElR,UAAU,CAAC,CAAA;QAC9C,OAAO,IAAI,CAACxK,OAAO,CAAA;EACvB,KAAA;EAAC,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,SAAA;EAAA,IAAA,KAAA,EAED,SAAyB,OAAA,GAAA;EACrB,MAAA,IAAI,CAACsD,gBAAgB,CAAC,IAAI,CAAC,CAAA;QAC3B,OAAO,IAAI,CAACtD,OAAO,CAAA;EACvB,KAAA;EAAC,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,aAAA;MAAA,KAED,EAAA,SAAA,WAAA,CAAmBnD,MAAc,EAAe;EAC5C,MAAA,OAAO,IAAI,CAACzC,IAAI,CAACyZ,WAAW,CAAChX,MAAM,CAAC,CAAA;EACxC,KAAA;EAAC,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,eAAA;MAAA,KAED,EAAA,SAAA,aAAA,CAAqB7D,IAAY,EAAe;EAC5C,MAAA,OAAO,IAAI,CAACoB,IAAI,CAACuhB,aAAa,CAAC3iB,IAAI,CAAC,CAAA;EACxC,KAAA;EAAC,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,wBAAA;MAAA,KAED,EAAA,SAAA,sBAAA,CAA8BA,IAAY,EAAQ;EAC9C,MAAA,OAAO,IAAI,CAACoB,IAAI,CAACwhB,sBAAsB,CAAC5iB,IAAI,CAAC,CAAA;EACjD,KAAA;EAAC,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,oBAAA;EAAA,IAAA,KAAA,EAED,SAA0BqB,kBAAAA,CAAAA,GAAW,EAAEC,KAAc,EAAU;QAC3D,OAAO,IAAI,CAACF,IAAI,CAACyhB,kBAAkB,CAACxhB,GAAG,EAAEC,KAAK,CAAC,CAAA;EACnD,KAAA;EAAC,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,sBAAA;MAAA,KAED,EAAA,SAAA,oBAAA,CACI0F,OAA0C,EAC/B;QACX,OAAO,IAAI,CAACib,OAAO,CAAClc,MAAM,CAACiB,OAAO,CAAC,CAAC,CAAA;EACxC,KAAA;EAAC,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,mBAAA;MAAA,KAED,EAAA,SAAA,iBAAA,CAAyB5E,QAAiC,EAAe;EACrE,MAAA,OAAO,IAAI,CAAChB,IAAI,CAACiC,iBAAiB,CAACjB,QAAQ,CAAC,CAAA;EAChD,KAAA;EAAC,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,UAAA;EAAA,IAAA,KAAA,EAED,kBACIZ,IAAU,EACV+gB,MAAmC,EACnCC,MAAyB,EACnB;EAAA,MAAA,IAAA,MAAA,GAAA,IAAA,CAAA;QACN,IAAI,CAAChhB,IAAI,EAAE;UACP,MAAM2gB,KAAK,CAACb,mBAAmB,CAAC,CAAA;EACpC,OAAA;EAEA,MAAA,IAAMwB,WAAW,GAAG,SAAdA,WAAW,GAA6C;EAC1D,QAAA,IAAItR,UAAmC,CAAA;EACvC,QAAA,IAAI5H,KAAqB,CAAA;EAEzB,QAAA,IAAI+D,UAAU,CAAC4U,MAAM,CAAC,EAAE;EACpB/Q,UAAAA,UAAU,GAAG+Q,MAAiC,CAAA;EAC9C3Y,UAAAA,KAAK,GAAG,IAAI,CAAA;EAChB,SAAC,MAAM;EACHA,UAAAA,KAAK,GAAG2Y,MAAiB,CAAA;EACzB/Q,UAAAA,UAAU,GAAGgR,MAA0B,CAAA;EAC3C,SAAA;UAEA,IAAI5Y,KAAK,IAAI,IAAI,EAAE;EAAA,UAAA,IAAA,oBAAA,CAAA;EACfA,UAAAA,KAAK,2BAAG,MAAI,CAAC1D,OAAO,CAAC0D,KAAK,uEAAI,KAAK,CAAA;EACvC,SAAA;EAEA,QAAA,OAAO,CAACA,KAAK,EAAE4H,UAAU,CAAC,CAAA;SAC7B,CAAA;EAED,MAAA,IAAA,YAAA,GAA4BsR,WAAW,EAAE;EAAA,QAAA,aAAA,GAAA,cAAA,CAAA,YAAA,EAAA,CAAA,CAAA;UAAlClZ,KAAK,GAAA,aAAA,CAAA,CAAA,CAAA;UAAE4H,UAAU,GAAA,aAAA,CAAA,CAAA,CAAA,CAAA;QAExB,IAAI,CAAC7H,SAAS,CAACnI,IAAI,EAAEoI,KAAK,EAAE4H,UAAU,CAAC,CAAA;QACvC,OAAO,IAAI,CAACxK,OAAO,CAAA;EACvB,KAAA;EAAC,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,WAAA;EAAA,IAAA,KAAA,EAED,SAAiBxF,SAAAA,CAAAA,IAAU,EAAE0gB,UAA2B,EAAU;QAC9D,IAAI,CAAC1gB,IAAI,EAAE;UACP,MAAM2gB,KAAK,CAACb,mBAAmB,CAAC,CAAA;EACpC,OAAA;EAEA,MAAA,IAAM1X,KAAK,GAAGsY,UAAU,KAAA,IAAA,IAAVA,UAAU,KAAA,KAAA,CAAA,GAAVA,UAAU,GAAI,IAAI,CAAChc,OAAO,CAAC0D,KAAK,CAAA;QAE9C,IAAIpI,IAAI,CAAC+F,QAAQ,EAAE,IAAI/F,IAAI,CAACX,aAAa,EAAE;EACvC,QAAA,IAAIif,aAAa,CAACte,IAAI,EAAE,IAAI,CAAC,CAACuhB,KAAK,CAC/BnZ,KAAK,EACL,IAAI,CAAC1D,OAAO,CAAC6Z,cAAc,CAC9B,CAAA;UAED,IAAI,CAACzE,SAAS,EAAE,CAAA;EACpB,OAAA;QAEA,OAAO,IAAI,CAACtU,OAAO,CAAA;EACvB,KAAA;EAAC,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,YAAA;EAAA,IAAA,KAAA,EAED,SAA6B,UAAA,GAAA;EACzB,MAAA,OAAO,IAAI,CAAC0W,UAAU,CAAC/X,UAAU,CAAA;EACrC,KAAA;EAAC,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,iBAAA;EAAA,IAAA,KAAA,EAED,SAAiC,eAAA,GAAA;EAC7B,MAAA,IAAI,CAAC+X,UAAU,CAAChX,OAAO,EAAE,CAAA;QACzB,OAAO,IAAI,CAACM,OAAO,CAAA;EACvB,KAAA;EAAC,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,cAAA;EAAA,IAAA,KAAA,EAED,SACIgc,YAAAA,CAAAA,WAAqB,EACrBC,YAAkB,EACP;EACX,MAAA,IAAMC,OAAO,GAAGD,YAAY,CAACE,QAAQ,CAACH,WAAW,CAAC,CAAA;EAElD,MAAA,IAAIE,OAAO,EAAE;EACT,QAAA,IAAI,CAAC5Y,gBAAgB,CAAC2Y,YAAY,CAAChiB,MAAM,CAAC,CAAA;EAC9C,OAAA;EAEA,MAAA,OAAOiiB,OAAO,CAAA;EAClB,KAAA;EAAC,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,eAAA;EAAA,IAAA,KAAA,EAED,SACIF,aAAAA,CAAAA,WAAqB,EACrBC,YAAkB,EACP;QACX,IAAI,CAACA,YAAY,EAAE;EACf,QAAA,MAAMd,KAAK,CAACZ,cAAc,GAAG,cAAc,CAAC,CAAA;EAChD,OAAA;EAEA,MAAA,IAAM2B,OAAO,GAAGD,YAAY,CAACG,SAAS,CAACJ,WAAW,CAAC,CAAA;EAEnD,MAAA,IAAIE,OAAO,EAAE;EACT,QAAA,IAAI,CAAC5Y,gBAAgB,CAAC2Y,YAAY,CAAChiB,MAAM,CAAC,CAAA;EAC9C,OAAA;EAEA,MAAA,OAAOiiB,OAAO,CAAA;EAClB,KAAA;EAAC,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,eAAA;EAAA,IAAA,KAAA,EAED,SACIF,aAAAA,CAAAA,WAAqB,EACrBC,YAAkB,EACP;QACX,IAAI,CAACA,YAAY,EAAE;EACf,QAAA,MAAMd,KAAK,CAACZ,cAAc,GAAG,cAAc,CAAC,CAAA;EAChD,OAAA;EAEA,MAAA,IAAM2B,OAAO,GAAGD,YAAY,CAACI,SAAS,CAACL,WAAW,CAAC,CAAA;EAEnD,MAAA,IAAIE,OAAO,EAAE;EACT,QAAA,IAAI,CAAC5Y,gBAAgB,CAAC4Y,OAAO,CAACjiB,MAAM,CAAC,CAAA;EACzC,OAAA;EAEA,MAAA,OAAOiiB,OAAO,CAAA;EAClB,KAAA;EAAC,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,YAAA;MAAA,KAED,EAAA,SAAA,UAAA,CAAkB1hB,IAAU,EAAU;QAClC,IAAI,CAACA,IAAI,EAAE;UACP,MAAM2gB,KAAK,CAACb,mBAAmB,CAAC,CAAA;EACpC,OAAA;EAEA,MAAA,IAAI,CAAC9f,IAAI,CAACP,MAAM,EAAE;UACd,MAAMkhB,KAAK,CAAC,oBAAoB,CAAC,CAAA;EACrC,OAAA;QAEA,IAAI,CAACzS,iBAAiB,CAACuL,mBAAmB,CAACzZ,IAAI,EAAE,IAAI,CAAC,CAAC;;EAEvD,MAAA,IAAMP,MAAM,GAAGO,IAAI,CAACP,MAAM,CAAA;QAC1BO,IAAI,CAACuH,MAAM,EAAE,CAAA;EACb,MAAA,IAAI,CAACuB,gBAAgB,CAACrJ,MAAM,CAAC,CAAA;QAE7B,OAAO,IAAI,CAAC+F,OAAO,CAAA;EACvB,KAAA;EAAC,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,YAAA;EAAA,IAAA,KAAA,EAED,SAAkBgc,UAAAA,CAAAA,WAAqB,EAAEM,eAAsB,EAAQ;EACnE,MAAA,IAAM/R,UAAU,GAAG+R,eAAe,IAAI,IAAI,CAACliB,IAAI,CAAA;EAE/C,MAAA,IAAMI,IAAI,GAAG+P,UAAU,CAAC9D,MAAM,CAACuV,WAAW,CAAC,CAAA;EAE3C,MAAA,IAAI,CAAC1Y,gBAAgB,CAACiH,UAAU,CAAC,CAAA;EAEjC,MAAA,OAAO/P,IAAI,CAAA;EACf,KAAA;EAAC,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,aAAA;EAAA,IAAA,KAAA,EAED,SAAmBwhB,WAAAA,CAAAA,WAAqB,EAAEM,eAAsB,EAAQ;QACpE,IAAM/R,UAAU,GAAG+R,eAAe,KAAfA,IAAAA,IAAAA,eAAe,cAAfA,eAAe,GAAI,IAAI,CAACliB,IAAI,CAAA;EAE/C,MAAA,IAAMI,IAAI,GAAG+P,UAAU,CAACgS,OAAO,CAACP,WAAW,CAAC,CAAA;EAE5C,MAAA,IAAI,CAAC1Y,gBAAgB,CAACiH,UAAU,CAAC,CAAA;EAEjC,MAAA,OAAO/P,IAAI,CAAA;EACf,KAAA;EAAC,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,YAAA;EAAA,IAAA,KAAA,EAED,SAAkBA,UAAAA,CAAAA,IAAU,EAAEjB,IAAc,EAAU;QAClD,IAAI,CAACiB,IAAI,EAAE;UACP,MAAM2gB,KAAK,CAACb,mBAAmB,CAAC,CAAA;EACpC,OAAA;EAEA,MAAA,IAAMkC,WAAW,GACb,OAAA,CAAOjjB,IAAI,CAAA,KAAK,QAAQ,IAAIA,IAAI,CAACwD,EAAE,IAAIxD,IAAI,CAACwD,EAAE,KAAKvC,IAAI,CAACuC,EAAE,CAAA;EAE9D,MAAA,IAAIyf,WAAW,EAAE;EACb,QAAA,IAAI,CAACpiB,IAAI,CAAC6C,mBAAmB,CAACzC,IAAI,CAAC,CAAA;EACvC,OAAA;EAEAA,MAAAA,IAAI,CAACT,OAAO,CAACR,IAAI,CAAC,CAAA;EAElB,MAAA,IAAIijB,WAAW,EAAE;EACb,QAAA,IAAI,CAACpiB,IAAI,CAACiE,cAAc,CAAC7D,IAAI,CAAC,CAAA;EAClC,OAAA;EAEA,MAAA,IACI,QAAOjB,IAAI,CAAA,KAAK,QAAQ,IACxBA,IAAI,CAAC,UAAU,CAAC,IAChBA,IAAI,CAAC,UAAU,CAAC,YAAYC,KAAK,EACnC;UACEgB,IAAI,CAACD,cAAc,EAAE,CAAA;EAErB,QAAA,IAAIhB,IAAI,CAACS,QAAQ,CAACW,MAAM,EAAE;EACtBH,UAAAA,IAAI,CAACI,YAAY,CAACrB,IAAI,CAACS,QAAQ,CAAW,CAAA;EAC9C,SAAA;EACJ,OAAA;EAEA,MAAA,IAAI,CAACsJ,gBAAgB,CAAC9I,IAAI,CAAC,CAAA;QAE3B,OAAO,IAAI,CAACwF,OAAO,CAAA;EACvB,KAAA;EAAC,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,yBAAA;MAAA,KAED,EAAA,SAAA,uBAAA,CAAgCyc,OAAa,EAAW;EACpD,MAAA,IAAM9P,YAAY,GAAG,IAAI,CAACC,eAAe,EAAE,CAAA;QAE3C,IAAI,CAACD,YAAY,EAAE;EACf,QAAA,OAAO,KAAK,CAAA;EAChB,OAAC,MAAM;UACH,OAAO8P,OAAO,KAAK9P,YAAY,IAAI8P,OAAO,CAAC9gB,UAAU,CAACgR,YAAY,CAAC,CAAA;EACvE,OAAA;EACJ,KAAA;EAAC,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,UAAA;EAAA,IAAA,KAAA,EAED,kBAAgBnS,IAAU,EAAEkB,UAAgB,EAAE3C,QAAgB,EAAU;QACpE,IAAI,CAACyB,IAAI,EAAE;UACP,MAAM2gB,KAAK,CAACb,mBAAmB,CAAC,CAAA;EACpC,OAAA;QAEA,IAAI,CAAC5e,UAAU,EAAE;EACb,QAAA,MAAMyf,KAAK,CAACZ,cAAc,GAAG,YAAY,CAAC,CAAA;EAC9C,OAAA;EAEA,MAAA,IAAMmC,aAAa,GAAGrjB,WAAW,CAACN,QAAQ,CAAC,CAAA;QAE3C,IAAI2jB,aAAa,KAAKld,SAAS,EAAE;UAC7B,IAAI,CAACpF,IAAI,CAACgJ,QAAQ,CAAC5I,IAAI,EAAEkB,UAAU,EAAEghB,aAAa,CAAC,CAAA;EACnD,QAAA,IAAI,CAACpZ,gBAAgB,CAAC,IAAI,CAAC,CAAA;EAC/B,OAAA;QAEA,OAAO,IAAI,CAACtD,OAAO,CAAA;EACvB,KAAA;EAAC,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,qBAAA;EAAA,IAAA,KAAA,EAED,SAAgD,mBAAA,GAAA;EAC5C,MAAA,OAAO,IAAI,CAAC2c,gBAAgB,CAAClJ,mBAAmB,EAAE,CAAA;EACtD,KAAA;EAAC,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,gBAAA;EAAA,IAAA,KAAA,EAED,SAAsBjZ,cAAAA,CAAAA,IAAU,EAAE8d,YAAsB,EAAU;QAC9D,IAAI,CAAC9d,IAAI,EAAE;UACP,MAAM2gB,KAAK,CAACb,mBAAmB,CAAC,CAAA;EACpC,OAAA;EAEA,MAAA,IAAI,CAAC5R,iBAAiB,CAACqL,cAAc,CAACvZ,IAAI,CAAC,CAAA;EAE3C,MAAA,IAAI,CAAC8G,sBAAsB,CAAC9G,IAAI,CAAC,CAACoiB,MAAM,CACpCtE,YAAY,KAAK9Y,SAAS,GAAG,IAAI,GAAG8Y,YAAY,CACnD,CAAA;QAED,IAAI,CAAChE,SAAS,EAAE,CAAA;QAEhB,OAAO,IAAI,CAACtU,OAAO,CAAA;EACvB,KAAA;EAAC,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,kBAAA;EAAA,IAAA,KAAA,EAED,SAAkC,gBAAA,GAAA;EAC9B,MAAA,OAAO,IAAI,CAAC0I,iBAAiB,CAACsK,gBAAgB,EAAE,CAAA;EACpD,KAAA;EAAC,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,gBAAA;MAAA,KAED,EAAA,SAAA,cAAA,CAAsBxY,IAAU,EAAW;QACvC,IAAI,CAACA,IAAI,EAAE;UACP,MAAM2gB,KAAK,CAACb,mBAAmB,CAAC,CAAA;EACpC,OAAA;EAEA,MAAA,OAAO,IAAI,CAAC5R,iBAAiB,CAACC,cAAc,CAACnO,IAAI,CAAC,CAAA;EACtD,KAAA;EAAC,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,qBAAA;MAAA,KAED,EAAA,SAAA,mBAAA,CAA2BA,IAAU,EAAU;QAC3C,IAAI,CAACA,IAAI,EAAE;UACP,MAAM2gB,KAAK,CAACb,mBAAmB,CAAC,CAAA;EACpC,OAAA;EAEA,MAAA,IAAI,CAAC5R,iBAAiB,CAACuL,mBAAmB,CAACzZ,IAAI,CAAC,CAAA;EAEhD,MAAA,IAAI,CAAC8G,sBAAsB,CAAC9G,IAAI,CAAC,CAACqiB,QAAQ,EAAE,CAAA;QAC5C,IAAI,CAACvI,SAAS,EAAE,CAAA;QAEhB,OAAO,IAAI,CAACtU,OAAO,CAAA;EACvB,KAAA;EAAC,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,cAAA;MAAA,KAED,EAAA,SAAA,YAAA,CAAoBxF,IAAU,EAAU;QACpC,IAAI,CAACA,IAAI,EAAE;UACP,MAAM2gB,KAAK,CAACb,mBAAmB,CAAC,CAAA;EACpC,OAAA;QAEA,IAAMwC,UAAU,GAAG/d,MAAM,CAACvE,IAAI,CAACwF,OAAO,CAAC,CAACL,MAAM,EAAE,CAAA;QAChD,IAAMod,OAAO,GAAGD,UAAU,GAAGA,UAAU,CAACjd,GAAG,GAAG,CAAC,CAAA;EAE/C,MAAA,IAAMmd,UAAU,GAAG,IAAI,CAACvS,GAAG,CAAC9K,MAAM,EAAE,CAAA;QACpC,IAAMuV,OAAO,GAAG8H,UAAU,GAAGA,UAAU,CAACnd,GAAG,GAAG,CAAC,CAAA;EAE/C,MAAA,IAAMA,GAAG,GAAGkd,OAAO,GAAG7H,OAAO,CAAA;EAE7B,MAAA,IAAI,CAACnH,aAAa,CAACkP,SAAS,CAACpd,GAAG,CAAC,CAAA;QAEjC,OAAO,IAAI,CAACG,OAAO,CAAA;EACvB,KAAA;EAAC,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,UAAA;EAAA,IAAA,KAAA,EAED,SAAqC,QAAA,GAAA;EACjC,MAAA,OAAO,IAAI,CAAC2c,gBAAgB,CAACxK,QAAQ,EAAE,CAAA;EAC3C,KAAA;EAAC,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,UAAA;MAAA,KAED,EAAA,SAAA,QAAA,CAAgBF,KAAiB,EAAU;EACvC,MAAA,IAAI,CAAC0K,gBAAgB,CAACO,eAAe,CAACjL,KAAK,CAAC,CAAA;EAC5C,MAAA,IAAI,CAAC3O,gBAAgB,CAAC,IAAI,CAAC,CAAA;QAE3B,OAAO,IAAI,CAACtD,OAAO,CAAA;EACvB,KAAA;EAAC,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,WAAA;EAAA,IAAA,KAAA,EAED,SAAiBmd,SAAAA,CAAAA,MAAc,EAAE7iB,KAAc,EAAU;EACpD,MAAA,IAAI,CAAC4E,OAAO,CAAwCie,MAAM,CAAC,GAAG7iB,KAAK,CAAA;QACpE,OAAO,IAAI,CAAC0F,OAAO,CAAA;EACvB,KAAA;EAAC,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,UAAA;EAAA,IAAA,KAAA,EAED,SAA0B,QAAA,GAAA;EACtB,MAAA,IAAM2M,YAAY,GAAG,IAAI,CAACC,eAAe,EAAE,CAAA;EAC3C,MAAA,IAAID,YAAY,EAAE;EACd,QAAA,IAAI,CAACyQ,UAAU,CAACrQ,QAAQ,CAACJ,YAAY,CAAC,CAAA;EAC1C,OAAA;QAEA,OAAO,IAAI,CAAC3M,OAAO,CAAA;EACvB,KAAA;EAAC,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,QAAA;EAAA,IAAA,KAAA,EAED,SAAwB,MAAA,GAAA;EACpB,MAAA,IAAM2M,YAAY,GAAG,IAAI,CAACC,eAAe,EAAE,CAAA;EAC3C,MAAA,IAAID,YAAY,EAAE;EACd,QAAA,IAAI,CAACyQ,UAAU,CAACnQ,MAAM,CAACN,YAAY,CAAC,CAAA;EACxC,OAAA;QAEA,OAAO,IAAI,CAAC3M,OAAO,CAAA;EACvB,KAAA;EAAC,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,YAAA;EAAA,IAAA,KAAA,EAED,SAA4B,UAAA,GAAA;EACxB,MAAA,OAAOqd,OAAW,CAAA;EACtB,KAAA;EAAC,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,eAAA;EAAA,IAAA,KAAA,EAED,SACIC,aAAAA,CAAAA,SAAiB,EACjBC,MAAgC,EACpB;QACZ,IAAMha,KAAK,GAAGxE,MAAM,CAACye,KAAK,CAACF,SAAS,EAAEC,MAAM,CAAC,CAAA;EAC7C,MAAA,IAAI,CAACvd,OAAO,CAAC2Y,OAAO,CAACpV,KAAK,CAAC,CAAA;EAC3B,MAAA,OAAOA,KAAK,CAAA;EAChB,KAAA;EAAC,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,WAAA;MAAA,KAED,EAAA,SAAA,SAAA,CACI/I,IAAU,EAGN;EAAA,MAAA,IAAA,MAAA,GAAA,IAAA,CAAA;QAAA,IAFJoI,KAAK,uEAAG,IAAI,CAAA;EAAA,MAAA,IACZ4H,UAAmC,GAAA,SAAA,CAAA,MAAA,GAAA,CAAA,GAAA,SAAA,CAAA,CAAA,CAAA,GAAA,SAAA,CAAA;QAEnC,IAAMiT,UAAU,GAAG,SAAbA,UAAU,CACZC,KAAW,EACXC,MAAe,EACfC,WAAoC,EAC7B;UACP,IAAMC,aAAa,GAAG,IAAI/E,aAAa,CAAC4E,KAAK,EAAE,MAAI,CAAC,CAAA;EACpDG,QAAAA,aAAa,CAACC,IAAI,CACdF,WAAW,EACXD,MAAM,EACN,MAAI,CAACze,OAAO,CAAC6Z,cAAc,CAC9B,CAAA;SACJ,CAAA;QAED,IAAIve,IAAI,CAAC+F,QAAQ,EAAE,IAAI/F,IAAI,CAACX,aAAa,EAAE;UACvC,IAAIW,IAAI,CAACV,cAAc,EAAE;YACrB,IAAI,CAACikB,kBAAkB,CAACvjB,IAAI,EAAEoI,KAAK,EAAE4H,UAAU,CAAC,CAAA;EACpD,SAAC,MAAM;EACH,UAAA,IAAIvQ,MAAM,GAAGO,IAAI,CAACP,MAAM,CAAA;EAExB,UAAA,OAAOA,MAAM,EAAE;EACX;cACA,IAAIA,MAAM,CAACA,MAAM,EAAE;EACfwjB,cAAAA,UAAU,CAACxjB,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,CAAA;EACnC,aAAA;cACAA,MAAM,GAAGA,MAAM,CAACA,MAAM,CAAA;EAC1B,WAAA;EAEAwjB,UAAAA,UAAU,CAACjjB,IAAI,EAAEoI,KAAK,EAAE4H,UAAU,CAAC,CAAA;YACnC,IAAI,CAAC8J,SAAS,EAAE,CAAA;EACpB,SAAA;EACJ,OAAA;EACJ,KAAA;;EAEA;EACJ;EACA;EACA;EAHI,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,kBAAA;MAAA,KAIA,EAAA,SAAA,gBAAA,CAAwBnN,QAAqB,EAAQ;EACjD,MAAA,IAAMmR,YAAY,GAAG,IAAI,CAAC5P,iBAAiB,CAACyF,aAAa,EAAE,CAAA;QAC3D,IAAM6P,UAAU,GAAG7W,QAAQ,GACrB,IAAI,CAAC8W,uBAAuB,CAAC9W,QAAQ,CAAC,GACtC,KAAK,CAAA;EAEX,MAAA,IAAI,CAACiS,QAAQ,CAAC8E,MAAM,CAAC/W,QAAQ,CAAC,CAAA;EAE9B,MAAA,IAAI6W,UAAU,EAAE;EACZ,QAAA,IAAI,CAACG,iBAAiB,CAAC7F,YAAY,CAAC,CAAA;EACxC,OAAA;EAEA,MAAA,IAAI,CAAC9U,aAAa,CAAC,cAAc,CAAC,CAAA;EACtC,KAAA;EAAC,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,wBAAA;MAAA,KAED,EAAA,SAAA,sBAAA,CAA8BhJ,IAAU,EAAe;EACnD,MAAA,IAAIA,IAAI,CAAC+F,QAAQ,EAAE,EAAE;EACjB,QAAA,OAAO,IAAIuY,aAAa,CAACte,IAAI,EAAE,IAAI,CAAC,CAAA;EACxC,OAAC,MAAM;EACH,QAAA,OAAO,IAAI0d,WAAW,CAAC1d,IAAI,EAAE,IAAI,CAAC,CAAA;EACtC,OAAA;EACJ,KAAA;EAAC,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,iBAAA;MAAA,KAED,EAAA,SAAA,eAAA,CAAuBsE,QAA6B,EAAsB;EACtE,MAAA,IAAMtE,IAAI,GAAG,IAAI,CAACygB,OAAO,CAACnc,QAAQ,CAAC,CAAA;EACnC,MAAA,IAAItE,IAAI,EAAE;EACN,QAAA,OAAO,IAAI,CAAC8G,sBAAsB,CAAC9G,IAAI,CAAC,CAAA;EAC5C,OAAC,MAAM;EACH,QAAA,OAAO,IAAI,CAAA;EACf,OAAA;EACJ,KAAA;EAAC,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,kBAAA;MAAA,KAED,EAAA,SAAA,gBAAA,CAAwBwF,OAAoB,EAAW;QACnD,IAAMxF,IAAI,GAAG,IAAI,CAACygB,OAAO,CAAClc,MAAM,CAACiB,OAAO,CAAC,CAAC,CAAA;QAE1C,OAAOxF,IAAI,IAAI,IAAI,IAAIA,IAAI,CAACJ,IAAI,KAAK,IAAI,CAACA,IAAI,CAAA;EAClD,KAAA;EAAC,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,gBAAA;EAAA,IAAA,KAAA,EAED,SAAgC,cAAA,GAAA;EAC5B,MAAA,OAAO,IAAI,CAAC2T,aAAa,CAACqQ,aAAa,EAAE,CAAA;EAC7C,KAAA;EAAC,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,MAAA;EAAA,IAAA,KAAA,EAED,SAAoB,IAAA,GAAA;EAChB,MAAA,IAAA,CAAA,eAAA,CAAA,YAAA,CAAA,SAAA,CAAA,EAAA,MAAA,EAAA,IAAA,CAAA,CAAA,IAAA,CAAA,IAAA,CAAA,CAAA;EAEA,MAAA,IAAI,CAACpe,OAAO,GAAG,IAAI,CAACyK,GAAG,CAAA;QACvB,IAAI,CAACmK,aAAa,GAAG,KAAK,CAAA;QAE1B,IAAI,CAAC1V,OAAO,CAACgJ,GAAG,GAAG,IAAI,CAACmW,YAAY,EAAE,CAAA;EAEtC,MAAA,IAAI,IAAI,CAACnf,OAAO,CAACgI,UAAU,IAAI,IAAI,EAAE;UACjC,IAAI,CAAChI,OAAO,CAACgI,UAAU,GAAG,IAAI,CAACoX,oBAAoB,EAAE,CAAA;EACzD,OAAA;EAEA,MAAA,IAAI,CAAClF,QAAQ,GAAG,IAAIvS,gBAAgB,CAAC,IAAI,CAAC,CAAA;EAC1C,MAAA,IAAI,CAAC0X,UAAU,GAAG,IAAIlU,UAAU,CAAC,IAAI,CAAC,CAAA;EACtC,MAAA,IAAI,CAACsS,gBAAgB,GAAG,IAAI3K,gBAAgB,CAAC,IAAI,CAAC,CAAA;EAClD,MAAA,IAAI,CAACtJ,iBAAiB,GAAG,IAAIiP,iBAAiB,CAAC,IAAI,CAAC,CAAA;EACpD,MAAA,IAAI,CAACjB,UAAU,GAAG,IAAInY,kBAAkB,CAAC,IAAI,CAAC,CAAA;EAC9C,MAAA,IAAI,CAACwP,aAAa,GAAG,IAAI4G,aAAa,CAAC,IAAI,CAAC,CAAA;EAC5C,MAAA,IAAI,CAACyI,UAAU,GAAG,IAAI5Q,UAAU,CAAC,IAAI,CAAC,CAAA;QAEtC,IAAI,CAACgS,QAAQ,EAAE,CAAA;QAEf,IAAI,CAACxe,OAAO,CAACuN,EAAE,CAAC,OAAO,EAAE,IAAI,CAACkR,WAAW,CAAC,CAAA;QAC1C,IAAI,CAACze,OAAO,CAACuN,EAAE,CAAC,UAAU,EAAE,IAAI,CAACmR,cAAc,CAAC,CAAA;EAEhD,MAAA,IAAI,IAAI,CAACxf,OAAO,CAACyf,cAAc,EAAE;UAC7B,IAAI,CAAC3e,OAAO,CAACuN,EAAE,CAAC,aAAa,EAAE,IAAI,CAACqR,iBAAiB,CAAC,CAAA;EAC1D,OAAA;EACJ,KAAA;EAAC,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,QAAA;EAAA,IAAA,KAAA,EAED,SAAsB,MAAA,GAAA;EAClB,MAAA,IAAI,CAAC5e,OAAO,CAACqD,KAAK,EAAE,CAAA;EACpB,MAAA,IAAI,CAACrD,OAAO,CAACyN,GAAG,EAAE,CAAA;EAElB,MAAA,IAAI,CAAC2P,UAAU,CAACvN,MAAM,EAAE,CAAA;QAExB,IAAI,CAACzV,IAAI,GAAG,IAAIX,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,CAAA;EAE9B,MAAA,IAAA,CAAA,eAAA,CAAA,YAAA,CAAA,SAAA,CAAA,EAAA,QAAA,EAAA,IAAA,CAAA,CAAA,IAAA,CAAA,IAAA,CAAA,CAAA;EACJ,KAAA;EAAC,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,cAAA;MAAA,KAED,EAAA,SAAA,YAAA,CAAuBoF,YAA0B,EAAkB;EAC/D,MAAA,IAAI,IAAI,CAACK,OAAO,CAACiJ,WAAW,EAAE;EAC1B,QAAA,OAAO,IAAI,CAACuO,UAAU,CAACtF,YAAY,CAACvS,YAAY,CAAC,CAAA;EACrD,OAAC,MAAM;EACH,QAAA,OAAO,KAAK,CAAA;EAChB,OAAA;EACJ,KAAA;EAAC,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,YAAA;MAAA,KAED,EAAA,SAAA,UAAA,CAAqBA,YAA0B,EAAW;EACtD,MAAA,IAAI,IAAI,CAACK,OAAO,CAACiJ,WAAW,EAAE;EAC1B,QAAA,OAAO,IAAI,CAACuO,UAAU,CAAC5E,UAAU,CAACjT,YAAY,CAAC,CAAA;EACnD,OAAC,MAAM;EACH,QAAA,OAAO,KAAK,CAAA;EAChB,OAAA;EACJ,KAAA;EAAC,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,WAAA;MAAA,KAED,EAAA,SAAA,SAAA,CAAoBA,YAA0B,EAAW;EACrD,MAAA,IAAI,IAAI,CAACK,OAAO,CAACiJ,WAAW,EAAE;UAC1B,IAAM3M,MAAM,GAAG,IAAI,CAACkb,UAAU,CAAC7E,SAAS,CAAChT,YAAY,CAAC,CAAA;EAEtD,QAAA,IAAI,CAACkP,aAAa,CAAC8Q,cAAc,EAAE,CAAA;EACnC,QAAA,OAAOrjB,MAAM,CAAA;EACjB,OAAC,MAAM;EACH,QAAA,OAAO,KAAK,CAAA;EAChB,OAAA;EACJ,KAAA;EAAC,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,WAAA;MAAA,KAED,EAAA,SAAA,SAAA,CAAoBqD,YAA0B,EAAW;EACrD,MAAA,IAAI,IAAI,CAACK,OAAO,CAACiJ,WAAW,EAAE;EAC1B,QAAA,OAAO,IAAI,CAACuO,UAAU,CAAC3E,SAAS,CAAClT,YAAY,CAAC,CAAA;EAClD,OAAC,MAAM;EACH,QAAA,OAAO,KAAK,CAAA;EAChB,OAAA;EACJ,KAAA;EAAC,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,eAAA;EAAA,IAAA,KAAA,EAED,SAAkC,aAAA,GAAA;EAAA,MAAA,IAAA,qBAAA,CAAA;EAC9B,MAAA,OAAA,CAAA,qBAAA,GAAO,IAAI,CAACK,OAAO,CAAC4f,aAAa,yEAAI,CAAC,CAAA;EAC1C,KAAA;EAAC,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,UAAA;EAAA,IAAA,KAAA,EAED,SAAyB,QAAA,GAAA;EACrB,MAAA,IAAI,IAAI,CAAC5f,OAAO,CAAC3F,IAAI,EAAE;UACnB,IAAI,CAAC+hB,UAAU,CAAC,IAAI,CAACpc,OAAO,CAAC3F,IAAI,EAAE,IAAI,CAAC,CAAA;EAC5C,OAAC,MAAM;EACH,QAAA,IAAMwlB,OAAO,GAAG,IAAI,CAACC,cAAc,CAAC,IAAI,CAAC,CAAA;EAEzC,QAAA,IAAID,OAAO,EAAE;YACT,IAAI,CAACrD,iBAAiB,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAA;EAC5C,SAAC,MAAM;EACH,UAAA,IAAI,CAACJ,UAAU,CAAC,EAAE,EAAE,IAAI,CAAC,CAAA;EAC7B,SAAA;EACJ,OAAA;EACJ,KAAA;EAAC,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,gBAAA;MAAA,KAED,EAAA,SAAA,cAAA,CAAuB9gB,IAAiB,EAA8B;EAAA,MAAA,IAAA,MAAA,GAAA,IAAA,CAAA;EAClE,MAAA,IAAMukB,OAAO,GACT,IAAI,CAAC7f,OAAO,CAAC6f,OAAO,IAAK,IAAI,CAAC/e,OAAO,CAACzG,IAAI,CAAC,KAAK,CAAmB,CAAA;EAEvE,MAAA,IAAM0lB,gBAAgB,GAAG,SAAnBA,gBAAgB,CAAIxT,GAAW,EAA0B;EAC3D,QAAA,IAAMnB,OAA4B,GAAG;EAAEmB,UAAAA,GAAG,EAAHA,GAAAA;WAAK,CAAA;UAE5CyT,cAAc,CAAC5U,OAAO,CAAC,CAAA;EAEvB,QAAA,OAAOA,OAAO,CAAA;SACjB,CAAA;EAED,MAAA,IAAM4U,cAAc,GAAG,SAAjBA,cAAc,CAAI5U,OAA4B,EAAW;EAC3D,QAAA,IAAI9P,IAAI,KAAJA,IAAAA,IAAAA,IAAI,eAAJA,IAAI,CAAEuC,EAAE,EAAE;EACV;EACA,UAAA,IAAMxD,IAAI,GAAG;cAAEiB,IAAI,EAAEA,IAAI,CAACuC,EAAAA;aAAI,CAAA;EAC9BuN,UAAAA,OAAO,CAAC,MAAM,CAAC,GAAG/Q,IAAI,CAAA;EAC1B,SAAC,MAAM;EACH;EACA,UAAA,IAAM4lB,cAAc,GAAG,MAAI,CAACC,qBAAqB,EAAE,CAAA;EACnD,UAAA,IAAID,cAAc,EAAE;EAChB,YAAA,IAAM5lB,KAAI,GAAG;EAAE2Z,cAAAA,aAAa,EAAEiM,cAAAA;eAAgB,CAAA;EAC9C7U,YAAAA,OAAO,CAAC,MAAM,CAAC,GAAG/Q,KAAI,CAAA;EAC1B,WAAA;EACJ,SAAA;SACH,CAAA;EAED,MAAA,IAAI,OAAOwlB,OAAO,KAAK,UAAU,EAAE;UAC/B,OAAOA,OAAO,CAACvkB,IAAI,CAAC,CAAA;EACxB,OAAC,MAAM,IAAI,OAAOukB,OAAO,KAAK,QAAQ,EAAE;UACpC,OAAOE,gBAAgB,CAACF,OAAO,CAAC,CAAA;SACnC,MAAM,IAAIA,OAAO,IAAI,QAAOA,OAAO,CAAA,KAAK,QAAQ,EAAE;UAC/CG,cAAc,CAACH,OAAO,CAAC,CAAA;EACvB,QAAA,OAAOA,OAAO,CAAA;EAClB,OAAC,MAAM;EACH,QAAA,OAAO,IAAI,CAAA;EACf,OAAA;EACJ,KAAA;EAAC,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,uBAAA;EAAA,IAAA,KAAA,EAED,SAA+C,qBAAA,GAAA;EAC3C,MAAA,IAAI,IAAI,CAAC7f,OAAO,CAACoV,SAAS,EAAE;EACxB,QAAA,OAAO,IAAI,CAACqI,gBAAgB,CAACyC,qBAAqB,EAAE,CAAA;EACxD,OAAC,MAAM;EACH,QAAA,OAAO,IAAI,CAAA;EACf,OAAA;EACJ,KAAA;EAAC,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,UAAA;MAAA,KAED,EAAA,SAAA,QAAA,CAAiB7lB,IAAgB,EAAQ;EAAA,MAAA,IAAA,MAAA,GAAA,IAAA,CAAA;EACrC,MAAA,IAAM8lB,MAAM,GAAG,SAATA,MAAM,GAAe;EACvB,QAAA,IAAI,CAAC,MAAI,CAACzK,aAAa,EAAE;YACrB,MAAI,CAACA,aAAa,GAAG,IAAI,CAAA;EACzB,UAAA,MAAI,CAACpR,aAAa,CAAC,WAAW,CAAC,CAAA;EACnC,SAAA;SACH,CAAA;EAED,MAAA,IAAI,CAAC,IAAI,CAACtE,OAAO,CAACtF,SAAS,EAAE;EACzB,QAAA,OAAA;EACJ,OAAA;EAEA,MAAA,IAAI,CAACQ,IAAI,GAAG,IAAI,IAAI,CAAC8E,OAAO,CAACtF,SAAS,CAClC,IAAI,EACJ,IAAI,EACJ,IAAI,CAACsF,OAAO,CAACtF,SAAS,CACzB,CAAA;EAED,MAAA,IAAI,CAAC8O,iBAAiB,CAAC1H,KAAK,EAAE,CAAA;EAE9B,MAAA,IAAI,CAAC5G,IAAI,CAACQ,YAAY,CAACrB,IAAI,CAAC,CAAA;EAE5B,MAAA,IAAM4Z,gBAAgB,GAAG,IAAI,CAAC+J,eAAe,EAAE,CAAA;EAE/C,MAAA,IAAI,CAAC5Z,gBAAgB,CAAC,IAAI,CAAC,CAAA;QAE3B,IAAI,CAAC6P,gBAAgB,EAAE;EACnBkM,QAAAA,MAAM,EAAE,CAAA;EACZ,OAAC,MAAM;EACH;EACA,QAAA,IAAI,CAACC,uBAAuB,CAACD,MAAM,CAAC,CAAA;EACxC,OAAA;EACJ,KAAA;;EAEA;EACA;EAAA,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,iBAAA;EAAA,IAAA,KAAA,EACA,SAAmC,eAAA,GAAA;EAAA,MAAA,IAAA,MAAA,GAAA,IAAA,CAAA;EAC/B,MAAA,IAAME,YAAY,GAAG,SAAfA,YAAY,GAAoB;EAClC;EACA,QAAA,IAAI,CAAC,MAAI,CAACrgB,OAAO,CAACoV,SAAS,EAAE;EACzB,UAAA,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,CAAA;EACzB,SAAC,MAAM;EACH,UAAA,IAAMrC,KAAK,GAAG,MAAI,CAAC0K,gBAAgB,CAAClJ,mBAAmB,EAAE,CAAA;YAEzD,IAAI,CAACxB,KAAK,EAAE;EACR,YAAA,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,CAAA;EACzB,WAAC,MAAM;cACH,IAAMkB,iBAAgB,GAClB,MAAI,CAACwJ,gBAAgB,CAACO,eAAe,CAACjL,KAAK,CAAC,CAAA;;EAEhD;EACA,YAAA,OAAO,CAAC,IAAI,EAAEkB,iBAAgB,CAAC,CAAA;EACnC,WAAA;EACJ,SAAA;SACH,CAAA;EAED,MAAA,IAAMqM,aAAa,GAAG,SAAhBA,aAAa,GAAkB;EACjC;EACA,QAAA,IAAI,MAAI,CAACtgB,OAAO,CAACugB,QAAQ,KAAK,KAAK,EAAE;EACjC,UAAA,OAAO,KAAK,CAAA;EAChB,SAAA;EAEA,QAAA,IAAMC,QAAQ,GAAG,MAAI,CAACC,mBAAmB,EAAE,CAAA;UAC3C,IAAIxM,gBAAgB,GAAG,KAAK,CAAA;UAE5B,MAAI,CAAC/Y,IAAI,CAACmC,OAAO,CAAC,UAAC/B,IAAU,EAAEc,KAAa,EAAK;YAC7C,IAAId,IAAI,CAACV,cAAc,EAAE;EACrBqZ,YAAAA,gBAAgB,GAAG,IAAI,CAAA;EACvB,YAAA,OAAO,KAAK,CAAA;EAChB,WAAC,MAAM,IAAI,CAAC3Y,IAAI,CAACW,WAAW,EAAE,EAAE;EAC5B,YAAA,OAAO,KAAK,CAAA;EAChB,WAAC,MAAM;cACHX,IAAI,CAACkD,OAAO,GAAG,IAAI,CAAA;cACnB,OAAOpC,KAAK,KAAKokB,QAAQ,CAAA;EAC7B,WAAA;EACJ,SAAC,CAAC,CAAA;EAEF,QAAA,OAAOvM,gBAAgB,CAAA;SAC1B,CAAA;EAED,MAAA,IAAA,aAAA,GAAqCoM,YAAY,EAAE;EAAA,QAAA,cAAA,GAAA,cAAA,CAAA,aAAA,EAAA,CAAA,CAAA;UAA9CK,UAAU,GAAA,cAAA,CAAA,CAAA,CAAA;EAAEzM,QAAAA,gBAAgB,qBAAmB;;QAEpD,IAAI,CAACyM,UAAU,EAAE;UACbzM,gBAAgB,GAAGqM,aAAa,EAAE,CAAA;EACtC,OAAA;EAEA,MAAA,OAAOrM,gBAAgB,CAAA;EAC3B,KAAA;;EAEA;EACA;EAAA,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,yBAAA;MAAA,KACA,EAAA,SAAA,uBAAA,CAAgCI,UAAsB,EAAQ;EAAA,MAAA,IAAA,MAAA,GAAA,IAAA,CAAA;EAC1D,MAAA,IAAMgM,YAAY,GAAG,SAAfA,YAAY,GAAkB;EAChC,QAAA,IAAI,CAAC,MAAI,CAACrgB,OAAO,CAACoV,SAAS,EAAE;EACzB,UAAA,OAAO,KAAK,CAAA;EAChB,SAAC,MAAM;EACH,UAAA,IAAMrC,KAAK,GAAG,MAAI,CAAC0K,gBAAgB,CAAClJ,mBAAmB,EAAE,CAAA;YAEzD,IAAI,CAACxB,KAAK,EAAE;EACR,YAAA,OAAO,KAAK,CAAA;EAChB,WAAC,MAAM;cACH,MAAI,CAAC0K,gBAAgB,CAAC2C,uBAAuB,CACzCrN,KAAK,EACLsB,UAAU,CACb,CAAA;EAED,YAAA,OAAO,IAAI,CAAA;EACf,WAAA;EACJ,SAAA;SACH,CAAA;EAED,MAAA,IAAMiM,aAAa,GAAG,SAAhBA,aAAa,GAAe;EAC9B,QAAA,IAAME,QAAQ,GAAG,MAAI,CAACC,mBAAmB,EAAE,CAAA;UAC3C,IAAIxL,YAAY,GAAG,CAAC,CAAA;EAEpB,QAAA,IAAME,eAAe,GAAG,SAAlBA,eAAe,CAAI7Z,IAAU,EAAW;EAC1C2Z,UAAAA,YAAY,IAAI,CAAC,CAAA;EACjB,UAAA,MAAI,CAACxR,SAAS,CAACnI,IAAI,EAAE,KAAK,EAAE,YAAM;EAC9B2Z,YAAAA,YAAY,IAAI,CAAC,CAAA;EACjBtB,YAAAA,SAAS,EAAE,CAAA;EACf,WAAC,CAAC,CAAA;WACL,CAAA;EAED,QAAA,IAAMA,SAAS,GAAG,SAAZA,SAAS,GAAe;YAC1B,MAAI,CAACzY,IAAI,CAACmC,OAAO,CAAC,UAAC/B,IAAU,EAAEc,KAAa,EAAK;cAC7C,IAAId,IAAI,CAACV,cAAc,EAAE;EACrB,cAAA,IAAI,CAACU,IAAI,CAAC2P,UAAU,EAAE;kBAClBkK,eAAe,CAAC7Z,IAAI,CAAC,CAAA;EACzB,eAAA;EAEA,cAAA,OAAO,KAAK,CAAA;EAChB,aAAC,MAAM;gBACH,MAAI,CAACmI,SAAS,CAACnI,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,CAAA;gBAEjC,OAAOc,KAAK,KAAKokB,QAAQ,CAAA;EAC7B,aAAA;EACJ,WAAC,CAAC,CAAA;YAEF,IAAIvL,YAAY,KAAK,CAAC,EAAE;EACpBZ,YAAAA,UAAU,EAAE,CAAA;EAChB,WAAA;WACH,CAAA;EAEDV,QAAAA,SAAS,EAAE,CAAA;SACd,CAAA;QAED,IAAI,CAAC0M,YAAY,EAAE,EAAE;EACjBC,QAAAA,aAAa,EAAE,CAAA;EACnB,OAAA;EACJ,KAAA;EAAC,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,qBAAA;EAAA,IAAA,KAAA,EAED,SAAsC,mBAAA,GAAA;EAClC,MAAA,IAAI,IAAI,CAACtgB,OAAO,CAACugB,QAAQ,KAAK,IAAI,EAAE;EAChC,QAAA,OAAO,CAAC,CAAC,CAAA;SACZ,MAAM,IAAI,OAAO,IAAI,CAACvgB,OAAO,CAACugB,QAAQ,KAAK,QAAQ,EAAE;EAClD,QAAA,OAAO,IAAI,CAACvgB,OAAO,CAACugB,QAAQ,CAAA;SAC/B,MAAM,IAAI,OAAO,IAAI,CAACvgB,OAAO,CAACugB,QAAQ,KAAK,QAAQ,EAAE;UAClD,OAAOI,QAAQ,CAAC,IAAI,CAAC3gB,OAAO,CAACugB,QAAQ,EAAE,EAAE,CAAC,CAAA;EAC9C,OAAC,MAAM;EACH,QAAA,OAAO,CAAC,CAAA;EACZ,OAAA;EACJ,KAAA;EAAC,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,gBAAA;MAAA,KAwCD,EAAA,SAAA,cAAA,CAAuBzf,OAAoB,EAAsB;EAC7D,MAAA,IAAM8f,OAAO,GAAG/gB,MAAM,CAACiB,OAAO,CAAC,CAAA;EAE/B,MAAA,IAAMgZ,OAAO,GAAG8G,OAAO,CAAC9E,OAAO,CAAC,iBAAiB,CAAC,CAAA;QAElD,IAAIhC,OAAO,CAACre,MAAM,EAAE;EAChB,QAAA,IAAMH,MAAI,GAAG,IAAI,CAACygB,OAAO,CAACjC,OAAO,CAAwB,CAAA;EAEzD,QAAA,IAAIxe,MAAI,EAAE;YACN,OAAO;EACHmgB,YAAAA,IAAI,EAAE,QAAQ;EACdngB,YAAAA,IAAI,EAAJA,MAAAA;aACH,CAAA;EACL,SAAA;EACJ,OAAC,MAAM;EACH,QAAA,IAAMiQ,GAAG,GAAGqV,OAAO,CAAC9E,OAAO,CAAC,iBAAiB,CAAC,CAAA;UAC9C,IAAIvQ,GAAG,CAAC9P,MAAM,EAAE;EACZ,UAAA,IAAMH,MAAI,GAAG,IAAI,CAACygB,OAAO,CAACxQ,GAAG,CAAwB,CAAA;EACrD,UAAA,IAAIjQ,MAAI,EAAE;cACN,OAAO;EACHmgB,cAAAA,IAAI,EAAE,OAAO;EACbngB,cAAAA,IAAI,EAAJA,MAAAA;eACH,CAAA;EACL,WAAA;EACJ,SAAA;EACJ,OAAA;EAEA,MAAA,OAAO,IAAI,CAAA;EACf,KAAA;EAAC,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,SAAA;MAAA,KAED,EAAA,SAAA,OAAA,CAAgBsE,QAA6B,EAAe;EACxD,MAAA,IAAMyZ,GAAG,GAAGzZ,QAAQ,CAACkc,OAAO,CAAC,kBAAkB,CAAC,CAAA;EAChD,MAAA,IAAIzC,GAAG,CAAC5d,MAAM,KAAK,CAAC,EAAE;EAClB,QAAA,OAAO,IAAI,CAAA;EACf,OAAC,MAAM;EACH,QAAA,OAAO4d,GAAG,CAAChf,IAAI,CAAC,MAAM,CAAC,CAAA;EAC3B,OAAA;EACJ,KAAA;EAAC,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,WAAA;EAAA,IAAA,KAAA,EAuBD,SAA0B,SAAA,GAAA;EACtB,MAAA,IAAI,IAAI,CAAC2F,OAAO,CAACoV,SAAS,EAAE;EACxB,QAAA,IAAI,CAACqI,gBAAgB,CAACrI,SAAS,EAAE,CAAA;EACrC,OAAA;EACJ,KAAA;EAAC,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,mBAAA;MAAA,KAED,EAAA,SAAA,iBAAA,CAA0BgE,YAAqB,EAAQ;EACnD,MAAA,IAAM9d,IAAI,GAAG,IAAI,CAACoS,eAAe,EAAE,CAAA;EACnC,MAAA,IAAIpS,IAAI,EAAE;EACN,QAAA,IAAM4E,WAAW,GAAG,IAAI,CAACkC,sBAAsB,CAAC9G,IAAI,CAAC,CAAA;EACrD,QAAA,IAAI4E,WAAW,EAAE;EACbA,UAAAA,WAAW,CAACwd,MAAM,CAACtE,YAAY,CAAC,CAAA;EACpC,SAAA;EACJ,OAAA;EACJ,KAAA;EAAC,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,qBAAA;EAAA,IAAA,KAAA,EAED,SAAoC,mBAAA,GAAA;EAChC,MAAA,IAAM9d,IAAI,GAAG,IAAI,CAACoS,eAAe,EAAE,CAAA;EACnC,MAAA,IAAIpS,IAAI,EAAE;EACN,QAAA,IAAI,CAACyZ,mBAAmB,CAACzZ,IAAI,CAAC,CAAA;EAClC,OAAA;EACJ,KAAA;EAAC,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,sBAAA;EAAA,IAAA,KAAA,EAED,SAAuC,oBAAA,GAAA;EACnC,MAAA,IAAI,IAAI,CAAC0E,OAAO,CAACgJ,GAAG,EAAE;EAClB;EACA,QAAA,OAAO,UAAU,CAAA;EACrB,OAAC,MAAM;EACH;EACA,QAAA,OAAO,UAAU,CAAA;EACrB,OAAA;EACJ,KAAA;EAAC,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,cAAA;EAAA,IAAA,KAAA,EAED,SAAgC,YAAA,GAAA;EAC5B,MAAA,IAAI,IAAI,CAAChJ,OAAO,CAACgJ,GAAG,IAAI,IAAI,EAAE;EAC1B,QAAA,OAAO,IAAI,CAAChJ,OAAO,CAACgJ,GAAG,CAAA;EAC3B,OAAC,MAAM;UACH,IAAM6X,OAAO,GAAG,IAAI,CAAC/f,OAAO,CAACzG,IAAI,CAAC,KAAK,CAAY,CAAA;UAEnD,IACIwmB,OAAO,KAAK,IAAI,IAChBA,OAAO,KAAK,KAAK,IACjBA,OAAO,KAAKvgB,SAAS,EACvB;EACE,UAAA,OAAO,IAAI,CAAA;EACf,SAAC,MAAM;EACH,UAAA,OAAO,KAAK,CAAA;EAChB,SAAA;EACJ,OAAA;EACJ,KAAA;EAAC,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,cAAA;EAAA,IAAA,KAAA,EAED,SACIhF,YAAAA,CAAAA,IAAiB,EACjB4gB,YAAgC,EAC5B;EAAA,MAAA,IAAA,MAAA,GAAA,IAAA,CAAA;EACJ,MAAA,IAAM9G,SAAS,GAAG,SAAZA,SAAS,GAAe;EAC1B,QAAA,IAAI,MAAI,CAACpV,OAAO,CAACoV,SAAS,EAAE;EACxB,UAAA,MAAI,CAACqI,gBAAgB,CAACrI,SAAS,EAAE,CAAA;EACrC,SAAA;SACH,CAAA;QAED,IAAI,CAAC9Z,IAAI,EAAE;EACP;UACA,IAAI,CAACwlB,mBAAmB,EAAE,CAAA;EAC1B1L,QAAAA,SAAS,EAAE,CAAA;EACX,QAAA,OAAA;EACJ,OAAA;EACA,MAAA,IAAM2L,cAAc,GAAG;EAAE3H,QAAAA,YAAY,EAAE,IAAI;EAAE4H,QAAAA,UAAU,EAAE,IAAA;SAAM,CAAA;QAC/D,IAAMC,aAAa,qCAAQF,cAAc,CAAA,EAAM7E,YAAY,IAAI,EAAE,CAAG,CAAA;EAEpE,MAAA,IAAMgF,SAAS,GAAG,SAAZA,SAAS,GAAkB;EAC7B,QAAA,IAAI,MAAI,CAAClhB,OAAO,CAACmhB,eAAe,EAAE;EAC9B,UAAA,OACI,MAAI,CAACnhB,OAAO,CAACohB,UAAU,KAAK,IAAI,IAChC,MAAI,CAACphB,OAAO,CAACmhB,eAAe,CAAC7lB,IAAI,CAAC,CAAA;EAE1C,SAAC,MAAM;EACH,UAAA,OAAO,MAAI,CAAC0E,OAAO,CAACohB,UAAU,KAAK,IAAI,CAAA;EAC3C,SAAA;SACH,CAAA;EAED,MAAA,IAAMC,WAAW,GAAG,SAAdA,WAAW,GAAe;EAC5B,QAAA,IAAMtmB,MAAM,GAAGO,IAAI,CAACP,MAAM,CAAA;UAE1B,IAAIA,MAAM,IAAIA,MAAM,CAACA,MAAM,IAAI,CAACA,MAAM,CAACyD,OAAO,EAAE;EAC5C,UAAA,MAAI,CAACmQ,QAAQ,CAAC5T,MAAM,EAAE,KAAK,CAAC,CAAA;EAChC,SAAA;SACH,CAAA;QAED,IAAI,CAACmmB,SAAS,EAAE,EAAE;EACd,QAAA,OAAA;EACJ,OAAA;QAEA,IAAI,IAAI,CAAC1X,iBAAiB,CAACC,cAAc,CAACnO,IAAI,CAAC,EAAE;UAC7C,IAAI2lB,aAAa,CAACD,UAAU,EAAE;YAC1B,IAAI,CAACF,mBAAmB,EAAE,CAAA;EAC1B,UAAA,IAAI,CAACxc,aAAa,CAAC,aAAa,EAAE;EAC9BhJ,YAAAA,IAAI,EAAE,IAAI;EACVgmB,YAAAA,aAAa,EAAEhmB,IAAAA;EACnB,WAAC,CAAC,CAAA;EACN,SAAA;EACJ,OAAC,MAAM;EACH,QAAA,IAAMimB,cAAc,GAAG,IAAI,CAAC7T,eAAe,EAAE,IAAI,IAAI,CAAA;UACrD,IAAI,CAACoT,mBAAmB,EAAE,CAAA;UAC1B,IAAI,CAACjM,cAAc,CAACvZ,IAAI,EAAE2lB,aAAa,CAAC7H,YAAY,CAAC,CAAA;EAErD,QAAA,IAAI,CAAC9U,aAAa,CAAC,aAAa,EAAE;EAC9BhJ,UAAAA,IAAI,EAAJA,IAAI;EACJkmB,UAAAA,eAAe,EAAED,cAAAA;EACrB,SAAC,CAAC,CAAA;EACFF,QAAAA,WAAW,EAAE,CAAA;EACjB,OAAA;EAEAjM,MAAAA,SAAS,EAAE,CAAA;EACf,KAAA;EAAC,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,YAAA;EAAA,IAAA,KAAA,EAED,SAAmB/a,UAAAA,CAAAA,IAAuB,EAAEgR,UAAuB,EAAQ;EACvE,MAAA,IAAIhR,IAAI,EAAE;EACN,QAAA,IAAIgR,UAAU,EAAE;EACZ,UAAA,IAAI,CAACoW,aAAa,CAACpW,UAAU,CAAC,CAAA;EAC9B,UAAA,IAAI,CAACqW,WAAW,CAACrnB,IAAI,EAAEgR,UAAU,CAAC,CAAA;EACtC,SAAC,MAAM;EACH,UAAA,IAAI,CAACsW,QAAQ,CAACtnB,IAAI,CAAC,CAAA;EACvB,SAAA;EAEA,QAAA,IAAI,IAAI,CAACoF,UAAU,EAAE,EAAE;EACnB,UAAA,IAAI,CAAC+X,UAAU,CAAChX,OAAO,EAAE,CAAA;EAC7B,SAAA;EACJ,OAAA;EAEA,MAAA,IAAI,CAAC8D,aAAa,CAAC,gBAAgB,EAAE;EACjCsd,QAAAA,SAAS,EAAEvnB,IAAI;EACfwnB,QAAAA,WAAW,EAAExW,UAAAA;EACjB,OAAC,CAAC,CAAA;EACN,KAAA;EAAC,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,eAAA;MAAA,KAED,EAAA,SAAA,aAAA,CAAsBA,UAAgB,EAAQ;QAC1C,IAAMyW,wBAAwB,GAC1B,IAAI,CAACtY,iBAAiB,CAACuY,qBAAqB,CAAC1W,UAAU,CAAC,CAAA;EAAC,MAAA,IAAA,SAAA,GAAA,0BAAA,CAC7CyW,wBAAwB,CAAA;EAAA,QAAA,KAAA,CAAA;EAAA,MAAA,IAAA;UAAxC,KAA0C,SAAA,CAAA,CAAA,EAAA,EAAA,CAAA,CAAA,KAAA,GAAA,SAAA,CAAA,CAAA,EAAA,EAAA,IAAA,GAAA;EAAA,UAAA,IAA/B1kB,CAAC,GAAA,KAAA,CAAA,KAAA,CAAA;EACR,UAAA,IAAI,CAACoM,iBAAiB,CAACuL,mBAAmB,CAAC3X,CAAC,CAAC,CAAA;EACjD,SAAA;EAAC,OAAA,CAAA,OAAA,GAAA,EAAA;EAAA,QAAA,SAAA,CAAA,CAAA,CAAA,GAAA,CAAA,CAAA;EAAA,OAAA,SAAA;EAAA,QAAA,SAAA,CAAA,CAAA,EAAA,CAAA;EAAA,OAAA;EACL,KAAA;EAAC,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,aAAA;EAAA,IAAA,KAAA,EAED,SAAoB/C,WAAAA,CAAAA,IAAgB,EAAEgR,UAAgB,EAAQ;EAC1DA,MAAAA,UAAU,CAAC3P,YAAY,CAACrB,IAAI,CAAC,CAAA;QAE7BgR,UAAU,CAACzQ,cAAc,GAAG,KAAK,CAAA;QACjCyQ,UAAU,CAACJ,UAAU,GAAG,KAAK,CAAA;EAE7B,MAAA,IAAI,CAAC7G,gBAAgB,CAACiH,UAAU,CAAC,CAAA;EACrC,KAAA;EAAC,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,mBAAA;EAAA,IAAA,KAAA,EAED,2BACI2W,YAAiD,EACjD3W,UAAuB,EACvBC,UAAwC,EACpC;QACJ,IAAMF,OAAO,GAAG4W,YAAY,IAAI,IAAI,CAAClC,cAAc,CAACzU,UAAU,CAAC,CAAA;QAE/D,IAAI,CAACgU,UAAU,CAAC4C,WAAW,CAAC7W,OAAO,EAAEC,UAAU,EAAEC,UAAU,CAAC,CAAA;EAChE,KAAA;EAAC,GAAA,EAAA;EAAA,IAAA,GAAA,EAAA,oBAAA;MAAA,KAED,EAAA,SAAA,kBAAA,CACIhQ,IAAU,EAGN;EAAA,MAAA,IAAA,MAAA,GAAA,IAAA,CAAA;QAAA,IAFJoI,KAAK,uEAAG,IAAI,CAAA;EAAA,MAAA,IACZ4H,UAAmC,GAAA,SAAA,CAAA,MAAA,GAAA,CAAA,GAAA,SAAA,CAAA,CAAA,CAAA,GAAA,SAAA,CAAA;QAEnChQ,IAAI,CAAC2P,UAAU,GAAG,IAAI,CAAA;EAEtB,MAAA,IAAI,CAACuR,iBAAiB,CAAC,IAAI,EAAElhB,IAAI,EAAE,YAAM;UACrC,MAAI,CAACmI,SAAS,CAACnI,IAAI,EAAEoI,KAAK,EAAE4H,UAAU,CAAC,CAAA;EAC3C,OAAC,CAAC,CAAA;EACN,KAAA;EAAC,GAAA,CAAA,CAAA,CAAA;EAAA,EAAA,OAAA,YAAA,CAAA;EAAA,CAAA,CA3nC6ByF,WAAW,EAAA;EA4nC5C,eAAA,CA5nCYuK,YAAY,EACsB,UAAA,EAAA;EACvCzB,EAAAA,cAAc,EAAE,MAAM;EACtB9Y,EAAAA,UAAU,EAAE,IAAI;EAChBwf,EAAAA,QAAQ,EAAE,KAAK;EAAE;EACjBhW,EAAAA,UAAU,EAAE,IAAI;EAChB;EACA;EACAvC,EAAAA,UAAU,EAAE1H,SAAS;EACrBjG,EAAAA,IAAI,EAAEiG,SAAS;EACf2M,EAAAA,UAAU,EAAE3M,SAAS;EACrBuf,EAAAA,OAAO,EAAEvf,SAAS;EAClB2I,EAAAA,WAAW,EAAE,KAAK;EAClBmF,EAAAA,eAAe,EAAE,IAAI;EACrB1T,EAAAA,SAAS,EAAEH,IAAI;EACf6F,EAAAA,SAAS,EAAEE,SAAS;EAAE;EACtBqC,EAAAA,WAAW,EAAErC,SAAS;EAAE;EACxB6gB,EAAAA,eAAe,EAAE7gB,SAAS;EAC1BwJ,EAAAA,UAAU,EAAExJ,SAAS;EACrBqB,EAAAA,UAAU,EAAErB,SAAS;EACrB4B,EAAAA,UAAU,EAAE5B,SAAS;EACrBkU,EAAAA,qBAAqB,EAAElU,SAAS;EAChCL,EAAAA,cAAc,EAAEK,SAAS;EACzB4L,EAAAA,YAAY,EAAE5L,SAAS;EACvB+L,EAAAA,SAAS,EAAE/L,SAAS;EACpB4S,EAAAA,qBAAqB,EAAE5S,SAAS;EAChCwH,EAAAA,UAAU,EAAE,UAAU;EACtBnE,EAAAA,eAAe,EAAE,GAAG;EAAE;EACtB;EACA;EACAqF,EAAAA,GAAG,EAAE1I,SAAS;EAAE;EAChB8U,EAAAA,SAAS,EAAE,KAAK;EAAE;EAClBgM,EAAAA,UAAU,EAAE,IAAI;EAChBzX,EAAAA,eAAe,EAAE,KAAK;EACtBjG,EAAAA,KAAK,EAAE,IAAI;EAAE;EACbkc,EAAAA,aAAa,EAAE,GAAG;EAAE;EACpB9U,EAAAA,QAAQ,EAAE,CAAC;EACX2U,EAAAA,cAAc,EAAE,IAAA;EACpB,CAAC,CAAA,CAAA;EAwlCLhQ,YAAY,CAACP,QAAQ,CAACoM,YAAY,EAAE,MAAM,CAAC;;;;;;;;;;"}