native-document 1.0.23 โ†’ 1.0.24

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.
@@ -1 +1 @@
1
- {"version":3,"file":"native-document.dev.js","sources":["../src/utils/debug-manager.js","../src/data/MemoryManager.js","../src/errors/NativeDocumentError.js","../src/data/ObservableChecker.js","../src/data/ObservableItem.js","../src/utils/helpers.js","../src/wrappers/DocumentObserver.js","../src/utils/events.js","../src/wrappers/NDElement.js","../src/utils/validator.js","../src/elements/anchor.js","../src/wrappers/constants.js","../src/data/Observable.js","../src/wrappers/AttributesWrapper.js","../src/wrappers/ElementCreator.js","../src/wrappers/NdPrototype.js","../src/wrappers/HtmlElementWrapper.js","../src/errors/ArgTypesError.js","../src/utils/args-types.js","../src/utils/prototypes.js","../src/data/observable-helpers/array.js","../src/data/observable-helpers/batch.js","../src/data/observable-helpers/object.js","../src/data/observable-helpers/computed.js","../src/data/Store.js","../src/elements/control/for-each.js","../src/elements/control/for-each-array.js","../src/elements/control/show-if.js","../src/elements/control/switch.js","../src/elements/content-formatter.js","../src/elements/description-list.js","../src/elements/form.js","../src/elements/html5-semantics.js","../src/elements/img.js","../src/elements/interactive.js","../src/elements/list.js","../src/elements/medias.js","../src/elements/meta-data.js","../src/elements/table.js","../src/elements/index.js","../src/router/Route.js","../src/errors/RouterError.js","../src/router/RouteGroupHelper.js","../src/router/modes/HashRouter.js","../src/router/modes/HistoryRouter.js","../src/router/modes/MemoryRouter.js","../src/router/RouterComponent.js","../src/router/Router.js","../src/router/link.js"],"sourcesContent":["let DebugManager = {};\n\nif(process.env.NODE_ENV === 'development') {\n DebugManager = {\n enabled: false,\n\n enable() {\n this.enabled = true;\n console.log('๐Ÿ” NativeDocument Debug Mode enabled');\n },\n\n disable() {\n this.enabled = false;\n },\n\n log(category, message, data) {\n if (!this.enabled) return;\n console.group(`๐Ÿ” [${category}] ${message}`);\n if (data) console.log(data);\n console.trace();\n console.groupEnd();\n },\n\n warn(category, message, data) {\n if (!this.enabled) return;\n console.warn(`โš ๏ธ [${category}] ${message}`, data);\n },\n\n error(category, message, error) {\n console.error(`โŒ [${category}] ${message}`, error);\n }\n };\n\n}\nif(process.env.NODE_ENV === 'production') {\n DebugManager = {\n log() {},\n warn() {},\n error() {},\n disable() {}\n };\n}\nexport default DebugManager;","import DebugManager from \"../utils/debug-manager\";\nimport Validator from \"../utils/validator\";\n\n\nconst MemoryManager = (function() {\n\n let $nextObserverId = 0;\n const $observables = new Map();\n\n return {\n /**\n * Register an observable and return an id.\n *\n * @param {ObservableItem} observable\n * @param {Function} getListeners\n * @returns {number}\n */\n register(observable) {\n const id = ++$nextObserverId;\n $observables.set(id, new WeakRef(observable));\n return id;\n },\n unregister(id) {\n $observables.delete(id);\n },\n getObservableById(id) {\n return $observables.get(id)?.deref();\n },\n cleanup() {\n for (const [_, weakObservableRef] of $observables) {\n const observable = weakObservableRef.deref();\n if (observable) {\n observable.cleanup();\n }\n }\n $observables.clear();\n },\n /**\n * Clean observables that are not referenced anymore.\n * @param {number} threshold\n */\n cleanObservables(threshold) {\n if($observables.size < threshold) return;\n let cleanedCount = 0;\n for (const [id, weakObservableRef] of $observables) {\n if (!weakObservableRef.deref()) {\n $observables.delete(id);\n cleanedCount++;\n }\n }\n if (cleanedCount > 0) {\n DebugManager.log('Memory Auto Clean', `๐Ÿงน Cleaned ${cleanedCount} orphaned observables`);\n }\n }\n };\n}());\n\nexport default MemoryManager;","export default class NativeDocumentError extends Error {\n constructor(message, context = {}) {\n super(message);\n this.name = 'NativeDocumentError';\n this.context = context;\n this.timestamp = new Date().toISOString();\n }\n}","/**\n *\n * @param {ObservableItem} $observable\n * @param {Function} $checker\n * @class ObservableChecker\n */\nexport default function ObservableChecker($observable, $checker) {\n this.observable = $observable;\n this.checker = $checker;\n this.unSubscriptions = [];\n}\n\nObservableChecker.prototype.__$isObservableChecker = true;\n\nObservableChecker.prototype.subscribe = function(callback) {\n const unSubscribe = this.observable.subscribe((value) => {\n callback && callback(this.checker(value));\n });\n this.unSubscriptions.push(unSubscribe);\n return unSubscribe;\n};\n\nObservableChecker.prototype.check = function(callback) {\n return this.observable.check(() => callback(this.val()));\n}\n\nObservableChecker.prototype.val = function() {\n return this.checker && this.checker(this.observable.val());\n}\n\nObservableChecker.prototype.set = function(value) {\n return this.observable.set(value);\n};\n\nObservableChecker.prototype.trigger = function() {\n return this.observable.trigger();\n};\n\nObservableChecker.prototype.cleanup = function() {\n return this.observable.cleanup();\n};","import DebugManager from \"../utils/debug-manager\";\nimport MemoryManager from \"./MemoryManager\";\nimport NativeDocumentError from \"../errors/NativeDocumentError\";\nimport ObservableChecker from \"./ObservableChecker\";\nimport Validator from \"../utils/validator\";\n\n/**\n *\n * @param {*} value\n * @class ObservableItem\n */\nexport default function ObservableItem(value) {\n this.$previousValue = value;\n this.$currentValue = value;\n this.$isCleanedUp = false;\n\n this.$listeners = null;\n this.$watchers = null;\n\n this.$memoryId = null;\n}\n\nObject.defineProperty(ObservableItem.prototype, '$value', {\n get() {\n return this.$currentValue;\n },\n set(value) {\n this.set(value);\n },\n configurable: true,\n});\n\nObservableItem.prototype.__$isObservable = true;\n\nconst noneTrigger = function() {};\nObservableItem.prototype.triggerListeners = function(operations) {\n const $listeners = this.$listeners;\n const $previousValue = this.$previousValue;\n const $currentValue = this.$currentValue;\n\n operations = operations || {};\n if($listeners?.length) {\n for(let i = 0, length = $listeners.length; i < length; i++) {\n $listeners[i]($currentValue, $previousValue, operations);\n }\n }\n};\n\nObservableItem.prototype.triggerWatchers = function() {\n if(!this.$watchers) {\n return;\n }\n\n const $watchers = this.$watchers;\n const $previousValue = this.$previousValue;\n const $currentValue = this.$currentValue;\n\n if($watchers.has($currentValue)) {\n $watchers.get($currentValue).forEach(callback => {\n callback.set ? callback.set(true) : callback(true);\n });\n }\n if($watchers.has($previousValue)) {\n $watchers.get($previousValue).forEach(callback => {\n callback.set ? callback.set(false) : callback(false);\n });\n }\n};\n\nObservableItem.prototype.triggerAll = function(operations) {\n this.triggerListeners(operations);\n this.triggerWatchers();\n};\n\nObservableItem.prototype.assocTrigger = function() {\n if(this.$watchers?.size && this.$listeners?.length) {\n this.trigger = this.triggerAll;\n return;\n }\n if(this.$listeners?.length) {\n this.trigger = this.triggerListeners;\n return;\n }\n if(this.$watchers?.size) {\n this.trigger = this.triggerWatchers;\n return;\n }\n this.trigger = noneTrigger;\n}\nObservableItem.prototype.trigger = noneTrigger;\n\n/**\n * @param {*} data\n */\nObservableItem.prototype.set = function(data) {\n const newValue = (typeof data === 'function') ? data(this.$currentValue) : data;\n if(this.$currentValue === newValue) {\n return;\n }\n this.$previousValue = this.$currentValue;\n this.$currentValue = newValue;\n this.trigger();\n};\n\nObservableItem.prototype.val = function() {\n return this.$currentValue;\n};\n\nObservableItem.prototype.disconnectAll = function() {\n this.$listeners?.splice(0);\n this.$previousValue = null;\n this.$currentValue = null;\n if(this.$watchers) {\n for (const [_, watchValueList] of this.$watchers) {\n watchValueList.splice(0);\n }\n }\n this.$watchers?.clear();\n this.$listeners = null;\n this.$watchers = null;\n this.trigger = noneTrigger;\n}\nObservableItem.prototype.cleanup = function() {\n MemoryManager.unregister(this.$memoryId);\n this.disconnectAll();\n this.$isCleanedUp = true;\n delete this.$value;\n}\n\n/**\n *\n * @param {Function} callback\n * @returns {(function(): void)}\n */\nObservableItem.prototype.subscribe = function(callback) {\n this.$listeners = this.$listeners ?? [];\n if (this.$isCleanedUp) {\n DebugManager.warn('Observable subscription', 'โš ๏ธ Attempted to subscribe to a cleaned up observable.');\n return () => {};\n }\n if (typeof callback !== 'function') {\n throw new NativeDocumentError('Callback must be a function');\n }\n\n this.$listeners.push(callback);\n this.assocTrigger();\n return () => {\n this.unsubscribe(callback);\n this.assocTrigger();\n };\n};\n\nObservableItem.prototype.on = function(value, callback) {\n this.$watchers = this.$watchers ?? new Map();\n\n let watchValueList = this.$watchers.get(value);\n if(!watchValueList) {\n watchValueList = [];\n this.$watchers.set(value, watchValueList);\n }\n\n watchValueList.push(callback);\n this.assocTrigger();\n return () => {\n const index = watchValueList.indexOf(callback);\n watchValueList?.splice(index, 1);\n if(watchValueList.size === 0) {\n this.$watchers?.delete(value);\n watchValueList = null;\n }\n this.assocTrigger();\n };\n};\n\n/**\n * Unsubscribe from an observable.\n * @param {Function} callback\n */\nObservableItem.prototype.unsubscribe = function(callback) {\n const index = this.$listeners.indexOf(callback);\n if (index > -1) {\n this.$listeners.splice(index, 1);\n }\n this.assocTrigger();\n};\n\n/**\n * Create an Observable checker instance\n * @param callback\n * @returns {ObservableChecker}\n */\nObservableItem.prototype.check = function(callback) {\n return new ObservableChecker(this, callback)\n};\nObservableItem.prototype.get = ObservableItem.prototype.check;\n\nObservableItem.prototype.toString = function() {\n if(!this.$memoryId) {\n MemoryManager.register(this);\n }\n return '{{#ObItem::(' +this.$memoryId+ ')}}';\n}","import Validator from \"./validator\";\n\nconst invoke = function(fn, args, context) {\n if(context) {\n fn.apply(context, args);\n } else {\n fn(...args);\n }\n};\n/**\n *\n * @param {Function} fn\n * @param {number} delay\n * @param {{leading?:Boolean, trailing?:Boolean, debounce?:Boolean, check: Function}}options\n * @returns {(function(...[*]): void)|*}\n */\nexport const debounce = function(fn, delay, options = {}) {\n let timer = null;\n let lastArgs = null;\n\n return function(...args) {\n const context = options.context === true ? this : null;\n let scopeDelay = delay;\n if(options.check) {\n const response = options.check(...args);\n if(typeof response === 'number') {\n scopeDelay = response;\n }\n }\n lastArgs = args;\n\n // debounce mode: reset the timer for each call\n clearTimeout(timer);\n timer = setTimeout(() => invoke(fn, lastArgs, context), delay);\n }\n};\n\n\n/**\n *\n * @param {*} item\n * @param {string|null} defaultKey\n * @param {?Function} key\n * @returns {*}\n */\nexport const getKey = (item, defaultKey, key) => {\n if(Validator.isFunction(key)) return key(item, defaultKey);\n if(Validator.isObservable(item)) {\n const val = item.val();\n return (val && key) ? val[key] : defaultKey;\n }\n if(!Validator.isObject(item)) {\n return item;\n }\n return item[key] ?? defaultKey;\n};\n\nexport const trim = function(str, char) {\n return str.replace(new RegExp(`^[${char}]+|[${char}]+$`, 'g'), '');\n}","import {debounce} from \"../utils/helpers\";\n\nconst DocumentObserver = {\n mounted: new WeakMap(),\n mountedSupposedSize: 0,\n unmounted: new WeakMap(),\n unmountedSupposedSize: 0,\n observer: null,\n checkMutation: function(mutationsList) {\n let i = 0;\n for(const mutation of mutationsList) {\n if(DocumentObserver.mountedSupposedSize > 0 ) {\n for(const node of mutation.addedNodes) {\n const data = DocumentObserver.mounted.get(node);\n if(!data) {\n continue;\n }\n data.inDom = true;\n data.mounted && data.mounted(node);\n }\n }\n\n if(DocumentObserver.unmountedSupposedSize > 0 ) {\n for(const node of mutation.removedNodes) {\n const data = DocumentObserver.unmounted.get(node);\n if(!data) {\n continue;\n }\n\n data.inDom = false;\n if(data.unmounted && data.unmounted(node) === true) {\n data.disconnect();\n node.nd?.remove();\n }\n }\n }\n }\n },\n /**\n *\n * @param {HTMLElement} element\n * @param {boolean} inDom\n * @returns {{watch: (function(): Map<any, any>), disconnect: (function(): boolean), mounted: (function(*): Set<any>), unmounted: (function(*): Set<any>)}}\n */\n watch: function(element, inDom = false) {\n let data = {\n inDom,\n mounted: null,\n unmounted: null,\n disconnect: () => {\n DocumentObserver.mounted.delete(element);\n DocumentObserver.unmounted.delete(element);\n DocumentObserver.mountedSupposedSize--;\n DocumentObserver.unmountedSupposedSize--;\n data = null;\n }\n };\n\n return {\n disconnect: data.disconnect,\n mounted: (callback) => {\n data.mounted = callback;\n DocumentObserver.mounted.set(element, data);\n DocumentObserver.mountedSupposedSize++;\n },\n unmounted: (callback) => {\n data.unmounted = callback;\n DocumentObserver.unmounted.set(element, data);\n DocumentObserver.unmountedSupposedSize++;\n }\n };\n }\n};\n\nDocumentObserver.observer = new MutationObserver(DocumentObserver.checkMutation);\nDocumentObserver.observer.observe(document.body, {\n childList: true,\n subtree: true,\n});\nexport default DocumentObserver;","export const EVENTS = [\n \"Click\",\n \"DblClick\",\n \"MouseDown\",\n \"MouseEnter\",\n \"MouseLeave\",\n \"MouseMove\",\n \"MouseOut\",\n \"MouseOver\",\n \"MouseUp\",\n \"Wheel\",\n \"KeyDown\",\n \"KeyPress\",\n \"KeyUp\",\n \"Blur\",\n \"Change\",\n \"Focus\",\n \"Input\",\n \"Invalid\",\n \"Reset\",\n \"Search\",\n \"Select\",\n \"Submit\",\n \"Drag\",\n \"DragEnd\",\n \"DragEnter\",\n \"DragLeave\",\n \"DragOver\",\n \"DragStart\",\n \"Drop\",\n \"AfterPrint\",\n \"BeforePrint\",\n \"BeforeUnload\",\n \"Error\",\n \"HashChange\",\n \"Load\",\n \"Offline\",\n \"Online\",\n \"PageHide\",\n \"PageShow\",\n \"Resize\",\n \"Scroll\",\n \"Unload\",\n \"Abort\",\n \"CanPlay\",\n \"CanPlayThrough\",\n \"DurationChange\",\n \"Emptied\",\n \"Ended\",\n \"LoadedData\",\n \"LoadedMetadata\",\n \"LoadStart\",\n \"Pause\",\n \"Play\",\n \"Playing\",\n \"Progress\",\n \"RateChange\",\n \"Seeked\",\n \"Seeking\",\n \"Stalled\",\n \"Suspend\",\n \"TimeUpdate\",\n \"VolumeChange\",\n \"Waiting\"\n];","import DocumentObserver from \"./DocumentObserver\";\nimport { EVENTS } from \"../utils/events\";\n\nexport function NDElement(element) {\n this.$element = element;\n this.$observer = null;\n}\nNDElement.prototype.__$isNDElement = true;\n\nfor(const event of EVENTS) {\n const eventName = event.toLowerCase();\n NDElement.prototype['on'+event] = function(callback) {\n this.$element.addEventListener(eventName, callback);\n return this;\n };\n NDElement.prototype['onPrevent'+event] = function(callback) {\n this.$element.addEventListener(eventName, function(event) {\n event.preventDefault();\n callback(event);\n });\n return this;\n };\n NDElement.prototype['onStop'+event] = function(callback) {\n this.$element.addEventListener(eventName, function(event) {\n event.stopPropagation();\n callback(event);\n });\n return this;\n };\n NDElement.prototype['onPreventStop'+event] = function(callback) {\n this.$element.addEventListener(eventName, function(event) {\n event.stopPropagation();\n event.preventDefault();\n callback(event);\n });\n return this;\n };\n}\n\nNDElement.prototype.ref = function(target, name) {\n target[name] = this.$element;\n return this;\n};\n\nNDElement.prototype.unmountChildren = function() {\n let element = this.$element;\n for(let i = 0, length = element.children.length; i < length; i++) {\n let elementChildren = element.children[i];\n if(!elementChildren.$ndProx) {\n elementChildren.nd?.remove();\n }\n elementChildren = null;\n }\n element = null;\n return this;\n};\n\nNDElement.prototype.remove = function() {\n let element = this.$element;\n element.nd.unmountChildren();\n element.$ndProx = null;\n delete element.nd?.on?.prevent;\n delete element.nd?.on;\n delete element.nd;\n element = null;\n return this;\n};\n\nNDElement.prototype.lifecycle = function(states) {\n this.$observer = this.$observer || DocumentObserver.watch(this.$element);\n\n states.mounted && this.$observer.mounted(states.mounted);\n states.unmounted && this.$observer.unmounted(states.unmounted);\n return this;\n};\nNDElement.prototype.mounted = function(callback) {\n return this.lifecycle({ mounted: callback });\n};\n\nNDElement.prototype.unmounted = function(callback) {\n return this.lifecycle({ unmounted: callback });\n};\n\nNDElement.prototype.htmlElement = function() {\n return this.$element;\n};\n\nNDElement.prototype.node = NDElement.prototype.htmlElement;","import ObservableItem from \"../data/ObservableItem\";\nimport DebugManager from \"./debug-manager\";\nimport NativeDocumentError from \"../errors/NativeDocumentError\";\nimport ObservableChecker from \"../data/ObservableChecker\";\nimport {NDElement} from \"../wrappers/NDElement\";\n\nconst Validator = {\n isObservable(value) {\n return value instanceof ObservableItem || value instanceof ObservableChecker || value?.__$isObservable;\n },\n isProxy(value) {\n return value?.__isProxy__\n },\n isObservableChecker(value) {\n return value instanceof ObservableChecker || value?.__$isObservableChecker;\n },\n isArray(value) {\n return Array.isArray(value);\n },\n isString(value) {\n return typeof value === 'string';\n },\n isNumber(value) {\n return typeof value === 'number';\n },\n isBoolean(value) {\n return typeof value === 'boolean';\n },\n isFunction(value) {\n return typeof value === 'function';\n },\n isAsyncFunction(value) {\n return typeof value === 'function' && value.constructor.name === 'AsyncFunction';\n },\n isObject(value) {\n return typeof value === 'object';\n },\n isJson(value) {\n return typeof value === 'object' && value !== null && value.constructor.name === 'Object' && !Array.isArray(value);\n },\n isElement(value) {\n return value instanceof HTMLElement || value instanceof DocumentFragment || value instanceof Text;\n },\n isFragment(value) {\n return value instanceof DocumentFragment;\n },\n isStringOrObservable(value) {\n return this.isString(value) || this.isObservable(value);\n },\n isValidChild(child) {\n return child === null ||\n this.isElement(child) ||\n this.isObservable(child) ||\n this.isNDElement(child) ||\n ['string', 'number', 'boolean'].includes(typeof child);\n },\n isNDElement(child) {\n return child instanceof NDElement || child?.constructor?.__$isNDElement;\n },\n isValidChildren(children) {\n if (!Array.isArray(children)) {\n children = [children];\n }\n\n const invalid = children.filter(child => !this.isValidChild(child));\n return invalid.length === 0;\n },\n validateChildren(children) {\n if (!Array.isArray(children)) {\n children = [children];\n }\n\n const invalid = children.filter(child => !this.isValidChild(child));\n if (invalid.length > 0) {\n throw new NativeDocumentError(`Invalid children detected: ${invalid.map(i => typeof i).join(', ')}`);\n }\n\n return children;\n },\n /**\n * Check if the data contains observables.\n * @param {Array|Object} data\n * @returns {boolean}\n */\n containsObservables(data) {\n if(!data) {\n return false;\n }\n return Validator.isObject(data)\n && Object.values(data).some(value => Validator.isObservable(value));\n },\n /**\n * Check if the data contains an observable reference.\n * @param {string} data\n * @returns {boolean}\n */\n containsObservableReference(data) {\n if(!data || typeof data !== 'string') {\n return false;\n }\n return /\\{\\{#ObItem::\\([0-9]+\\)\\}\\}/.test(data);\n },\n validateAttributes(attributes) {\n if (!attributes || typeof attributes !== 'object') {\n return attributes;\n }\n\n const reserved = [];\n const foundReserved = Object.keys(attributes).filter(key => reserved.includes(key));\n\n if (foundReserved.length > 0) {\n DebugManager.warn('Validator', `Reserved attributes found: ${foundReserved.join(', ')}`);\n }\n\n return attributes;\n },\n\n validateEventCallback(callback) {\n if (typeof callback !== 'function') {\n throw new NativeDocumentError('Event callback must be a function');\n }\n }\n};\n\nexport default Validator;","import Validator from \"../utils/validator\";\nimport DebugManager from \"../utils/debug-manager\";\nimport {ElementCreator} from \"../wrappers/ElementCreator\";\n\n\nexport default function Anchor(name) {\n const element = document.createDocumentFragment();\n\n const anchorStart = document.createComment('Anchor Start : '+name);\n const anchorEnd = document.createComment('/ Anchor End '+name);\n\n element.appendChild(anchorStart);\n element.appendChild(anchorEnd);\n\n element.nativeInsertBefore = element.insertBefore;\n element.nativeAppendChild = element.appendChild;\n\n const insertBefore = function(parent, child, target) {\n if(parent === element) {\n parent.nativeInsertBefore(ElementCreator.getChild(child), target);\n return;\n }\n parent.insertBefore(ElementCreator.getChild(child), target);\n };\n\n element.appendElement = function(child, before = null) {\n if(anchorEnd.parentNode === element) {\n anchorEnd.parentNode.nativeInsertBefore(child, before || anchorEnd);\n return;\n }\n anchorEnd.parentNode?.insertBefore(child, before || anchorEnd);\n };\n\n element.appendChild = function(child, before = null) {\n const parent = anchorEnd.parentNode;\n if(!parent) {\n DebugManager.error('Anchor', 'Anchor : parent not found', child);\n return;\n }\n before = before ?? anchorEnd;\n if(Validator.isArray(child)) {\n const fragment = document.createDocumentFragment();\n for(let i = 0, length = child.length; i < length; i++) {\n fragment.appendChild(ElementCreator.getChild(child[i]));\n }\n insertBefore(parent, fragment, before);\n return element;\n }\n insertBefore(parent, child, before);\n };\n\n element.removeChildren = function() {\n const parent = anchorEnd.parentNode;\n if(parent === element) {\n return;\n }\n if(parent.firstChild === anchorStart && parent.lastChild === anchorEnd) {\n parent.replaceChildren(anchorStart, anchorEnd);\n return;\n }\n\n let itemToRemove = anchorStart.nextSibling, tempItem;\n const fragment = document.createDocumentFragment();\n while(itemToRemove && itemToRemove !== anchorEnd) {\n tempItem = itemToRemove.nextSibling;\n fragment.append(itemToRemove);\n itemToRemove = tempItem;\n }\n fragment.replaceChildren();\n }\n element.remove = function() {\n const parent = anchorEnd.parentNode;\n if(parent === element) {\n return;\n }\n let itemToRemove = anchorStart.nextSibling, tempItem;\n while(itemToRemove !== anchorEnd) {\n tempItem = itemToRemove.nextSibling;\n element.nativeAppendChild(itemToRemove);\n itemToRemove = tempItem;\n }\n };\n\n element.removeWithAnchors = function() {\n element.removeChildren();\n anchorStart.remove();\n anchorEnd.remove();\n };\n\n element.replaceContent = function(child) {\n const parent = anchorEnd.parentNode;\n if(!parent) {\n return;\n }\n if(parent.firstChild === anchorStart && parent.lastChild === anchorEnd) {\n parent.replaceChildren(anchorStart, child, anchorEnd);\n return;\n }\n element.removeChildren();\n parent.insertBefore(child, anchorEnd);\n };\n\n element.insertBefore = function(child, anchor = null) {\n element.appendChild(child, anchor);\n };\n\n element.clear = function() {\n element.remove();\n };\n\n element.endElement = function() {\n return anchorEnd;\n };\n element.startElement = function() {\n return anchorStart;\n };\n\n return element;\n};","\nexport const BOOLEAN_ATTRIBUTES = ['checked', 'selected', 'disabled', 'readonly', 'required', 'autofocus', 'multiple', 'autocomplete', 'hidden', 'contenteditable', 'spellcheck', 'translate', 'draggable', 'async', 'defer', 'autoplay', 'controls', 'loop', 'muted', 'download', 'reversed', 'open', 'default', 'formnovalidate', 'novalidate', 'scoped', 'itemscope', 'allowfullscreen', 'allowpaymentrequest', 'playsinline'];","import ObservableItem from './ObservableItem';\nimport Validator from \"../utils/validator\";\nimport MemoryManager from \"./MemoryManager\";\nimport NativeDocumentError from \"../errors/NativeDocumentError\";\nimport {debounce} from \"../utils/helpers.js\";\n\n/**\n *\n * @param {*} value\n * @returns {ObservableItem}\n * @constructor\n */\nexport function Observable(value) {\n return new ObservableItem(value);\n}\n\n/**\n *\n * @param id\n * @returns {ObservableItem|null}\n */\nObservable.getById = function(id) {\n const item = MemoryManager.getObservableById(parseInt(id));\n if(!item) {\n throw new NativeDocumentError('Observable.getById : No observable found with id ' + id);\n }\n return item;\n};\n\n/**\n *\n * @param {ObservableItem} observable\n */\nObservable.cleanup = function(observable) {\n observable.cleanup();\n};\n\n/**\n * Enable auto cleanup of observables.\n * @param {Boolean} enable\n * @param {{interval:Boolean, threshold:number}} options\n */\nObservable.autoCleanup = function(enable = false, options = {}) {\n if(!enable) {\n return;\n }\n const { interval = 60000, threshold = 100 } = options;\n\n window.addEventListener('beforeunload', () => {\n MemoryManager.cleanup();\n });\n\n setInterval(() => MemoryManager.cleanObservables(threshold), interval);\n};\n\n","import Validator from \"../utils/validator\";\nimport NativeDocumentError from \"../errors/NativeDocumentError\";\nimport {BOOLEAN_ATTRIBUTES} from \"./constants.js\";\nimport {Observable} from \"../data/Observable\";\n\n/**\n *\n * @param {HTMLElement} element\n * @param {Object} data\n */\nfunction bindClassAttribute(element, data) {\n for(let className in data) {\n const value = data[className];\n if(Validator.isObservable(value)) {\n element.classList.toggle(className, value.val());\n value.subscribe(newValue => element.classList.toggle(className, newValue));\n continue;\n }\n element.classList.toggle(className, value)\n }\n}\n\n/**\n *\n * @param {HTMLElement} element\n * @param {Object} data\n */\nfunction bindStyleAttribute(element, data) {\n for(let styleName in data) {\n const value = data[styleName];\n if(Validator.isObservable(value)) {\n element.style[styleName] = value.val();\n value.subscribe(newValue => {\n element.style[styleName] = newValue;\n });\n continue;\n }\n element.style[styleName] = value;\n }\n}\n\n/**\n *\n * @param {HTMLElement} element\n * @param {string} attributeName\n * @param {boolean|number|Observable} value\n */\nfunction bindBooleanAttribute(element, attributeName, value) {\n const defaultValue = Validator.isObservable(value) ? value.val() : value;\n if(Validator.isBoolean(defaultValue)) {\n element[attributeName] = defaultValue;\n }\n else {\n element[attributeName] = defaultValue === element.value;\n }\n if(Validator.isObservable(value)) {\n if(['checked'].includes(attributeName)) {\n element.addEventListener('input', () => {\n if(Validator.isBoolean(defaultValue)) {\n value.set(element[attributeName]);\n return;\n }\n value.set(element.value);\n });\n }\n value.subscribe(newValue => {\n if(Validator.isBoolean(newValue)) {\n element[attributeName] = newValue;\n return;\n }\n element[attributeName] = newValue === element.value;\n });\n }\n}\n\n\n/**\n *\n * @param {HTMLElement} element\n * @param {string} attributeName\n * @param {Observable} value\n */\nfunction bindAttributeWithObservable(element, attributeName, value) {\n const applyValue = (newValue) => {\n if(attributeName === 'value') {\n element.value = newValue;\n return;\n }\n element.setAttribute(attributeName, newValue);\n };\n applyValue(value.val());\n value.subscribe(applyValue);\n\n if(attributeName === 'value') {\n element.addEventListener('input', () => value.set(element.value));\n }\n}\n\n/**\n *\n * @param {HTMLElement} element\n * @param {Object} attributes\n */\nexport default function AttributesWrapper(element, attributes) {\n\n Validator.validateAttributes(attributes);\n\n if(!Validator.isObject(attributes)) {\n throw new NativeDocumentError('Attributes must be an object');\n }\n\n for(let key in attributes) {\n const attributeName = key.toLowerCase();\n let value = attributes[attributeName];\n if(Validator.isString(value) && Validator.isFunction(value.resolveObservableTemplate)) {\n value = value.resolveObservableTemplate();\n if(Validator.isArray(value)) {\n const observables = value.filter(item => Validator.isObservable(item));\n value = Observable.computed(() => {\n return value.map(item => Validator.isObservable(item) ? item.val() : item).join(' ') || ' ';\n }, observables);\n }\n }\n if(BOOLEAN_ATTRIBUTES.includes(attributeName)) {\n bindBooleanAttribute(element, attributeName, value);\n continue;\n }\n if(Validator.isObservable(value)) {\n bindAttributeWithObservable(element, attributeName, value);\n continue;\n }\n if(attributeName === 'class' && Validator.isJson(value)) {\n bindClassAttribute(element, value);\n continue;\n }\n if(attributeName === 'style' && Validator.isJson(value)) {\n bindStyleAttribute(element, value);\n continue;\n }\n element.setAttribute(attributeName, value);\n\n }\n return element;\n}","import Anchor from \"../elements/anchor\";\nimport Validator from \"../utils/validator\";\nimport AttributesWrapper from \"./AttributesWrapper\";\n\nconst $nodeCache = new Map();\nlet $textNodeCache = null;\n\nexport const ElementCreator = {\n createTextNode() {\n if(!$textNodeCache) {\n $textNodeCache = document.createTextNode('');\n }\n return $textNodeCache.cloneNode();\n },\n /**\n *\n * @param {HTMLElement|DocumentFragment} parent\n * @param {ObservableItem} observable\n * @returns {Text}\n */\n createObservableNode(parent, observable) {\n const text = ElementCreator.createTextNode();\n observable.subscribe(value => text.nodeValue = String(value));\n text.nodeValue = observable.val();\n parent && parent.appendChild(text);\n return text;\n },\n\n /**\n *\n * @param {HTMLElement|DocumentFragment} parent\n * @param {*} value\n * @returns {Text}\n */\n createStaticTextNode(parent, value) {\n let text = ElementCreator.createTextNode();\n text.nodeValue = String(value);\n parent && parent.appendChild(text);\n return text;\n },\n /**\n *\n * @param {string} name\n * @returns {HTMLElement|DocumentFragment}\n */\n createElement(name) {\n if(name) {\n if($nodeCache.has(name)) {\n return $nodeCache.get(name).cloneNode();\n }\n const node = document.createElement(name);\n $nodeCache.set(name, node);\n return node.cloneNode();\n }\n return new Anchor('Fragment');\n },\n /**\n *\n * @param {*} children\n * @param {HTMLElement|DocumentFragment} parent\n */\n processChildren(children, parent) {\n if(children === null) return;\n const childrenArray = Array.isArray(children) ? children : [children];\n\n for(let i = 0, length = childrenArray.length; i < length; i++) {\n let child = this.getChild(childrenArray[i]);\n if (child === null) continue;\n parent.appendChild(child);\n }\n },\n getChild(child) {\n if(child === null) {\n return null;\n }\n if(Validator.isString(child) && Validator.isFunction(child.resolveObservableTemplate)) {\n child = child.resolveObservableTemplate();\n }\n if(Validator.isString(child)) {\n return ElementCreator.createStaticTextNode(null, child);\n }\n if (Validator.isObservable(child)) {\n return ElementCreator.createObservableNode(null, child);\n }\n if(Validator.isArray(child)) {\n const fragment = document.createDocumentFragment();\n for(let i = 0, length = child.length; i < length; i++) {\n fragment.appendChild(this.getChild(child[i]));\n }\n return fragment;\n }\n if(Validator.isFunction(child)) {\n return this.getChild(child());\n }\n if (Validator.isElement(child)) {\n return child;\n }\n if(Validator.isNDElement(child)) {\n return child.$element ?? child.$build?.() ?? null;\n }\n return ElementCreator.createStaticTextNode(null, child);\n },\n /**\n *\n * @param {HTMLElement} element\n * @param {Object} attributes\n */\n processAttributes(element, attributes) {\n if(Validator.isFragment(element)) return;\n if (attributes) {\n AttributesWrapper(element, attributes);\n }\n },\n /**\n *\n * @param {HTMLElement} element\n * @param {Object} attributes\n * @param {?Function} customWrapper\n * @returns {HTMLElement|DocumentFragment}\n */\n setup(element, attributes, customWrapper) {\n return element;\n }\n};","import { NDElement } from \"./NDElement\";\n\nObject.defineProperty(HTMLElement.prototype, 'nd', {\n configurable: true,\n get() {\n if(this.$nd) {\n return this.$nd;\n }\n\n this.$nd = new NDElement(this);\n this.$nd.nd = this.$nd;\n return this.$nd;\n }\n});","import Validator from \"../utils/validator\";\nimport DebugManager from \"../utils/debug-manager\";\nimport {ElementCreator} from \"./ElementCreator\";\nimport './NdPrototype';\n\n/**\n *\n * @param {*} value\n * @returns {Text}\n */\nexport const createTextNode = function(value) {\n return (Validator.isObservable(value))\n ? ElementCreator.createObservableNode(null, value)\n : ElementCreator.createStaticTextNode(null, value);\n};\n\n\n/**\n *\n * @param {string} name\n * @param {?Function} customWrapper\n * @returns {Function}\n */\nexport default function HtmlElementWrapper(name, customWrapper) {\n const $tagName = name.toLowerCase();\n\n return function(attributes, children = null) {\n try {\n if(!Validator.isJson(attributes)) {\n const tempChildren = children;\n children = attributes;\n attributes = tempChildren;\n }\n const element = ElementCreator.createElement($tagName);\n const finalElement = (typeof customWrapper === 'function') ? customWrapper(element) : element;\n\n ElementCreator.processAttributes(finalElement, attributes);\n ElementCreator.processChildren(children, finalElement);\n\n return ElementCreator.setup(finalElement, attributes, customWrapper);\n } catch (error) {\n DebugManager.error('ElementCreation', `Error creating ${$tagName}`, error);\n }\n };\n}\n\n","\n\nexport default class ArgTypesError extends Error {\n constructor(message, errors) {\n super(`${message}\\n\\n${errors.join(\"\\n\")}\\n\\n`);\n }\n}","import Validator from \"./validator\";\nimport ArgTypesError from \"../errors/ArgTypesError\";\nimport NativeDocumentError from \"../errors/NativeDocumentError\";\n\n/**\n *\n * @type {{string: (function(*): {name: *, type: string, validate: function(*): boolean}),\n * number: (function(*): {name: *, type: string, validate: function(*): boolean}),\n * boolean: (function(*): {name: *, type: string, validate: function(*): boolean}),\n * observable: (function(*): {name: *, type: string, validate: function(*): boolean}),\n * element: (function(*): {name: *, type: string, validate: function(*): *}),\n * function: (function(*): {name: *, type: string, validate: function(*): boolean}),\n * object: (function(*): {name: *, type: string, validate: function(*): boolean}),\n * objectNotNull: (function(*): {name: *, type: string, validate: function(*): *}),\n * children: (function(*): {name: *, type: string, validate: function(*): *}),\n * attributes: (function(*): {name: *, type: string, validate: function(*): *}),\n * optional: (function(*): *&{optional: boolean}),\n * oneOf: (function(*, ...[*]): {name: *, type: string, types: *[],\n * validate: function(*): boolean})\n * }}\n */\nexport const ArgTypes = {\n string: (name) => ({ name, type: 'string', validate: (v) => Validator.isString(v) }),\n number: (name) => ({ name, type: 'number', validate: (v) => Validator.isNumber(v) }),\n boolean: (name) => ({ name, type: 'boolean', validate: (v) => Validator.isBoolean(v) }),\n observable: (name) => ({ name, type: 'observable', validate: (v) => Validator.isObservable(v) }),\n element: (name) => ({ name, type: 'element', validate: (v) => Validator.isElement(v) }),\n function: (name) => ({ name, type: 'function', validate: (v) => Validator.isFunction(v) }),\n object: (name) => ({ name, type: 'object', validate: (v) => (Validator.isObject(v)) }),\n objectNotNull: (name) => ({ name, type: 'object', validate: (v) => (Validator.isObject(v) && v !== null) }),\n children: (name) => ({ name, type: 'children', validate: (v) => Validator.validateChildren(v) }),\n attributes: (name) => ({ name, type: 'attributes', validate: (v) => Validator.validateAttributes(v) }),\n\n // Optional arguments\n optional: (argType) => ({ ...argType, optional: true }),\n\n // Union types\n oneOf: (name, ...argTypes) => ({\n name,\n type: 'oneOf',\n types: argTypes,\n validate: (v) => argTypes.some(type => type.validate(v))\n })\n};\n\n/**\n *\n * @param {Array} args\n * @param {Array} argSchema\n * @param {string} fnName\n */\nconst validateArgs = (args, argSchema, fnName = 'Function') => {\n if (!argSchema) return;\n\n const errors = [];\n\n // Check the number of arguments\n const requiredCount = argSchema.filter(arg => !arg.optional).length;\n if (args.length < requiredCount) {\n errors.push(`${fnName}: Expected at least ${requiredCount} arguments, got ${args.length}`);\n }\n\n // Validate each argument\n argSchema.forEach((schema, index) => {\n const position = index + 1;\n const value = args[index];\n\n if (value === undefined) {\n if (!schema.optional) {\n errors.push(`${fnName}: Missing required argument '${schema.name}' at position ${position}`);\n }\n return;\n }\n\n if (!schema.validate(value)) {\n const valueTypeOf = value?.constructor?.name || typeof value;\n errors.push(`${fnName}: Invalid argument '${schema.name}' at position ${position}, expected ${schema.type}, got ${valueTypeOf}`);\n }\n });\n\n if (errors.length > 0) {\n throw new ArgTypesError(`Argument validation failed`, errors);\n }\n};\n\n/**\n * @param {Function} fn\n * @param {Array} argSchema\n * @param {string} fnName\n * @returns {Function}\n */\nexport const withValidation = (fn, argSchema, fnName = 'Function') => {\n if(!Validator.isArray(argSchema)) {\n throw new NativeDocumentError('withValidation : argSchema must be an array');\n }\n return function(...args) {\n validateArgs(args, argSchema, fn.name || fnName);\n return fn.apply(this, args);\n };\n};","import {withValidation} from \"./args-types.js\";\nimport {Observable} from \"../data/Observable\";\nimport Validator from \"./validator\";\n\n\nFunction.prototype.args = function(...args) {\n return withValidation(this, args);\n};\n\nFunction.prototype.errorBoundary = function(callback) {\n return (...args) => {\n try {\n return this.apply(this, args);\n } catch(e) {\n return callback(e);\n }\n };\n};\n\nString.prototype.use = function(args) {\n const value = this;\n\n return Observable.computed(() => {\n return value.replace(/\\$\\{(.*?)}/g, (match, key) => {\n const data = args[key];\n if(Validator.isObservable(data)) {\n return data.val();\n }\n return data;\n });\n }, Object.values(args));\n};\n\nString.prototype.resolveObservableTemplate = function() {\n if(!Validator.containsObservableReference(this)) {\n return this.valueOf();\n }\n return this.split(/(\\{\\{#ObItem::\\([0-9]+\\)\\}\\})/g).filter(Boolean).map((value) => {\n if(!Validator.containsObservableReference(value)) {\n return value;\n }\n const [_, id] = value.match(/\\{\\{#ObItem::\\(([0-9]+)\\)\\}\\}/);\n return Observable.getById(id);\n });\n}","import NativeDocumentError from \"../../errors/NativeDocumentError\";\nimport {Observable} from \"../Observable\";\n\n\nconst methods = ['push', 'pop', 'shift', 'unshift', 'reverse', 'sort', 'splice'];\n\n/**\n *\n * @param {Array} target\n * @returns {ObservableItem}\n */\nObservable.array = function(target) {\n if(!Array.isArray(target)) {\n throw new NativeDocumentError('Observable.array : target must be an array');\n }\n const observer = Observable(target);\n\n methods.forEach((method) => {\n observer[method] = function(...values) {\n const result = observer.val()[method](...values);\n observer.trigger({ action: method, args: values, result });\n return result;\n };\n });\n\n observer.clear = function() {\n observer.val().length = 0;\n observer.trigger({ action: 'clear' });\n return true;\n };\n\n observer.merge = function(values) {\n observer.set([...observer.val(), ...values]);\n };\n\n observer.populateAndRender = function(iteration, callback) {\n observer.trigger({ action: 'populate', args: [observer.val(), iteration, callback] });\n };\n observer.remove = function(index) {\n const deleted = observer.val().splice(index, 1);\n if(deleted.length === 0) {\n return [];\n }\n observer.trigger({ action: 'remove', args: [index], result: deleted[0] });\n return deleted;\n };\n\n observer.swap = function(indexA, indexB) {\n const value = observer.val();\n const length = value.length;\n if(length < indexA || length < indexB) {\n return false;\n }\n if(indexB < indexA) {\n const temp = indexA;\n indexA = indexB;\n indexB = temp;\n }\n const elementA = value[indexA];\n const elementB = value[indexB]\n\n value[indexA] = elementB;\n value[indexB] = elementA;\n observer.trigger({ action: 'swap', args: [indexA, indexB], result: [elementA, elementB] });\n return true;\n };\n\n observer.length = function() {\n return observer.val().length;\n }\n\n const overrideMethods = ['map', 'filter', 'reduce', 'some', 'every', 'find', 'findIndex', 'concat'];\n overrideMethods.forEach((method) => {\n observer[method] = function(...args) {\n return observer.val()[method](...args);\n };\n })\n\n return observer;\n};","import Validator from \"../../utils/validator\";\nimport {Observable} from \"../Observable\";\n\n/**\n *\n * @param {Function} callback\n * @returns {Function}\n */\nObservable.batch = function(callback) {\n const $observer = Observable(0);\n const batch = function() {\n if(Validator.isAsyncFunction(callback)) {\n return (callback(...arguments)).then(() => {\n $observer.trigger();\n }).catch(error => { throw error; });\n }\n callback(...arguments);\n $observer.trigger();\n };\n batch.$observer = $observer;\n return batch;\n};","import Validator from \"../../utils/validator\";\nimport {Observable} from \"../Observable\";\n\n/**\n *\n * @param {Object} value\n * @returns {Proxy}\n */\nObservable.init = function(value) {\n const data = {};\n for(const key in value) {\n const itemValue = value[key];\n if(Validator.isJson(itemValue)) {\n data[key] = Observable.init(itemValue);\n continue;\n }\n else if(Validator.isArray(itemValue)) {\n data[key] = Observable.array(itemValue);\n continue;\n }\n data[key] = Observable(itemValue);\n }\n\n const $val = function() {\n const result = {};\n for(const key in data) {\n const dataItem = data[key];\n if(Validator.isObservable(dataItem)) {\n result[key] = dataItem.val();\n } else if(Validator.isProxy(dataItem)) {\n result[key] = dataItem.$value;\n } else {\n result[key] = dataItem;\n }\n }\n return result;\n };\n const $clone = function() {\n\n };\n\n return new Proxy(data, {\n get(target, property) {\n if(property === '__isProxy__') {\n return true;\n }\n if(property === '$value') {\n return $val();\n }\n if(property === '$clone') {\n return $clone;\n }\n if(target[property] !== undefined) {\n return target[property];\n }\n return undefined;\n },\n set(target, prop, newValue) {\n if(target[prop] !== undefined) {\n target[prop].set(newValue);\n }\n }\n })\n};\n\n/**\n * Get the value of an observable or an object of observables.\n * @param {ObservableItem|Object<ObservableItem>} data\n * @returns {{}|*|null}\n */\nObservable.value = function(data) {\n if(Validator.isObservable(data)) {\n return data.val();\n }\n if(Validator.isProxy(data)) {\n return data.$value;\n }\n if(Validator.isArray(data)) {\n const result = [];\n for(let i = 0, length = data.length; i < length; i++) {\n const item = data[i];\n result.push(Observable.value(item));\n }\n return result;\n }\n return data;\n};\n\n\nObservable.update = function($target, data) {\n for(const key in data) {\n const targetItem = $target[key];\n const newValue = data[key];\n\n if(Validator.isObservable(targetItem)) {\n if(Validator.isArray(newValue)) {\n Observable.update(targetItem, newValue);\n continue;\n }\n targetItem.set(newValue);\n continue;\n }\n if(Validator.isProxy(targetItem)) {\n Observable.update(targetItem, newValue);\n continue;\n }\n $target[key] = newValue;\n }\n};\n\nObservable.object = Observable.init;\nObservable.json = Observable.init;","import ObservableItem from \"../ObservableItem\";\nimport Validator from \"../../utils/validator\";\nimport NativeDocumentError from \"../../errors/NativeDocumentError\";\nimport {Observable} from \"../Observable\";\n\n/**\n *\n * @param {Function} callback\n * @param {Array|Function} dependencies\n * @returns {ObservableItem}\n */\nObservable.computed = function(callback, dependencies = []) {\n const initialValue = callback();\n const observable = new ObservableItem(initialValue);\n const updatedValue = () => observable.set(callback());\n\n if(Validator.isFunction(dependencies)) {\n if(!Validator.isObservable(dependencies.$observer)) {\n throw new NativeDocumentError('Observable.computed : dependencies must be valid batch function');\n }\n dependencies.$observer.subscribe(updatedValue);\n return observable;\n }\n\n dependencies.forEach(dependency => dependency.subscribe(updatedValue));\n\n return observable;\n};","import {Observable} from \"./Observable\";\n\nexport const Store = (function() {\n\n const $stores = new Map();\n\n return {\n /**\n * Create a new state follower and return it.\n * @param {string} name\n * @returns {ObservableItem}\n */\n use(name) {\n const {observer: originalObserver, subscribers } = $stores.get(name);\n const observerFollower = Observable(originalObserver.val());\n const unSubscriber = originalObserver.subscribe(value => observerFollower.set(value));\n const updaterUnsubscriber = observerFollower.subscribe(value => originalObserver.set(value));\n observerFollower.destroy = () => {\n unSubscriber();\n updaterUnsubscriber();\n observerFollower.cleanup();\n };\n subscribers.add(observerFollower);\n\n return observerFollower;\n },\n /**\n * @param {string} name\n * @returns {ObservableItem}\n */\n follow(name) {\n return this.use(name);\n },\n /**\n * Create a new state and return the observer.\n * @param {string} name\n * @param {*} value\n * @returns {ObservableItem}\n */\n create(name, value) {\n const observer = Observable(value);\n $stores.set(name, { observer, subscribers: new Set()});\n return observer;\n },\n /**\n * Get the observer for a state.\n * @param {string} name\n * @returns {null|ObservableItem}\n */\n get(name) {\n const item = $stores.get(name);\n return item ? item.observer : null;\n },\n /**\n *\n * @param {string} name\n * @returns {{observer: ObservableItem, subscribers: Set}}\n */\n getWithSubscribers(name) {\n return $stores.get(name);\n },\n /**\n * Delete a state.\n * @param {string} name\n */\n delete(name) {\n const item = $stores.get(name);\n if(!item) return;\n item.observer.cleanup();\n item.subscribers.forEach(follower => follower.destroy());\n item.observer.clear();\n }\n };\n}());","import ObservableItem from \"../../data/ObservableItem\";\nimport {Observable} from \"../../data/Observable\";\nimport Validator from \"../../utils/validator\";\nimport Anchor from \"../anchor\";\nimport DebugManager from \"../../utils/debug-manager\";\nimport {getKey} from \"../../utils/helpers\";\nimport { ElementCreator } from \"../../wrappers/ElementCreator\";\n\n/**\n *\n * @param {Array|Object|ObservableItem} data\n * @param {Function} callback\n * @param {?Function} key\n * @returns {DocumentFragment}\n */\nexport function ForEach(data, callback, key) {\n const element = new Anchor('ForEach');\n const blockEnd = element.endElement();\n const blockStart = element.startElement();\n\n let cache = new Map();\n let lastKeyOrder = null;\n const keyIds = new Set();\n\n const clear = () => {\n element.removeChildren();\n cleanCache();\n };\n\n const cleanCache = (parent) => {\n for(const [keyId, cacheItem] of cache.entries()) {\n if(keyIds.has(keyId)) {\n continue;\n }\n const child = cacheItem.child?.deref();\n if(parent && child) {\n parent.removeChild(child);\n }\n cacheItem.indexObserver?.cleanup();\n cacheItem.child = null;\n cacheItem.indexObserver = null;\n cache.delete(cacheItem.keyId);\n lastKeyOrder && lastKeyOrder.delete(cacheItem.keyId);\n }\n };\n\n const handleContentItem = (item, indexKey) => {\n const keyId = getKey(item, indexKey, key);\n\n if(cache.has(keyId)) {\n const cacheItem = cache.get(keyId);\n cacheItem.indexObserver?.set(indexKey);\n cacheItem.isNew = false;\n if(cacheItem.child?.deref()) {\n return keyId;\n }\n cache.delete(keyId);\n }\n\n try {\n const indexObserver = callback.length >= 2 ? Observable(indexKey) : null;\n let child = ElementCreator.getChild(callback(item, indexObserver))\n cache.set(keyId, { keyId, isNew: true, child: new WeakRef(child), indexObserver});\n } catch (e) {\n DebugManager.error('ForEach', `Error creating element for key ${keyId}` , e);\n throw e;\n }\n return keyId;\n };\n\n const batchDOMUpdates = (parent) => {\n const fragment = document.createDocumentFragment();\n for(const itemKey of keyIds) {\n const cacheItem = cache.get(itemKey);\n if(!cacheItem) {\n continue;\n }\n const child = cacheItem.child?.deref();\n child && fragment.appendChild(child);\n }\n parent.insertBefore(fragment, blockEnd);\n }\n\n const diffingDOMUpdates = (parent) => {\n const operations = [];\n let fragment = document.createDocumentFragment();\n const newKeys = Array.from(keyIds);\n const oldKeys = Array.from(lastKeyOrder);\n\n let currentPosition = blockStart;\n\n for(const index in newKeys) {\n const itemKey = newKeys[index];\n const cacheItem = cache.get(itemKey);\n if(!cacheItem) {\n continue;\n }\n const child = cacheItem.child.deref();\n if(!child) {\n continue;\n }\n fragment.appendChild(child);\n }\n element.replaceContent(fragment);\n };\n\n const buildContent = () => {\n const parent = blockEnd.parentNode;\n if(!parent) {\n return;\n }\n\n const items = (Validator.isObservable(data)) ? data.val() : data;\n keyIds.clear();\n if(Array.isArray(items)) {\n for(let i = 0, length = items.length; i < length; i++) {\n const keyId= handleContentItem(items[i], i);\n keyIds.add(keyId);\n }\n } else {\n for(const indexKey in items) {\n const keyId = handleContentItem(items[indexKey], indexKey);\n keyIds.add(keyId);\n }\n }\n\n if(keyIds.size === 0) {\n clear();\n lastKeyOrder?.clear();\n return;\n }\n\n cleanCache(parent);\n if(!lastKeyOrder || lastKeyOrder.size === 0) {\n batchDOMUpdates(parent);\n } else {\n diffingDOMUpdates(parent);\n }\n lastKeyOrder?.clear();\n lastKeyOrder = new Set([...keyIds]);\n };\n\n buildContent();\n if(Validator.isObservable(data)) {\n data.subscribe(buildContent)\n }\n return element;\n}\n","import Anchor from \"../anchor\";\nimport {Observable} from \"../../data/Observable\";\nimport Validator from \"../../utils/validator\";\nimport DebugManager from \"../../utils/debug-manager\";\nimport {getKey} from \"../../utils/helpers\";\nimport { ElementCreator } from \"../../wrappers/ElementCreator\";\n\nexport function ForEachArray(data, callback, key, configs = {}) {\n const element = new Anchor('ForEach Array');\n const blockEnd = element.endElement();\n const blockStart = element.startElement();\n\n let cache = new Map();\n let lastNumberOfItems = 0;\n\n const keysCache = new WeakMap();\n\n const clear = () => {\n element.removeChildren();\n cleanCache();\n lastNumberOfItems = 0;\n };\n const getItemKey = (item, indexKey) => {\n if(keysCache.has(item)) {\n return keysCache.get(item);\n }\n return getKey(item, indexKey, key);\n };\n const getItemChild = (item) => {\n return getChildByKey(getItemKey(item));\n };\n\n const updateIndexObservers = (items, startFrom = 0) => {\n if(callback.length < 2) {\n return;\n }\n let index = startFrom;\n for(let i = startFrom, length = items?.length; i < length; i++) {\n const cacheItem = cache.get(getItemKey(items[i], i));\n if(!cacheItem) {\n continue;\n }\n cacheItem.indexObserver?.deref()?.set(index);\n index++;\n }\n };\n\n const removeCacheItem = (cacheItem, removeChild = true) => {\n if(!cacheItem) {\n return;\n }\n const child = cacheItem.child;\n cacheItem.indexObserver?.deref()?.cleanup();\n cacheItem.child = null;\n cacheItem.indexObserver = null;\n if(removeChild) {\n child?.remove();\n cache.delete(cacheItem.keyId);\n }\n }\n\n const removeCacheItemByKey = (keyId, removeChild = true) => {\n removeCacheItem(cache.get(keyId), removeChild);\n };\n\n const cleanCache = () => {\n for (const [keyId, cacheItem] of cache.entries()) {\n removeCacheItem(cacheItem, false);\n }\n cache.clear();\n }\n\n const buildItem = (item, indexKey) => {\n const keyId = getItemKey(item, indexKey);\n\n if(cache.has(keyId)) {\n const cacheItem = cache.get(keyId);\n cacheItem.indexObserver?.deref()?.set(indexKey);\n const child = cacheItem.child;\n if(child) {\n return child;\n }\n cache.delete(keyId);\n }\n\n try {\n const indexObserver = callback.length >= 2 ? Observable(indexKey) : null;\n let child = ElementCreator.getChild(callback(item, indexObserver));\n cache.set(keyId, {\n keyId,\n child: child,\n indexObserver: (indexObserver ? new WeakRef(indexObserver) : null)\n });\n keysCache.set(item, keyId);\n return child;\n } catch (e) {\n DebugManager.error('ForEach', `Error creating element for key ${keyId}` , e);\n throw e;\n }\n };\n const getChildByKey = function(keyId) {\n const cacheItem = cache.get(keyId);\n if(!cacheItem) {\n return null;\n }\n const child = cacheItem.child;\n if(!child) {\n removeCacheItem(cacheItem, false);\n return null;\n }\n return child;\n };\n\n const removeByKey = function(keyId, fragment) {\n const cacheItem = cache.get(keyId);\n if(!cacheItem) {\n return null;\n }\n const child = cacheItem.child;\n if(!child) {\n return null;\n }\n\n if(fragment) {\n fragment.appendChild(child);\n return;\n }\n child.remove();\n }\n\n const Actions = {\n toFragment(items, startIndexFrom = 0){\n const fragment = document.createDocumentFragment();\n for(let i = 0, length = items.length; i < length; i++) {\n fragment.append(buildItem(items[i], lastNumberOfItems));\n lastNumberOfItems++;\n }\n return fragment;\n },\n add(items, delay = 0) {\n setTimeout(() => {\n element.appendElement(Actions.toFragment(items))\n }, delay);\n },\n replace(items) {\n clear();\n Actions.add(items);\n },\n reOrder(items) {\n let child = null;\n const fragment = document.createDocumentFragment();\n for(const item of items) {\n child = getItemChild(item);\n if(child) {\n fragment.appendChild(child);\n }\n }\n child = null;\n element.appendElement(fragment, blockEnd);\n },\n removeOne(element, index) {\n let child = getItemChild(element);\n if(child) {\n removeCacheItemByKey(getItemKey(element, index), true);\n }\n child = null;\n },\n clear,\n merge(items) {\n Actions.add(items, 0);\n },\n push(items) {\n let delay = 0;\n if(configs.pushDelay) {\n delay = configs.pushDelay(items) ?? 0;\n }\n\n Actions.add(items, delay);\n },\n populate([target, iteration, callback]) {\n const fragment = document.createDocumentFragment();\n for (let i = 0; i < iteration; i++) {\n const data = callback(i);\n target.push(data);\n fragment.append(buildItem(data, i));\n lastNumberOfItems++;\n }\n element.appendChild(fragment);\n fragment.replaceChildren();\n },\n unshift(values){\n element.insertBefore(Actions.toFragment(values), blockStart.nextSibling);\n },\n splice(args, deleted) {\n const [start, deleteCount, ...values] = args;\n let elementBeforeFirst = null;\n const garbageFragment = document.createDocumentFragment();\n\n if(deleted.length > 0) {\n let firstKey = getItemKey(deleted[0], start);\n if(deleted.length === 1) {\n removeByKey(firstKey, garbageFragment);\n } else if(deleted.length > 1) {\n const firstChildRemoved = getChildByKey(firstKey);\n elementBeforeFirst = firstChildRemoved?.previousSibling;\n\n for(let i = 0; i < deleted.length; i++) {\n const keyId = getItemKey(deleted[i], start + i, key);\n removeByKey(keyId, garbageFragment);\n }\n }\n } else {\n elementBeforeFirst = blockEnd;\n }\n garbageFragment.replaceChildren();\n\n if(values && values.length && elementBeforeFirst) {\n element.insertBefore(Actions.toFragment(values), elementBeforeFirst.nextSibling);\n }\n\n },\n reverse(_, reversed) {\n Actions.reOrder(reversed);\n },\n sort(_, sorted) {\n Actions.reOrder(sorted);\n },\n remove(_, deleted) {\n Actions.removeOne(deleted);\n },\n pop(_, deleted) {\n Actions.removeOne(deleted);\n },\n shift(_, deleted) {\n Actions.removeOne(deleted);\n },\n swap(args, elements) {\n const parent = blockEnd.parentNode;\n\n let childA = getItemChild(elements[0]);\n let childB = getItemChild(elements[1]);\n if(!childA || !childB) {\n return;\n }\n\n const childBNext = childB.nextSibling;\n parent.insertBefore(childB, childA);\n parent.insertBefore(childA, childBNext);\n childA = null;\n childB = null;\n }\n };\n\n const buildContent = (items, _, operations) => {\n if(operations?.action === 'populate') {\n Actions.populate(operations.args, operations.result);\n } else {\n if(operations.action === 'clear' || !items.length) {\n if(lastNumberOfItems === 0) {\n return;\n }\n clear();\n }\n\n if(!operations?.action) {\n if(lastNumberOfItems === 0) {\n Actions.add(items);\n return;\n }\n Actions.replace(items);\n }\n else if(Actions[operations.action]) {\n Actions[operations.action](operations.args, operations.result);\n }\n }\n\n updateIndexObservers(items, 0);\n };\n\n buildContent(data.val(), null, {action: null});\n if(Validator.isObservable(data)) {\n data.subscribe(buildContent);\n }\n\n return element;\n}","import { Observable } from \"../../data/Observable\";\nimport Validator from \"../../utils/validator\";\nimport DebugManager from \"../../utils/debug-manager.js\";\nimport Anchor from \"../anchor\";\nimport {ElementCreator} from \"../../wrappers/ElementCreator\";\n\n/**\n * Show the element if the condition is true\n *\n * @param {ObservableItem|ObservableChecker} condition\n * @param {*} child\n * @param {string|null} comment\n * @returns {DocumentFragment}\n */\nexport const ShowIf = function(condition, child, comment = null) {\n if(!(Validator.isObservable(condition))) {\n return DebugManager.warn('ShowIf', \"ShowIf : condition must be an Observable / \"+comment, condition);\n }\n const element = new Anchor('Show if : '+(comment || ''));\n\n let childElement = null;\n const getChildElement = () => {\n if(childElement) {\n return childElement;\n }\n childElement = ElementCreator.getChild(child);\n return childElement;\n };\n\n const currentValue = condition.val();\n\n if(currentValue) {\n element.appendChild(getChildElement());\n }\n condition.subscribe(value => {\n if(value) {\n element.appendChild(getChildElement());\n } else {\n element.remove();\n }\n });\n\n return element;\n}\n\n/**\n * Hide the element if the condition is true\n * @param {ObservableItem|ObservableChecker} condition\n * @param child\n * @param comment\n * @returns {DocumentFragment}\n */\nexport const HideIf = function(condition, child, comment) {\n\n const hideCondition = Observable(!condition.val());\n condition.subscribe(value => hideCondition.set(!value));\n\n return ShowIf(hideCondition, child, comment);\n}\n\n/**\n * Hide the element if the condition is false\n *\n * @param {ObservableItem|ObservableChecker} condition\n * @param {*} child\n * @param {string|null} comment\n * @returns {DocumentFragment}\n */\nexport const HideIfNot = function(condition, child, comment) {\n return ShowIf(condition, child, comment);\n}","import NativeDocumentError from \"../../errors/NativeDocumentError\";\nimport Validator from \"../../utils/validator\";\nimport Anchor from \"../anchor\";\nimport {ElementCreator} from \"../../wrappers/ElementCreator\";\n\n\n\n/**\n *\n * @param {ObservableItem|ObservableChecker} $condition\n * @param {{[key]: *}} values\n * @param {Boolean} shouldKeepInCache\n * @returns {DocumentFragment}\n */\nexport const Match = function($condition, values, shouldKeepInCache = true) {\n\n if(!Validator.isObservable($condition)) {\n throw new NativeDocumentError(\"Toggle : condition must be an Observable\");\n }\n\n const anchor = new Anchor();\n const cache = new Map();\n\n const getItem = function(key) {\n if(shouldKeepInCache && cache.has(key)) {\n return cache.get(key);\n }\n let item = values[key];\n if(!item) {\n return null;\n }\n item = ElementCreator.getChild(item);\n shouldKeepInCache && cache.set(key, item);\n return item;\n }\n\n const defaultValue = $condition.val();\n const defaultContent = getItem(defaultValue);\n if(defaultContent) {\n anchor.appendChild(defaultContent);\n }\n\n $condition.subscribe(value => {\n const content = getItem(value);\n anchor.remove();\n if(content) {\n anchor.appendChild(content);\n }\n })\n\n return anchor;\n}\n\n\n/**\n *\n * @param {ObservableItem|ObservableChecker} $condition\n * @param {*} onTrue\n * @param {*} onFalse\n * @returns {DocumentFragment}\n */\nexport const Switch = function ($condition, onTrue, onFalse) {\n\n if(!Validator.isObservable($condition)) {\n throw new NativeDocumentError(\"Toggle : condition must be an Observable\");\n }\n\n return Match($condition, {\n true: onTrue,\n false: onFalse,\n });\n}\n\n/**\n *\n * @param {ObservableItem|ObservableChecker} $condition\n * @returns {{show: Function, otherwise: (((*) => {}):DocumentFragment)}\n */\nexport const When = function($condition) {\n if(!Validator.isObservable($condition)) {\n throw new NativeDocumentError(\"When : condition must be an Observable\");\n }\n\n let $onTrue = null;\n let $onFalse = null;\n\n return {\n show(onTrue) {\n $onTrue = onTrue;\n return this;\n },\n otherwise(onFalse) {\n $onFalse = onFalse;\n return Switch($condition, $onTrue, $onFalse);\n }\n }\n}","import HtmlElementWrapper from \"../wrappers/HtmlElementWrapper\";\n\nexport const Div = HtmlElementWrapper('div');\nexport const Span = HtmlElementWrapper('span');\nexport const Label = HtmlElementWrapper('label');\nexport const P = HtmlElementWrapper('p');\nexport const Paragraph = P;\nexport const Strong = HtmlElementWrapper('strong');\nexport const H1 = HtmlElementWrapper('h1');\nexport const H2 = HtmlElementWrapper('h2');\nexport const H3 = HtmlElementWrapper('h3');\nexport const H4 = HtmlElementWrapper('h4');\nexport const H5 = HtmlElementWrapper('h5');\nexport const H6 = HtmlElementWrapper('h6');\n\nexport const Br = HtmlElementWrapper('br');\n\nexport const Link = HtmlElementWrapper('a');\nexport const Pre = HtmlElementWrapper('pre');\nexport const Code = HtmlElementWrapper('code');\nexport const Blockquote = HtmlElementWrapper('blockquote');\nexport const Hr = HtmlElementWrapper('hr');\nexport const Em = HtmlElementWrapper('em');\nexport const Small = HtmlElementWrapper('small');\nexport const Mark = HtmlElementWrapper('mark');\nexport const Del = HtmlElementWrapper('del');\nexport const Ins = HtmlElementWrapper('ins');\nexport const Sub = HtmlElementWrapper('sub');\nexport const Sup = HtmlElementWrapper('sup');\nexport const Abbr = HtmlElementWrapper('abbr');\nexport const Cite = HtmlElementWrapper('cite');\nexport const Quote = HtmlElementWrapper('q');","import HtmlElementWrapper from \"../wrappers/HtmlElementWrapper\";\n\nexport const Dl = HtmlElementWrapper('dl');\nexport const Dt = HtmlElementWrapper('dt');\nexport const Dd = HtmlElementWrapper('dd');","import HtmlElementWrapper from \"../wrappers/HtmlElementWrapper\";\n\n\nexport const Form = HtmlElementWrapper('form', function(el) {\n\n el.submit = function(action) {\n if(typeof action === 'function') {\n el.onSubmit((e) => {\n e.preventDefault();\n action(e);\n });\n return el;\n }\n this.setAttribute('action', action);\n return el;\n };\n el.multipartFormData = function() {\n this.setAttribute('enctype', 'multipart/form-data');\n return el;\n }\n el.post = function(action) {\n this.setAttribute('method', 'post');\n this.setAttribute('action', action);\n return el;\n };\n el.get = function(action) {\n this.setAttribute('method', 'get');\n this.setAttribute('action', action);\n };\n return el;\n});\n\nexport const Input = HtmlElementWrapper('input');\n\nexport const TextArea = HtmlElementWrapper('textarea');\nexport const TextInput = TextArea;\n\nexport const Select = HtmlElementWrapper('select');\nexport const FieldSet = HtmlElementWrapper('fieldset', );\nexport const Option = HtmlElementWrapper('option');\nexport const Legend = HtmlElementWrapper('legend');\nexport const Datalist = HtmlElementWrapper('datalist');\nexport const Output = HtmlElementWrapper('output');\nexport const Progress = HtmlElementWrapper('progress');\nexport const Meter = HtmlElementWrapper('meter');\n\nexport const ReadonlyInput = (attributes) => Input({ readonly: true, ...attributes });\nexport const HiddenInput = (attributes) => Input({type: 'hidden', ...attributes });\nexport const FileInput = (attributes) => Input({ type: 'file', ...attributes });\nexport const PasswordInput = (attributes) => Input({ type: 'password', ...attributes });\nexport const Checkbox = (attributes) => Input({ type: 'checkbox', ...attributes });\nexport const Radio = (attributes) => Input({ type: 'radio', ...attributes });\n\nexport const RangeInput = (attributes) => Input({ type: 'range', ...attributes });\nexport const ColorInput = (attributes) => Input({ type: 'color', ...attributes });\nexport const DateInput = (attributes) => Input({ type: 'date', ...attributes });\nexport const TimeInput = (attributes) => Input({ type: 'time', ...attributes });\nexport const DateTimeInput = (attributes) => Input({ type: 'datetime-local', ...attributes });\nexport const WeekInput = (attributes) => Input({ type: 'week', ...attributes });\nexport const MonthInput = (attributes) => Input({ type: 'month', ...attributes });\nexport const SearchInput = (attributes) => Input({ type: 'search', ...attributes });\nexport const TelInput = (attributes) => Input({ type: 'tel', ...attributes });\nexport const UrlInput = (attributes) => Input({ type: 'url', ...attributes });\nexport const EmailInput = (attributes) => Input({ type: 'email', ...attributes });\nexport const NumberInput = (attributes) => Input({ type: 'number', ...attributes });\n\n\nexport const Button = HtmlElementWrapper('button');\nexport const SimpleButton = (child, attributes) => Button(child, { type: 'button', ...attributes });\nexport const SubmitButton = (child, attributes) => Button(child, { type: 'submit', ...attributes });\n\n","import HtmlElementWrapper from \"../wrappers/HtmlElementWrapper\";\n\nexport const Main = HtmlElementWrapper('main');\nexport const Section = HtmlElementWrapper('section');\nexport const Article = HtmlElementWrapper('article');\nexport const Aside = HtmlElementWrapper('aside');\nexport const Nav = HtmlElementWrapper('nav');\nexport const Figure = HtmlElementWrapper('figure');\nexport const FigCaption = HtmlElementWrapper('figcaption');\n\nexport const Header = HtmlElementWrapper('header');\nexport const Footer = HtmlElementWrapper('footer');\n","import HtmlElementWrapper from \"../wrappers/HtmlElementWrapper\"\nimport Validator from \"../utils/validator\";\nimport NativeDocumentError from \"../errors/NativeDocumentError\";\n\nexport const BaseImage = HtmlElementWrapper('img');\nexport const Img = function(src, attributes) {\n return BaseImage({ src, ...attributes });\n};\n\n/**\n *\n * @param {string} src\n * @param {string|null} defaultImage\n * @param {Object} attributes\n * @param {?Function} callback\n * @returns {Image}\n */\nexport const AsyncImg = function(src, defaultImage, attributes, callback) {\n const image = Img(defaultImage || src, attributes);\n const img = new Image();\n img.onload = () => {\n Validator.isFunction(callback) && callback(null, image);\n image.src = src;\n };\n img.onerror = () => {\n Validator.isFunction(callback) && callback(new NativeDocumentError('Image not found'));\n };\n if(Validator.isObservable(src)) {\n src.subscribe(newSrc => {\n img.src = newSrc;\n });\n }\n img.src = src;\n return image;\n};\n\n/**\n *\n * @param {string} src\n * @param {Object} attributes\n * @returns {Image}\n */\nexport const LazyImg = function(src, attributes) {\n return Img(src, { ...attributes, loading: 'lazy' });\n};","import HtmlElementWrapper from \"../wrappers/HtmlElementWrapper\";\n\n\nexport const Details = HtmlElementWrapper('details');\nexport const Summary = HtmlElementWrapper('summary');\nexport const Dialog = HtmlElementWrapper('dialog');\nexport const Menu = HtmlElementWrapper('menu');","import HtmlElementWrapper from \"../wrappers/HtmlElementWrapper\";\n\nexport const OrderedList = HtmlElementWrapper('ol');\nexport const UnorderedList = HtmlElementWrapper('ul');\nexport const ListItem = HtmlElementWrapper('li');\n\nexport const Li = ListItem;\nexport const Ol = OrderedList;\nexport const Ul = UnorderedList;\n\n","import HtmlElementWrapper from \"../wrappers/HtmlElementWrapper\";\n\nexport const Audio = HtmlElementWrapper('audio');\nexport const Video = HtmlElementWrapper('video');\nexport const Source = HtmlElementWrapper('source');\nexport const Track = HtmlElementWrapper('track');\nexport const Canvas = HtmlElementWrapper('canvas');\nexport const Svg = HtmlElementWrapper('svg');","import HtmlElementWrapper from \"../wrappers/HtmlElementWrapper\";\n\nexport const Time = HtmlElementWrapper('time');\nexport const Data = HtmlElementWrapper('data');\nexport const Address = HtmlElementWrapper('address');\nexport const Kbd = HtmlElementWrapper('kbd');\nexport const Samp = HtmlElementWrapper('samp');\nexport const Var = HtmlElementWrapper('var');\nexport const Wbr = HtmlElementWrapper('wbr');","import HtmlElementWrapper from \"../wrappers/HtmlElementWrapper\";\n\nexport const Caption = HtmlElementWrapper('caption');\nexport const Table = HtmlElementWrapper('table');\nexport const THead = HtmlElementWrapper('thead');\nexport const TFoot = HtmlElementWrapper('tfoot');\nexport const TBody = HtmlElementWrapper('tbody');\nexport const Tr = HtmlElementWrapper('tr');\nexport const TRow = Tr;\nexport const Th = HtmlElementWrapper('th');\nexport const THeadCell = Th;\nexport const TFootCell = Th;\nexport const Td = HtmlElementWrapper('td');\nexport const TBodyCell = Td;","import HtmlElementWrapper from \"../wrappers/HtmlElementWrapper\";\n\nexport * from './control/for-each';\nexport * from './control/for-each-array';\nexport * from './control/show-if';\nexport * from './control/switch';\nexport * from './content-formatter';\nexport * from './description-list';\nexport * from './form';\nexport * from './html5-semantics';\nexport * from './img';\nexport * from './interactive';\nexport * from './list';\nexport * from './medias';\nexport * from './meta-data';\nexport * from './table';\n\nexport const Fragment = HtmlElementWrapper('');\n\n\n\n\n","import {trim} from \"../utils/helpers.js\";\n\nexport const RouteParamPatterns = {\n\n};\n\n/**\n *\n * @param {string} $path\n * @param {Function} $component\n * @param {{name:?string, middlewares:Function[], shouldRebuild:Boolean, with: Object }}$options\n * @class\n */\nexport function Route($path, $component, $options = {}) {\n\n $path = '/'+trim($path, '/');\n\n let $pattern = null;\n let $name = $options.name || null;\n\n const $middlewares = $options.middlewares || [];\n const $shouldRebuild = $options.shouldRebuild || false;\n const $paramsValidators = $options.with || {};\n\n const $params = {};\n const $paramsNames = [];\n\n\n const paramsExtractor = (description) => {\n if(!description) return null;\n const [name, type] = description.split(':');\n\n let pattern = $paramsValidators[name];\n if(!pattern && type) {\n pattern = RouteParamPatterns[type];\n }\n if(!pattern) {\n pattern = '[^/]+';\n }\n\n pattern = pattern.replace('(', '(?:');\n\n return { name, pattern: `(${pattern})` };\n };\n\n const getPattern = () => {\n if($pattern) {\n return $pattern;\n }\n\n const patternDescription = $path.replace(/\\{(.*?)}/ig, (block, definition) => {\n const description = paramsExtractor(definition);\n if(!description || !description.pattern) return block;\n $params[description.name] = description.pattern;\n $paramsNames.push(description.name);\n return description.pattern;\n });\n\n $pattern = new RegExp('^'+patternDescription+'$');\n return $pattern;\n };\n\n this.name = () => $name;\n this.component = () => $component;\n this.middlewares = () => $middlewares;\n this.shouldRebuild = () => $shouldRebuild;\n this.path = () => $path;\n\n /**\n *\n * @param {string} path\n */\n this.match = function(path) {\n path = '/'+trim(path, '/');\n const match = getPattern().exec(path);\n if(!match) return false;\n const params = {};\n\n getPattern().exec(path).forEach((value, index) => {\n if(index < 1) return;\n const name = $paramsNames[index - 1];\n params[name] = value;\n });\n\n return params;\n };\n /**\n * @param {{params: ?Object, query: ?Object, basePath: ?string}} configs\n */\n this.url = function(configs) {\n const path = $path.replace(/\\{(.*?)}/ig, (block, definition) => {\n const description = paramsExtractor(definition);\n if(configs.params && configs.params[description.name]) {\n return configs.params[description.name];\n }\n throw new Error(`Missing parameter '${description.name}'`);\n });\n\n const queryString = (typeof configs.query === 'object') ? (new URLSearchParams(configs.query)).toString() : null;\n return (configs.basePath ? configs.basePath : '') + (queryString ? `${path}?${queryString}` : path);\n }\n}","\n\nexport default class RouterError extends Error {\n constructor(message, context) {\n super(message);\n this.context = context;\n }\n\n}","import {trim} from \"../utils/helpers.js\";\n\nexport const RouteGroupHelper = {\n /**\n *\n * @param {{suffix: string, options: {middlewares: Function[], name: string}}[]} $groupTree\n * @param {string} path\n * @returns {string}\n */\n fullPath: ($groupTree, path) => {\n const fullPath = [];\n $groupTree.forEach(group => {\n fullPath.push(trim(group.suffix, '/'));\n });\n fullPath.push(trim(path, '/'));\n return fullPath.join('/');\n },\n /**\n *\n * @param {{suffix: string, options: {middlewares: Function[], name: string}}[]} $groupTree\n * @param {Function[]} middlewares\n * @returns {Function[]}\n */\n fullMiddlewares: ($groupTree, middlewares) => {\n const fullMiddlewares = [];\n $groupTree.forEach(group => {\n if(group.options.middlewares) {\n fullMiddlewares.push(...group.options.middlewares);\n }\n });\n if(middlewares) {\n fullMiddlewares.push(...middlewares);\n }\n return fullMiddlewares;\n },\n /**\n *\n * @param {{suffix: string, options: {middlewares: Function[], name: string}}[]} $groupTree\n * @param {string} name\n * @returns {string}\n */\n fullName: ($groupTree, name) => {\n const fullName = [];\n $groupTree.forEach(group => {\n if(group.options?.name) {\n fullName.push(group.options.name);\n }\n });\n name && fullName.push(name);\n return fullName.join('.');\n }\n};","\n\nexport default function HashRouter() {\n\n const $history = [];\n let $currentIndex = 0;\n\n /**\n *\n * @param {number} delta\n */\n const go = (delta) => {\n const index = $currentIndex + delta;\n if(!$history[index]) {\n return;\n }\n $currentIndex = index;\n const { route, params, query, path } = $history[index];\n setHash(path);\n };\n\n const canGoBack = function() {\n return $currentIndex > 0;\n };\n const canGoForward = function() {\n return $currentIndex < $history.length - 1;\n };\n\n /**\n *\n * @param {string} path\n */\n const setHash = (path) => {\n window.location.replace(`${window.location.pathname}${window.location.search}#${path}`);\n }\n\n const getCurrentHash = () => window.location.hash.slice(1);\n\n /**\n * @param {string|{name:string,params?:Object, query?:Object }} target\n */\n this.push = function(target) {\n const { route, params, query, path } = this.resolve(target);\n if(path === getCurrentHash()) {\n return;\n }\n $history.splice($currentIndex + 1);\n $history.push({ route, params, query, path });\n $currentIndex++;\n setHash(path);\n };\n /**\n *\n * @param {string|{name:string,params?:Object, query?:Object }} target\n */\n this.replace = function(target) {\n const { route, params, query, path } = this.resolve(target);\n if(path === getCurrentHash()) {\n return;\n }\n $history[$currentIndex] = { route, params, query, path };\n };\n this.forward = function() {\n return canGoForward() && go(1);\n };\n this.back = function() {\n return canGoBack() && go(-1);\n };\n\n /**\n * @param {string} defaultPath\n */\n this.init = function(defaultPath) {\n window.addEventListener('hashchange', () => {\n const { route, params, query, path } = this.resolve(getCurrentHash());\n this.handleRouteChange(route, params, query, path);\n });\n const { route, params, query, path } = this.resolve(defaultPath || getCurrentHash());\n $history.push({ route, params, query, path });\n $currentIndex = 0;\n this.handleRouteChange(route, params, query, path);\n }\n};","import RouterError from '../../errors/RouterError';\nimport DebugManager from \"../../utils/debug-manager.js\";\n\nexport default function HistoryRouter() {\n\n /**\n *\n * @param {string|{name:string,params?:Object, query?:Object }} target\n */\n this.push = function(target) {\n try {\n const { route, path, params, query } = this.resolve(target);\n if(window.history.state && window.history.state.path === path) {\n return;\n }\n window.history.pushState({ name: route.name(), params, path}, route.name() || path , path);\n this.handleRouteChange(route, params, query, path);\n } catch (e) {\n DebugManager.error('HistoryRouter', 'Error in pushState', e);\n }\n };\n /**\n *\n * @param {string|{name:string,params?:Object, query?:Object }} target\n */\n this.replace = function(target) {\n const { route, path, params } = this.resolve(target);\n try {\n window.history.replaceState({ name: route.name(), params, path}, route.name() || path , path);\n this.handleRouteChange(route, params, {}, path);\n } catch(e) {\n DebugManager.error('HistoryRouter', 'Error in replaceState', e);\n }\n };\n this.forward = function() {\n window.history.forward();\n };\n\n this.back = function() {\n window.history.back();\n };\n\n /**\n * @param {string} defaultPath\n */\n this.init = function(defaultPath) {\n window.addEventListener('popstate', (event) => {\n try {\n if(!event.state || !event.state.path) {\n return;\n }\n const statePath = event.state.path;\n const {route, params, query, path} = this.resolve(statePath);\n if(!route) {\n return;\n }\n this.handleRouteChange(route, params, query, path);\n } catch(e) {\n DebugManager.error('HistoryRouter', 'Error in popstate event', e);\n }\n });\n const { route, params, query, path } = this.resolve(defaultPath || (window.location.pathname+window.location.search));\n this.handleRouteChange(route, params, query, path);\n }\n\n};","\nexport default function MemoryRouter() {\n const $history = [];\n let $currentIndex = 0;\n\n /**\n *\n * @param {number} delta\n */\n const go = (delta) => {\n const index = $currentIndex + delta;\n if(!$history[index]) {\n return;\n }\n $currentIndex = index;\n const { route, params, query, path } = $history[index];\n this.handleRouteChange(route, params, query, path);\n };\n\n const canGoBack = function() {\n return $currentIndex > 0;\n };\n const canGoForward = function() {\n return $currentIndex < $history.length - 1;\n };\n\n /**\n *\n * @param {string|{name:string,params?:Object, query?:Object }} target\n */\n this.push = function(target) {\n const { route, params, query, path} = this.resolve(target);\n if($history[$currentIndex] && $history[$currentIndex].path === path) {\n return;\n }\n $history.splice($currentIndex + 1);\n $history.push({ route, params, query, path });\n $currentIndex++;\n this.handleRouteChange(route, params, query, path);\n };\n\n /**\n *\n * @param {string|{name:string,params?:Object, query?:Object }} target\n */\n this.replace = function(target) {\n const { route, params, query, path} = this.resolve(target);\n $history[$currentIndex] = { route, params, query, path };\n this.handleRouteChange(route, params, query, path);\n };\n\n this.forward = function() {\n return canGoForward() && go(1);\n };\n\n this.back = function() {\n return canGoBack() && go(-1);\n };\n\n /**\n * @param {string} defaultPath\n */\n this.init = function(defaultPath) {\n const currentPath = defaultPath || (window.location.pathname + window.location.search);\n const { route, params, query, path } = this.resolve(currentPath);\n $history.push({ route, params, query, path });\n $currentIndex = 0;\n\n this.handleRouteChange(route, params, query, path);\n }\n};","/**\n *\n * @param {Router} router\n * @param {?HTMLElement} container\n */\nexport function RouterComponent(router, container) {\n\n const $cache = new Map();\n\n const updateContainer = function(node) {\n container.innerHTML = '';\n container.appendChild(node);\n };\n\n const handleCurrentRouterState = function(state) {\n if(!state.route) {\n return;\n }\n const { route, params, query, path } = state;\n if($cache.has(path)) {\n const cacheNode = $cache.get(path);\n updateContainer(cacheNode);\n return;\n }\n const Component = route.component();\n const node = Component({ params, query });\n $cache.set(path, node);\n updateContainer(node);\n };\n\n router.subscribe(handleCurrentRouterState);\n\n handleCurrentRouterState(router.currentState());\n return container;\n}","import {Route} from \"./Route.js\";\nimport Validator from \"../utils/validator.js\";\nimport RouterError from \"../errors/RouterError.js\";\nimport {RouteGroupHelper} from \"./RouteGroupHelper.js\";\nimport {trim} from \"../utils/helpers.js\";\nimport HashRouter from \"./modes/HashRouter.js\";\nimport HistoryRouter from \"./modes/HistoryRouter.js\";\nimport MemoryRouter from \"./modes/MemoryRouter.js\";\nimport DebugManager from \"../utils/debug-manager.js\";\nimport {RouterComponent} from \"./RouterComponent.js\";\n\nexport const DEFAULT_ROUTER_NAME = 'default';\n\n/**\n *\n * @param {{mode: 'memory'|'history'|'hash'}} $options\n * @constructor\n */\nexport default function Router($options = {}) {\n\n /** @type {Route[]} */\n const $routes = [];\n /** @type {{[string]: Route}} */\n const $routesByName = {};\n const $groupTree = [];\n const $listeners = [];\n const $currentState = { route: null, params: null, query: null, path: null, hash: null };\n\n if($options.mode === 'hash') {\n HashRouter.apply(this, []);\n } else if($options.mode === 'history') {\n HistoryRouter.apply(this, []);\n } else if($options.mode === 'memory') {\n MemoryRouter.apply(this, []);\n } else {\n throw new RouterError('Invalid router mode '+$options.mode);\n }\n\n const trigger = function(request, next) {\n for(const listener of $listeners) {\n try {\n listener(request);\n next && next(request);\n } catch (e) {\n DebugManager.warn('Route Listener', 'Error in listener:', e);\n }\n }\n }\n\n this.routes = () => [...$routes];\n this.currentState = () => ({ ...$currentState });\n\n /**\n *\n * @param {string} path\n * @param {Function} component\n * @param {{name:?string, middlewares:Function[], shouldRebuild:Boolean, with: Object }} options\n * @returns {this}\n */\n this.add = function(path, component, options) {\n const route = new Route(RouteGroupHelper.fullPath($groupTree, path), component, {\n ...options,\n middlewares: RouteGroupHelper.fullMiddlewares($groupTree, options?.middlewares || []),\n name: options?.name ? RouteGroupHelper.fullName($groupTree, options.name) : null,\n });\n $routes.push(route);\n if(route.name()) {\n $routesByName[route.name()] = route;\n }\n return this;\n };\n\n /**\n *\n * @param {string} suffix\n * @param {{ middlewares: Function[], name: string}} options\n * @param {Function} callback\n * @returns {this}\n */\n this.group = function(suffix, options, callback) {\n if(!Validator.isFunction(callback)) {\n throw new RouterError('Callback must be a function');\n }\n $groupTree.push({suffix, options});\n callback();\n $groupTree.pop();\n return this;\n };\n\n /**\n *\n * @param {string} name\n * @param {Object}params\n * @param {Object} query\n * @returns {*}\n */\n this.generateUrl = function(name, params = {}, query = {}) {\n const route = $routesByName[name];\n if(!route) {\n throw new RouterError(`Route not found for name: ${name}`);\n }\n return route.url({ params, query });\n };\n\n /**\n *\n * @param {string|{name:string,params?:Object, query?:Object }} target\n * @returns {{route:Route, params:Object, query:Object, path:string}}\n */\n this.resolve = function(target) {\n if(Validator.isJson(target)) {\n const route = $routesByName[target.name];\n if(!route) {\n throw new RouterError(`Route not found for name: ${target.name}`);\n }\n return {\n route,\n params: target.params,\n query: target.query,\n path: route.url({ ...target })\n };\n }\n\n const [urlPath, urlQuery] = target.split('?');\n const path = '/'+trim(urlPath, '/');\n let routeFound = null, params;\n\n for(const route of $routes) {\n params = route.match(path);\n if(params) {\n routeFound = route;\n break;\n }\n }\n if(!routeFound) {\n throw new RouterError(`Route not found for url: ${urlPath}`);\n }\n const queryParams = {};\n if(urlQuery) {\n const queries = new URLSearchParams(urlQuery).entries();\n for (const [key, value] of queries) {\n queryParams[key] = value;\n }\n }\n\n return { route: routeFound, params, query: queryParams, path: target };\n };\n\n /**\n *\n * @param {Function} listener\n * @returns {(function(): void)|*}\n */\n this.subscribe = function(listener) {\n if(!Validator.isFunction(listener)) {\n throw new RouterError('Listener must be a function');\n }\n $listeners.push(listener);\n return () => {\n $listeners.splice($listeners.indexOf(listener), 1);\n };\n };\n\n /**\n *\n * @param {Route} route\n * @param {Object} params\n * @param {Object} query\n * @param {string} path\n */\n this.handleRouteChange = function(route, params, query, path) {\n $currentState.route = route;\n $currentState.params = params;\n $currentState.query = query;\n $currentState.path = path;\n\n const middlewares = [...route.middlewares(), trigger];\n let currentIndex = 0;\n const request = { ...$currentState };\n\n const next = (editableRequest) => {\n currentIndex++;\n if(currentIndex >= middlewares.length) {\n return;\n }\n return middlewares[currentIndex](editableRequest || request, next);\n };\n return middlewares[currentIndex](request, next);\n };\n\n}\n\nRouter.routers = {};\n\n/**\n *\n * @param {{mode: 'memory'|'history'|'hash', name?:string, entry?: string}} options\n * @param {Function} callback\n * @param {Element} container\n */\nRouter.create = function(options, callback) {\n if(!Validator.isFunction(callback)) {\n DebugManager.error('Router', 'Callback must be a function', e);\n throw new RouterError('Callback must be a function');\n }\n const router = new Router(options);\n Router.routers[options.name || DEFAULT_ROUTER_NAME] = router;\n callback(router);\n\n router.init(options.entry);\n\n router.mount = function(container) {\n if(Validator.isString(container)) {\n const mountContainer = document.querySelector(container);\n if(!mountContainer) {\n throw new RouterError(`Container not found for selector: ${container}`);\n }\n container = mountContainer;\n } else if(!Validator.isElement(container)) {\n throw new RouterError('Container must be a string or an Element');\n }\n\n return RouterComponent(router, container);\n };\n\n return router;\n};\n\nRouter.get = function(name) {\n const router = Router.routers[name || DEFAULT_ROUTER_NAME];\n if(!router) {\n throw new RouterError(`Router not found for name: ${name}`);\n }\n return router;\n};\n\nRouter.push = function(target, name = null) {\n return Router.get(name).push(target);\n};\n\nRouter.replace = function(target, name = null) {\n return Router.get(name).replace(target);\n};\n\nRouter.forward = function(name = null) {\n return Router.get(name).forward();\n};\nRouter.back = function(name = null) {\n return Router.get(name).back();\n};\n","import Validator from \"../utils/validator.js\";\nimport {Link as NativeLink} from \"../../elements.js\";\nimport Router, {DEFAULT_ROUTER_NAME} from \"./Router.js\";\nimport RouterError from \"../errors/RouterError.js\";\n\n\nexport function Link(options, children){\n const { to, href, ...attributes } = options;\n const target = to || href;\n if(Validator.isString(target)) {\n const router = Router.get();\n return NativeLink({ ...attributes, href: target}, children).nd.onPreventClick(() => {\n router.push(target);\n });\n }\n const routerName = target.router || DEFAULT_ROUTER_NAME;\n const router = Router.get(routerName);\n if(!router) {\n throw new RouterError('Router not found \"'+routerName+'\" for link \"'+target.name+'\"');\n }\n const url = router.generateUrl(target.name, target.params, target.query);\n return NativeLink({ ...attributes, href: url }, children).nd.onPreventClick(() => {\n router.push(url);\n });\n}\n\nLink.blank = function(attributes, children){\n return NativeLink({ ...attributes, target: '_blank'}, children);\n};"],"names":["DebugManager","Link","NativeLink"],"mappings":";;;IAAA,IAAI,YAAY,GAAG,EAAE;;IAEsB;IAC3C,IAAI,YAAY,GAAG;IACnB,QAAQ,OAAO,EAAE,KAAK;;IAEtB,QAAQ,MAAM,GAAG;IACjB,YAAY,IAAI,CAAC,OAAO,GAAG,IAAI;IAC/B,YAAY,OAAO,CAAC,GAAG,CAAC,sCAAsC,CAAC;IAC/D,SAAS;;IAET,QAAQ,OAAO,GAAG;IAClB,YAAY,IAAI,CAAC,OAAO,GAAG,KAAK;IAChC,SAAS;;IAET,QAAQ,GAAG,CAAC,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE;IACrC,YAAY,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;IAC/B,YAAY,OAAO,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,QAAQ,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC;IACxD,YAAY,IAAI,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;IACvC,YAAY,OAAO,CAAC,KAAK,EAAE;IAC3B,YAAY,OAAO,CAAC,QAAQ,EAAE;IAC9B,SAAS;;IAET,QAAQ,IAAI,CAAC,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE;IACtC,YAAY,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;IAC/B,YAAY,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,QAAQ,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,EAAE,IAAI,CAAC;IAC7D,SAAS;;IAET,QAAQ,KAAK,CAAC,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE;IACxC,YAAY,OAAO,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,QAAQ,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,EAAE,KAAK,CAAC;IAC9D;IACA,KAAK;;IAEL;AASA,yBAAe,YAAY;;ICtC3B,MAAM,aAAa,IAAI,WAAW;;IAElC,IAAI,IAAI,eAAe,GAAG,CAAC;IAC3B,IAAI,MAAM,YAAY,GAAG,IAAI,GAAG,EAAE;;IAElC,IAAI,OAAO;IACX;IACA;IACA;IACA;IACA;IACA;IACA;IACA,QAAQ,QAAQ,CAAC,UAAU,EAAE;IAC7B,YAAY,MAAM,EAAE,GAAG,EAAE,eAAe;IACxC,YAAY,YAAY,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,OAAO,CAAC,UAAU,CAAC,CAAC;IACzD,YAAY,OAAO,EAAE;IACrB,SAAS;IACT,QAAQ,UAAU,CAAC,EAAE,EAAE;IACvB,YAAY,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC;IACnC,SAAS;IACT,QAAQ,iBAAiB,CAAC,EAAE,EAAE;IAC9B,YAAY,OAAO,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE;IAChD,SAAS;IACT,QAAQ,OAAO,GAAG;IAClB,YAAY,KAAK,MAAM,CAAC,CAAC,EAAE,iBAAiB,CAAC,IAAI,YAAY,EAAE;IAC/D,gBAAgB,MAAM,UAAU,GAAG,iBAAiB,CAAC,KAAK,EAAE;IAC5D,gBAAgB,IAAI,UAAU,EAAE;IAChC,oBAAoB,UAAU,CAAC,OAAO,EAAE;IACxC;IACA;IACA,YAAY,YAAY,CAAC,KAAK,EAAE;IAChC,SAAS;IACT;IACA;IACA;IACA;IACA,QAAQ,gBAAgB,CAAC,SAAS,EAAE;IACpC,YAAY,GAAG,YAAY,CAAC,IAAI,GAAG,SAAS,EAAE;IAC9C,YAAY,IAAI,YAAY,GAAG,CAAC;IAChC,YAAY,KAAK,MAAM,CAAC,EAAE,EAAE,iBAAiB,CAAC,IAAI,YAAY,EAAE;IAChE,gBAAgB,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,EAAE;IAChD,oBAAoB,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC;IAC3C,oBAAoB,YAAY,EAAE;IAClC;IACA;IACA,YAAY,IAAI,YAAY,GAAG,CAAC,EAAE;IAClC,gBAAgBA,cAAY,CAAC,GAAG,CAAC,mBAAmB,EAAE,CAAC,WAAW,EAAE,YAAY,CAAC,qBAAqB,CAAC,CAAC;IACxG;IACA;IACA,KAAK;IACL,CAAC,EAAE,CAAC;;ICvDW,MAAM,mBAAmB,SAAS,KAAK,CAAC;IACvD,IAAI,WAAW,CAAC,OAAO,EAAE,OAAO,GAAG,EAAE,EAAE;IACvC,QAAQ,KAAK,CAAC,OAAO,CAAC;IACtB,QAAQ,IAAI,CAAC,IAAI,GAAG,qBAAqB;IACzC,QAAQ,IAAI,CAAC,OAAO,GAAG,OAAO;IAC9B,QAAQ,IAAI,CAAC,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;IACjD;IACA;;ICPA;IACA;IACA;IACA;IACA;IACA;IACe,SAAS,iBAAiB,CAAC,WAAW,EAAE,QAAQ,EAAE;IACjE,IAAI,IAAI,CAAC,UAAU,GAAG,WAAW;IACjC,IAAI,IAAI,CAAC,OAAO,GAAG,QAAQ;IAC3B,IAAI,IAAI,CAAC,eAAe,GAAG,EAAE;IAC7B;;IAEA,iBAAiB,CAAC,SAAS,CAAC,sBAAsB,GAAG,IAAI;;IAEzD,iBAAiB,CAAC,SAAS,CAAC,SAAS,GAAG,SAAS,QAAQ,EAAE;IAC3D,IAAI,MAAM,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,KAAK,KAAK;IAC7D,QAAQ,QAAQ,IAAI,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACjD,KAAK,CAAC;IACN,IAAI,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,WAAW,CAAC;IAC1C,IAAI,OAAO,WAAW;IACtB,CAAC;;IAED,iBAAiB,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,QAAQ,EAAE;IACvD,IAAI,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;IAC5D;;IAEA,iBAAiB,CAAC,SAAS,CAAC,GAAG,GAAG,WAAW;IAC7C,IAAI,OAAO,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC;IAC9D;;IAEA,iBAAiB,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,KAAK,EAAE;IAClD,IAAI,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC;IACrC,CAAC;;IAED,iBAAiB,CAAC,SAAS,CAAC,OAAO,GAAG,WAAW;IACjD,IAAI,OAAO,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE;IACpC,CAAC;;IAED,iBAAiB,CAAC,SAAS,CAAC,OAAO,GAAG,WAAW;IACjD,IAAI,OAAO,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE;IACpC,CAAC;;IClCD;IACA;IACA;IACA;IACA;IACe,SAAS,cAAc,CAAC,KAAK,EAAE;IAC9C,IAAI,IAAI,CAAC,cAAc,GAAG,KAAK;IAC/B,IAAI,IAAI,CAAC,aAAa,GAAG,KAAK;IAC9B,IAAI,IAAI,CAAC,YAAY,GAAG,KAAK;;IAE7B,IAAI,IAAI,CAAC,UAAU,GAAG,IAAI;IAC1B,IAAI,IAAI,CAAC,SAAS,GAAG,IAAI;;IAEzB,IAAI,IAAI,CAAC,SAAS,GAAG,IAAI;IACzB;;IAEA,MAAM,CAAC,cAAc,CAAC,cAAc,CAAC,SAAS,EAAE,QAAQ,EAAE;IAC1D,IAAI,GAAG,GAAG;IACV,QAAQ,OAAO,IAAI,CAAC,aAAa;IACjC,KAAK;IACL,IAAI,GAAG,CAAC,KAAK,EAAE;IACf,QAAQ,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;IACvB,KAAK;IACL,IAAI,YAAY,EAAE,IAAI;IACtB,CAAC,CAAC;;IAEF,cAAc,CAAC,SAAS,CAAC,eAAe,GAAG,IAAI;;IAE/C,MAAM,WAAW,GAAG,WAAW,EAAE;IACjC,cAAc,CAAC,SAAS,CAAC,gBAAgB,GAAG,SAAS,UAAU,EAAE;IACjE,IAAI,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU;IACtC,IAAI,MAAM,cAAc,GAAG,IAAI,CAAC,cAAc;IAC9C,IAAI,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa;;IAE5C,IAAI,UAAU,GAAG,UAAU,IAAI,EAAE;IACjC,IAAI,GAAG,UAAU,EAAE,MAAM,EAAE;IAC3B,QAAQ,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE;IACpE,YAAY,UAAU,CAAC,CAAC,CAAC,CAAC,aAAa,EAAE,cAAc,EAAE,UAAU,CAAC;IACpE;IACA;IACA,CAAC;;IAED,cAAc,CAAC,SAAS,CAAC,eAAe,GAAG,WAAW;IACtD,IAAI,GAAG,CAAC,IAAI,CAAC,SAAS,EAAE;IACxB,QAAQ;IACR;;IAEA,IAAI,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS;IACpC,IAAI,MAAM,cAAc,GAAG,IAAI,CAAC,cAAc;IAC9C,IAAI,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa;;IAE5C,IAAI,GAAG,SAAS,CAAC,GAAG,CAAC,aAAa,CAAC,EAAE;IACrC,QAAQ,SAAS,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,OAAO,CAAC,QAAQ,IAAI;IACzD,YAAY,QAAQ,CAAC,GAAG,GAAG,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC;IAC9D,SAAS,CAAC;IACV;IACA,IAAI,GAAG,SAAS,CAAC,GAAG,CAAC,cAAc,CAAC,EAAE;IACtC,QAAQ,SAAS,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,OAAO,CAAC,QAAQ,IAAI;IAC1D,YAAY,QAAQ,CAAC,GAAG,GAAG,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC;IAChE,SAAS,CAAC;IACV;IACA,CAAC;;IAED,cAAc,CAAC,SAAS,CAAC,UAAU,GAAG,SAAS,UAAU,EAAE;IAC3D,IAAI,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC;IACrC,IAAI,IAAI,CAAC,eAAe,EAAE;IAC1B,CAAC;;IAED,cAAc,CAAC,SAAS,CAAC,YAAY,GAAG,WAAW;IACnD,IAAI,GAAG,IAAI,CAAC,SAAS,EAAE,IAAI,IAAI,IAAI,CAAC,UAAU,EAAE,MAAM,EAAE;IACxD,QAAQ,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,UAAU;IACtC,QAAQ;IACR;IACA,IAAI,GAAG,IAAI,CAAC,UAAU,EAAE,MAAM,EAAE;IAChC,QAAQ,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,gBAAgB;IAC5C,QAAQ;IACR;IACA,IAAI,GAAG,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE;IAC7B,QAAQ,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,eAAe;IAC3C,QAAQ;IACR;IACA,IAAI,IAAI,CAAC,OAAO,GAAG,WAAW;IAC9B;IACA,cAAc,CAAC,SAAS,CAAC,OAAO,GAAG,WAAW;;IAE9C;IACA;IACA;IACA,cAAc,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,IAAI,EAAE;IAC9C,IAAI,MAAM,QAAQ,GAAG,CAAC,OAAO,IAAI,KAAK,UAAU,IAAI,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,IAAI;IACnF,IAAI,GAAG,IAAI,CAAC,aAAa,KAAK,QAAQ,EAAE;IACxC,QAAQ;IACR;IACA,IAAI,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,aAAa;IAC5C,IAAI,IAAI,CAAC,aAAa,GAAG,QAAQ;IACjC,IAAI,IAAI,CAAC,OAAO,EAAE;IAClB,CAAC;;IAED,cAAc,CAAC,SAAS,CAAC,GAAG,GAAG,WAAW;IAC1C,IAAI,OAAO,IAAI,CAAC,aAAa;IAC7B,CAAC;;IAED,cAAc,CAAC,SAAS,CAAC,aAAa,GAAG,WAAW;IACpD,IAAI,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC;IAC9B,IAAI,IAAI,CAAC,cAAc,GAAG,IAAI;IAC9B,IAAI,IAAI,CAAC,aAAa,GAAG,IAAI;IAC7B,IAAI,GAAG,IAAI,CAAC,SAAS,EAAE;IACvB,QAAQ,KAAK,MAAM,CAAC,CAAC,EAAE,cAAc,CAAC,IAAI,IAAI,CAAC,SAAS,EAAE;IAC1D,YAAY,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC;IACpC;IACA;IACA,IAAI,IAAI,CAAC,SAAS,EAAE,KAAK,EAAE;IAC3B,IAAI,IAAI,CAAC,UAAU,GAAG,IAAI;IAC1B,IAAI,IAAI,CAAC,SAAS,GAAG,IAAI;IACzB,IAAI,IAAI,CAAC,OAAO,GAAG,WAAW;IAC9B;IACA,cAAc,CAAC,SAAS,CAAC,OAAO,GAAG,WAAW;IAC9C,IAAI,aAAa,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC;IAC5C,IAAI,IAAI,CAAC,aAAa,EAAE;IACxB,IAAI,IAAI,CAAC,YAAY,GAAG,IAAI;IAC5B,IAAI,OAAO,IAAI,CAAC,MAAM;IACtB;;IAEA;IACA;IACA;IACA;IACA;IACA,cAAc,CAAC,SAAS,CAAC,SAAS,GAAG,SAAS,QAAQ,EAAE;IACxD,IAAI,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,IAAI,EAAE;IAC3C,IAAI,IAAI,IAAI,CAAC,YAAY,EAAE;IAC3B,QAAQA,cAAY,CAAC,IAAI,CAAC,yBAAyB,EAAE,uDAAuD,CAAC;IAC7G,QAAQ,OAAO,MAAM,EAAE;IACvB;IACA,IAAI,IAAI,OAAO,QAAQ,KAAK,UAAU,EAAE;IACxC,QAAQ,MAAM,IAAI,mBAAmB,CAAC,6BAA6B,CAAC;IACpE;;IAEA,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC;IAClC,IAAI,IAAI,CAAC,YAAY,EAAE;IACvB,IAAI,OAAO,MAAM;IACjB,QAAQ,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC;IAClC,QAAQ,IAAI,CAAC,YAAY,EAAE;IAC3B,KAAK;IACL,CAAC;;IAED,cAAc,CAAC,SAAS,CAAC,EAAE,GAAG,SAAS,KAAK,EAAE,QAAQ,EAAE;IACxD,IAAI,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,IAAI,IAAI,GAAG,EAAE;;IAEhD,IAAI,IAAI,cAAc,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC;IAClD,IAAI,GAAG,CAAC,cAAc,EAAE;IACxB,QAAQ,cAAc,GAAG,EAAE;IAC3B,QAAQ,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,EAAE,cAAc,CAAC;IACjD;;IAEA,IAAI,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC;IACjC,IAAI,IAAI,CAAC,YAAY,EAAE;IACvB,IAAI,OAAO,MAAM;IACjB,QAAQ,MAAM,KAAK,GAAG,cAAc,CAAC,OAAO,CAAC,QAAQ,CAAC;IACtD,QAAQ,cAAc,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;IACxC,QAAQ,GAAG,cAAc,CAAC,IAAI,KAAK,CAAC,EAAE;IACtC,YAAY,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC,KAAK,CAAC;IACzC,YAAY,cAAc,GAAG,IAAI;IACjC;IACA,QAAQ,IAAI,CAAC,YAAY,EAAE;IAC3B,KAAK;IACL,CAAC;;IAED;IACA;IACA;IACA;IACA,cAAc,CAAC,SAAS,CAAC,WAAW,GAAG,SAAS,QAAQ,EAAE;IAC1D,IAAI,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,QAAQ,CAAC;IACnD,IAAI,IAAI,KAAK,GAAG,EAAE,EAAE;IACpB,QAAQ,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;IACxC;IACA,IAAI,IAAI,CAAC,YAAY,EAAE;IACvB,CAAC;;IAED;IACA;IACA;IACA;IACA;IACA,cAAc,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,QAAQ,EAAE;IACpD,IAAI,OAAO,IAAI,iBAAiB,CAAC,IAAI,EAAE,QAAQ;IAC/C,CAAC;IACD,cAAc,CAAC,SAAS,CAAC,GAAG,GAAG,cAAc,CAAC,SAAS,CAAC,KAAK;;IAE7D,cAAc,CAAC,SAAS,CAAC,QAAQ,GAAG,WAAW;IAC/C,IAAI,GAAG,CAAC,IAAI,CAAC,SAAS,EAAE;IACxB,QAAQ,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC;IACpC;IACA,IAAI,OAAO,cAAc,EAAE,IAAI,CAAC,SAAS,EAAE,KAAK;IAChD;;ICnKA;IACA;IACA;IACA;IACA;IACA;IACA;IACO,MAAM,MAAM,GAAG,CAAC,IAAI,EAAE,UAAU,EAAE,GAAG,KAAK;IACjD,IAAI,GAAG,SAAS,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,OAAO,GAAG,CAAC,IAAI,EAAE,UAAU,CAAC;IAC9D,IAAI,GAAG,SAAS,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE;IACrC,QAAQ,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE;IAC9B,QAAQ,OAAO,CAAC,GAAG,IAAI,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,UAAU;IACnD;IACA,IAAI,GAAG,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;IAClC,QAAQ,OAAO,IAAI;IACnB;IACA,IAAI,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,UAAU;IAClC,CAAC;;IAEM,MAAM,IAAI,GAAG,SAAS,GAAG,EAAE,IAAI,EAAE;IACxC,IAAI,OAAO,GAAG,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC;IACtE;;ICzDA,MAAM,gBAAgB,GAAG;IACzB,IAAI,OAAO,EAAE,IAAI,OAAO,EAAE;IAC1B,IAAI,mBAAmB,EAAE,CAAC;IAC1B,IAAI,SAAS,EAAE,IAAI,OAAO,EAAE;IAC5B,IAAI,qBAAqB,EAAE,CAAC;IAC5B,IAAI,QAAQ,EAAE,IAAI;IAClB,IAAI,aAAa,EAAE,SAAS,aAAa,EAAE;IAE3C,QAAQ,IAAI,MAAM,QAAQ,IAAI,aAAa,EAAE;IAC7C,YAAY,GAAG,gBAAgB,CAAC,mBAAmB,GAAG,CAAC,GAAG;IAC1D,gBAAgB,IAAI,MAAM,IAAI,IAAI,QAAQ,CAAC,UAAU,EAAE;IACvD,oBAAoB,MAAM,IAAI,GAAG,gBAAgB,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;IACnE,oBAAoB,GAAG,CAAC,IAAI,EAAE;IAC9B,wBAAwB;IACxB;IACA,oBAAoB,IAAI,CAAC,KAAK,GAAG,IAAI;IACrC,oBAAoB,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;IACtD;IACA;;IAEA,YAAY,GAAG,gBAAgB,CAAC,qBAAqB,GAAG,CAAC,GAAG;IAC5D,gBAAgB,IAAI,MAAM,IAAI,IAAI,QAAQ,CAAC,YAAY,EAAE;IACzD,oBAAoB,MAAM,IAAI,GAAG,gBAAgB,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC;IACrE,oBAAoB,GAAG,CAAC,IAAI,EAAE;IAC9B,wBAAwB;IACxB;;IAEA,oBAAoB,IAAI,CAAC,KAAK,GAAG,KAAK;IACtC,oBAAoB,GAAG,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE;IACxE,wBAAwB,IAAI,CAAC,UAAU,EAAE;IACzC,wBAAwB,IAAI,CAAC,EAAE,EAAE,MAAM,EAAE;IACzC;IACA;IACA;IACA;IACA,KAAK;IACL;IACA;IACA;IACA;IACA;IACA;IACA,IAAI,KAAK,EAAE,SAAS,OAAO,EAAE,KAAK,GAAG,KAAK,EAAE;IAC5C,QAAQ,IAAI,IAAI,GAAG;IACnB,YAAY,KAAK;IACjB,YAAY,OAAO,EAAE,IAAI;IACzB,YAAY,SAAS,EAAE,IAAI;IAC3B,YAAY,UAAU,EAAE,MAAM;IAC9B,gBAAgB,gBAAgB,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC;IACxD,gBAAgB,gBAAgB,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC;IAC1D,gBAAgB,gBAAgB,CAAC,mBAAmB,EAAE;IACtD,gBAAgB,gBAAgB,CAAC,qBAAqB,EAAE;IACxD,gBAAgB,IAAI,GAAG,IAAI;IAC3B;IACA,SAAS;;IAET,QAAQ,OAAO;IACf,YAAY,UAAU,EAAE,IAAI,CAAC,UAAU;IACvC,YAAY,OAAO,EAAE,CAAC,QAAQ,KAAK;IACnC,gBAAgB,IAAI,CAAC,OAAO,GAAG,QAAQ;IACvC,gBAAgB,gBAAgB,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC;IAC3D,gBAAgB,gBAAgB,CAAC,mBAAmB,EAAE;IACtD,aAAa;IACb,YAAY,SAAS,EAAE,CAAC,QAAQ,KAAK;IACrC,gBAAgB,IAAI,CAAC,SAAS,GAAG,QAAQ;IACzC,gBAAgB,gBAAgB,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC;IAC7D,gBAAgB,gBAAgB,CAAC,qBAAqB,EAAE;IACxD;IACA,SAAS;IACT;IACA,CAAC;;IAED,gBAAgB,CAAC,QAAQ,GAAG,IAAI,gBAAgB,CAAC,gBAAgB,CAAC,aAAa,CAAC;IAChF,gBAAgB,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,EAAE;IACjD,IAAI,SAAS,EAAE,IAAI;IACnB,IAAI,OAAO,EAAE,IAAI;IACjB,CAAC,CAAC;;IC9EK,MAAM,MAAM,GAAG;IACtB,EAAE,OAAO;IACT,EAAE,UAAU;IACZ,EAAE,WAAW;IACb,EAAE,YAAY;IACd,EAAE,YAAY;IACd,EAAE,WAAW;IACb,EAAE,UAAU;IACZ,EAAE,WAAW;IACb,EAAE,SAAS;IACX,EAAE,OAAO;IACT,EAAE,SAAS;IACX,EAAE,UAAU;IACZ,EAAE,OAAO;IACT,EAAE,MAAM;IACR,EAAE,QAAQ;IACV,EAAE,OAAO;IACT,EAAE,OAAO;IACT,EAAE,SAAS;IACX,EAAE,OAAO;IACT,EAAE,QAAQ;IACV,EAAE,QAAQ;IACV,EAAE,QAAQ;IACV,EAAE,MAAM;IACR,EAAE,SAAS;IACX,EAAE,WAAW;IACb,EAAE,WAAW;IACb,EAAE,UAAU;IACZ,EAAE,WAAW;IACb,EAAE,MAAM;IACR,EAAE,YAAY;IACd,EAAE,aAAa;IACf,EAAE,cAAc;IAChB,EAAE,OAAO;IACT,EAAE,YAAY;IACd,EAAE,MAAM;IACR,EAAE,SAAS;IACX,EAAE,QAAQ;IACV,EAAE,UAAU;IACZ,EAAE,UAAU;IACZ,EAAE,QAAQ;IACV,EAAE,QAAQ;IACV,EAAE,QAAQ;IACV,EAAE,OAAO;IACT,EAAE,SAAS;IACX,EAAE,gBAAgB;IAClB,EAAE,gBAAgB;IAClB,EAAE,SAAS;IACX,EAAE,OAAO;IACT,EAAE,YAAY;IACd,EAAE,gBAAgB;IAClB,EAAE,WAAW;IACb,EAAE,OAAO;IACT,EAAE,MAAM;IACR,EAAE,SAAS;IACX,EAAE,UAAU;IACZ,EAAE,YAAY;IACd,EAAE,QAAQ;IACV,EAAE,SAAS;IACX,EAAE,SAAS;IACX,EAAE,SAAS;IACX,EAAE,YAAY;IACd,EAAE,cAAc;IAChB,EAAE;IACF,CAAC;;IC7DM,SAAS,SAAS,CAAC,OAAO,EAAE;IACnC,IAAI,IAAI,CAAC,QAAQ,GAAG,OAAO;IAC3B,IAAI,IAAI,CAAC,SAAS,GAAG,IAAI;IACzB;IACA,SAAS,CAAC,SAAS,CAAC,cAAc,GAAG,IAAI;;IAEzC,IAAI,MAAM,KAAK,IAAI,MAAM,EAAE;IAC3B,IAAI,MAAM,SAAS,GAAG,KAAK,CAAC,WAAW,EAAE;IACzC,IAAI,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,SAAS,QAAQ,EAAE;IACzD,QAAQ,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,SAAS,EAAE,QAAQ,CAAC;IAC3D,QAAQ,OAAO,IAAI;IACnB,KAAK;IACL,IAAI,SAAS,CAAC,SAAS,CAAC,WAAW,CAAC,KAAK,CAAC,GAAG,SAAS,QAAQ,EAAE;IAChE,QAAQ,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,SAAS,EAAE,SAAS,KAAK,EAAE;IAClE,YAAY,KAAK,CAAC,cAAc,EAAE;IAClC,YAAY,QAAQ,CAAC,KAAK,CAAC;IAC3B,SAAS,CAAC;IACV,QAAQ,OAAO,IAAI;IACnB,KAAK;IACL,IAAI,SAAS,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,SAAS,QAAQ,EAAE;IAC7D,QAAQ,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,SAAS,EAAE,SAAS,KAAK,EAAE;IAClE,YAAY,KAAK,CAAC,eAAe,EAAE;IACnC,YAAY,QAAQ,CAAC,KAAK,CAAC;IAC3B,SAAS,CAAC;IACV,QAAQ,OAAO,IAAI;IACnB,KAAK;IACL,IAAI,SAAS,CAAC,SAAS,CAAC,eAAe,CAAC,KAAK,CAAC,GAAG,SAAS,QAAQ,EAAE;IACpE,QAAQ,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,SAAS,EAAE,SAAS,KAAK,EAAE;IAClE,YAAY,KAAK,CAAC,eAAe,EAAE;IACnC,YAAY,KAAK,CAAC,cAAc,EAAE;IAClC,YAAY,QAAQ,CAAC,KAAK,CAAC;IAC3B,SAAS,CAAC;IACV,QAAQ,OAAO,IAAI;IACnB,KAAK;IACL;;IAEA,SAAS,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,MAAM,EAAE,IAAI,EAAE;IACjD,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,QAAQ;IAChC,IAAI,OAAO,IAAI;IACf,CAAC;;IAED,SAAS,CAAC,SAAS,CAAC,eAAe,GAAG,WAAW;IACjD,IAAI,IAAI,OAAO,GAAG,IAAI,CAAC,QAAQ;IAC/B,IAAI,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE;IACtE,QAAQ,IAAI,eAAe,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;IACjD,QAAQ,GAAG,CAAC,eAAe,CAAC,OAAO,EAAE;IACrC,YAAY,eAAe,CAAC,EAAE,EAAE,MAAM,EAAE;IACxC;IACA,QAAQ,eAAe,GAAG,IAAI;IAC9B;IACA,IAAI,OAAO,GAAG,IAAI;IAClB,IAAI,OAAO,IAAI;IACf,CAAC;;IAED,SAAS,CAAC,SAAS,CAAC,MAAM,GAAG,WAAW;IACxC,IAAI,IAAI,OAAO,GAAG,IAAI,CAAC,QAAQ;IAC/B,IAAI,OAAO,CAAC,EAAE,CAAC,eAAe,EAAE;IAChC,IAAI,OAAO,CAAC,OAAO,GAAG,IAAI;IAC1B,IAAI,OAAO,OAAO,CAAC,EAAE,EAAE,EAAE,EAAE,OAAO;IAClC,IAAI,OAAO,OAAO,CAAC,EAAE,EAAE,EAAE;IACzB,IAAI,OAAO,OAAO,CAAC,EAAE;IACrB,IAAI,OAAO,GAAG,IAAI;IAClB,IAAI,OAAO,IAAI;IACf,CAAC;;IAED,SAAS,CAAC,SAAS,CAAC,SAAS,GAAG,SAAS,MAAM,EAAE;IACjD,IAAI,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,IAAI,gBAAgB,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC;;IAE5E,IAAI,MAAM,CAAC,OAAO,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC;IAC5D,IAAI,MAAM,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC;IAClE,IAAI,OAAO,IAAI;IACf,CAAC;IACD,SAAS,CAAC,SAAS,CAAC,OAAO,GAAG,SAAS,QAAQ,EAAE;IACjD,IAAI,OAAO,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC;IAChD,CAAC;;IAED,SAAS,CAAC,SAAS,CAAC,SAAS,GAAG,SAAS,QAAQ,EAAE;IACnD,IAAI,OAAO,IAAI,CAAC,SAAS,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC;IAClD,CAAC;;IAED,SAAS,CAAC,SAAS,CAAC,WAAW,GAAG,WAAW;IAC7C,IAAI,OAAO,IAAI,CAAC,QAAQ;IACxB,CAAC;;IAED,SAAS,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,CAAC,SAAS,CAAC,WAAW;;ICjF1D,MAAM,SAAS,GAAG;IAClB,IAAI,YAAY,CAAC,KAAK,EAAE;IACxB,QAAQ,OAAO,KAAK,YAAY,cAAc,IAAI,KAAK,YAAY,iBAAiB,IAAI,KAAK,EAAE,eAAe;IAC9G,KAAK;IACL,IAAI,OAAO,CAAC,KAAK,EAAE;IACnB,QAAQ,OAAO,KAAK,EAAE;IACtB,KAAK;IACL,IAAI,mBAAmB,CAAC,KAAK,EAAE;IAC/B,QAAQ,OAAO,KAAK,YAAY,iBAAiB,IAAI,KAAK,EAAE,sBAAsB;IAClF,KAAK;IACL,IAAI,OAAO,CAAC,KAAK,EAAE;IACnB,QAAQ,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;IACnC,KAAK;IACL,IAAI,QAAQ,CAAC,KAAK,EAAE;IACpB,QAAQ,OAAO,OAAO,KAAK,KAAK,QAAQ;IACxC,KAAK;IACL,IAAI,QAAQ,CAAC,KAAK,EAAE;IACpB,QAAQ,OAAO,OAAO,KAAK,KAAK,QAAQ;IACxC,KAAK;IACL,IAAI,SAAS,CAAC,KAAK,EAAE;IACrB,QAAQ,OAAO,OAAO,KAAK,KAAK,SAAS;IACzC,KAAK;IACL,IAAI,UAAU,CAAC,KAAK,EAAE;IACtB,QAAQ,OAAO,OAAO,KAAK,KAAK,UAAU;IAC1C,KAAK;IACL,IAAI,eAAe,CAAC,KAAK,EAAE;IAC3B,QAAQ,OAAO,OAAO,KAAK,KAAK,UAAU,IAAI,KAAK,CAAC,WAAW,CAAC,IAAI,KAAK,eAAe;IACxF,KAAK;IACL,IAAI,QAAQ,CAAC,KAAK,EAAE;IACpB,QAAQ,OAAO,OAAO,KAAK,KAAK,QAAQ;IACxC,KAAK;IACL,IAAI,MAAM,CAAC,KAAK,EAAE;IAClB,QAAQ,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,CAAC,WAAW,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;IAC1H,KAAK;IACL,IAAI,SAAS,CAAC,KAAK,EAAE;IACrB,QAAQ,OAAO,KAAK,YAAY,WAAW,IAAI,KAAK,YAAY,gBAAgB,KAAK,KAAK,YAAY,IAAI;IAC1G,KAAK;IACL,IAAI,UAAU,CAAC,KAAK,EAAE;IACtB,QAAQ,OAAO,KAAK,YAAY,gBAAgB;IAChD,KAAK;IACL,IAAI,oBAAoB,CAAC,KAAK,EAAE;IAChC,QAAQ,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC;IAC/D,KAAK;IACL,IAAI,YAAY,CAAC,KAAK,EAAE;IACxB,QAAQ,OAAO,KAAK,KAAK,IAAI;IAC7B,YAAY,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;IACjC,YAAY,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC;IACpC,YAAY,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;IACnC,YAAY,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC,QAAQ,CAAC,OAAO,KAAK,CAAC;IAClE,KAAK;IACL,IAAI,WAAW,CAAC,KAAK,EAAE;IACvB,QAAQ,OAAO,KAAK,YAAY,SAAS,IAAI,KAAK,EAAE,WAAW,EAAE,cAAc;IAC/E,KAAK;IACL,IAAI,eAAe,CAAC,QAAQ,EAAE;IAC9B,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;IACtC,YAAY,QAAQ,GAAG,CAAC,QAAQ,CAAC;IACjC;;IAEA,QAAQ,MAAM,OAAO,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;IAC3E,QAAQ,OAAO,OAAO,CAAC,MAAM,KAAK,CAAC;IACnC,KAAK;IACL,IAAI,gBAAgB,CAAC,QAAQ,EAAE;IAC/B,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;IACtC,YAAY,QAAQ,GAAG,CAAC,QAAQ,CAAC;IACjC;;IAEA,QAAQ,MAAM,OAAO,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;IAC3E,QAAQ,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;IAChC,YAAY,MAAM,IAAI,mBAAmB,CAAC,CAAC,2BAA2B,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAChH;;IAEA,QAAQ,OAAO,QAAQ;IACvB,KAAK;IACL;IACA;IACA;IACA;IACA;IACA,IAAI,mBAAmB,CAAC,IAAI,EAAE;IAC9B,QAAQ,GAAG,CAAC,IAAI,EAAE;IAClB,YAAY,OAAO,KAAK;IACxB;IACA,QAAQ,OAAO,SAAS,CAAC,QAAQ,CAAC,IAAI;IACtC,eAAe,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,IAAI,SAAS,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;IAC/E,KAAK;IACL;IACA;IACA;IACA;IACA;IACA,IAAI,2BAA2B,CAAC,IAAI,EAAE;IACtC,QAAQ,GAAG,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;IAC9C,YAAY,OAAO,KAAK;IACxB;IACA,QAAQ,OAAO,6BAA6B,CAAC,IAAI,CAAC,IAAI,CAAC;IACvD,KAAK;IACL,IAAI,kBAAkB,CAAC,UAAU,EAAE;IACnC,QAAQ,IAAI,CAAC,UAAU,IAAI,OAAO,UAAU,KAAK,QAAQ,EAAE;IAC3D,YAAY,OAAO,UAAU;IAC7B;;IAEA,QAAQ,MAAM,QAAQ,GAAG,EAAE;IAC3B,QAAQ,MAAM,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,GAAG,IAAI,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;;IAE3F,QAAQ,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE;IACtC,YAAYA,cAAY,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,2BAA2B,EAAE,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpG;;IAEA,QAAQ,OAAO,UAAU;IACzB,KAAK;;IAEL,IAAI,qBAAqB,CAAC,QAAQ,EAAE;IACpC,QAAQ,IAAI,OAAO,QAAQ,KAAK,UAAU,EAAE;IAC5C,YAAY,MAAM,IAAI,mBAAmB,CAAC,mCAAmC,CAAC;IAC9E;IACA;IACA,CAAC;;ICrHc,SAAS,MAAM,CAAC,IAAI,EAAE;IACrC,IAAI,MAAM,OAAO,GAAG,QAAQ,CAAC,sBAAsB,EAAE;;IAErD,IAAI,MAAM,WAAW,GAAG,QAAQ,CAAC,aAAa,CAAC,iBAAiB,CAAC,IAAI,CAAC;IACtE,IAAI,MAAM,SAAS,GAAG,QAAQ,CAAC,aAAa,CAAC,eAAe,CAAC,IAAI,CAAC;;IAElE,IAAI,OAAO,CAAC,WAAW,CAAC,WAAW,CAAC;IACpC,IAAI,OAAO,CAAC,WAAW,CAAC,SAAS,CAAC;;IAElC,IAAI,OAAO,CAAC,kBAAkB,GAAG,OAAO,CAAC,YAAY;IACrD,IAAI,OAAO,CAAC,iBAAiB,GAAG,OAAO,CAAC,WAAW;;IAEnD,IAAI,MAAM,YAAY,GAAG,SAAS,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE;IACzD,QAAQ,GAAG,MAAM,KAAK,OAAO,EAAE;IAC/B,YAAY,MAAM,CAAC,kBAAkB,CAAC,cAAc,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAC7E,YAAY;IACZ;IACA,QAAQ,MAAM,CAAC,YAAY,CAAC,cAAc,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACnE,KAAK;;IAEL,IAAI,OAAO,CAAC,aAAa,GAAG,SAAS,KAAK,EAAE,MAAM,GAAG,IAAI,EAAE;IAC3D,QAAQ,GAAG,SAAS,CAAC,UAAU,KAAK,OAAO,EAAE;IAC7C,YAAY,SAAS,CAAC,UAAU,CAAC,kBAAkB,CAAC,KAAK,EAAE,MAAM,IAAI,SAAS,CAAC;IAC/E,YAAY;IACZ;IACA,QAAQ,SAAS,CAAC,UAAU,EAAE,YAAY,CAAC,KAAK,EAAE,MAAM,IAAI,SAAS,CAAC;IACtE,KAAK;;IAEL,IAAI,OAAO,CAAC,WAAW,GAAG,SAAS,KAAK,EAAE,MAAM,GAAG,IAAI,EAAE;IACzD,QAAQ,MAAM,MAAM,GAAG,SAAS,CAAC,UAAU;IAC3C,QAAQ,GAAG,CAAC,MAAM,EAAE;IACpB,YAAYA,cAAY,CAAC,KAAK,CAAC,QAAQ,EAAE,2BAA2B,EAAE,KAAK,CAAC;IAC5E,YAAY;IACZ;IACA,QAAQ,MAAM,GAAG,MAAM,IAAI,SAAS;IACpC,QAAQ,GAAG,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;IACrC,YAAY,MAAM,QAAQ,GAAG,QAAQ,CAAC,sBAAsB,EAAE;IAC9D,YAAY,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE;IACnE,gBAAgB,QAAQ,CAAC,WAAW,CAAC,cAAc,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IACvE;IACA,YAAY,YAAY,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC;IAClD,YAAY,OAAO,OAAO;IAC1B;IACA,QAAQ,YAAY,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC;IAC3C,KAAK;;IAEL,IAAI,OAAO,CAAC,cAAc,GAAG,WAAW;IACxC,QAAQ,MAAM,MAAM,GAAG,SAAS,CAAC,UAAU;IAC3C,QAAQ,GAAG,MAAM,KAAK,OAAO,EAAE;IAC/B,YAAY;IACZ;IACA,QAAQ,GAAG,MAAM,CAAC,UAAU,KAAK,WAAW,IAAI,MAAM,CAAC,SAAS,KAAK,SAAS,EAAE;IAChF,YAAY,MAAM,CAAC,eAAe,CAAC,WAAW,EAAE,SAAS,CAAC;IAC1D,YAAY;IACZ;;IAEA,QAAQ,IAAI,YAAY,GAAG,WAAW,CAAC,WAAW,EAAE,QAAQ;IAC5D,QAAQ,MAAM,QAAQ,GAAG,QAAQ,CAAC,sBAAsB,EAAE;IAC1D,QAAQ,MAAM,YAAY,IAAI,YAAY,KAAK,SAAS,EAAE;IAC1D,YAAY,QAAQ,GAAG,YAAY,CAAC,WAAW;IAC/C,YAAY,QAAQ,CAAC,MAAM,CAAC,YAAY,CAAC;IACzC,YAAY,YAAY,IAAI,QAAQ;IACpC;IACA,QAAQ,QAAQ,CAAC,eAAe,EAAE;IAClC;IACA,IAAI,OAAO,CAAC,MAAM,GAAG,WAAW;IAChC,QAAQ,MAAM,MAAM,GAAG,SAAS,CAAC,UAAU;IAC3C,QAAQ,GAAG,MAAM,KAAK,OAAO,EAAE;IAC/B,YAAY;IACZ;IACA,QAAQ,IAAI,YAAY,GAAG,WAAW,CAAC,WAAW,EAAE,QAAQ;IAC5D,QAAQ,MAAM,YAAY,KAAK,SAAS,EAAE;IAC1C,YAAY,QAAQ,GAAG,YAAY,CAAC,WAAW;IAC/C,YAAY,OAAO,CAAC,iBAAiB,CAAC,YAAY,CAAC;IACnD,YAAY,YAAY,GAAG,QAAQ;IACnC;IACA,KAAK;;IAEL,IAAI,OAAO,CAAC,iBAAiB,GAAG,WAAW;IAC3C,QAAQ,OAAO,CAAC,cAAc,EAAE;IAChC,QAAQ,WAAW,CAAC,MAAM,EAAE;IAC5B,QAAQ,SAAS,CAAC,MAAM,EAAE;IAC1B,KAAK;;IAEL,IAAI,OAAO,CAAC,cAAc,GAAG,SAAS,KAAK,EAAE;IAC7C,QAAQ,MAAM,MAAM,GAAG,SAAS,CAAC,UAAU;IAC3C,QAAQ,GAAG,CAAC,MAAM,EAAE;IACpB,YAAY;IACZ;IACA,QAAQ,GAAG,MAAM,CAAC,UAAU,KAAK,WAAW,IAAI,MAAM,CAAC,SAAS,KAAK,SAAS,EAAE;IAChF,YAAY,MAAM,CAAC,eAAe,CAAC,WAAW,EAAE,KAAK,EAAE,SAAS,CAAC;IACjE,YAAY;IACZ;IACA,QAAQ,OAAO,CAAC,cAAc,EAAE;IAChC,QAAQ,MAAM,CAAC,YAAY,CAAC,KAAK,EAAE,SAAS,CAAC;IAC7C,KAAK;;IAEL,IAAI,OAAO,CAAC,YAAY,GAAG,SAAS,KAAK,EAAE,MAAM,GAAG,IAAI,EAAE;IAC1D,QAAQ,OAAO,CAAC,WAAW,CAAC,KAAK,EAAE,MAAM,CAAC;IAC1C,KAAK;;IAEL,IAAI,OAAO,CAAC,KAAK,GAAG,WAAW;IAC/B,QAAQ,OAAO,CAAC,MAAM,EAAE;IACxB,KAAK;;IAEL,IAAI,OAAO,CAAC,UAAU,GAAG,WAAW;IACpC,QAAQ,OAAO,SAAS;IACxB,KAAK;IACL,IAAI,OAAO,CAAC,YAAY,GAAG,WAAW;IACtC,QAAQ,OAAO,WAAW;IAC1B,KAAK;;IAEL,IAAI,OAAO,OAAO;IAClB;;ICrHO,MAAM,kBAAkB,GAAG,CAAC,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,WAAW,EAAE,UAAU,EAAE,cAAc,EAAE,QAAQ,EAAE,iBAAiB,EAAE,YAAY,EAAE,WAAW,EAAE,WAAW,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,gBAAgB,EAAE,YAAY,EAAE,QAAQ,EAAE,WAAW,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,aAAa,CAAC;;ICKja;IACA;IACA;IACA;IACA;IACA;IACO,SAAS,UAAU,CAAC,KAAK,EAAE;IAClC,IAAI,OAAO,IAAI,cAAc,CAAC,KAAK,CAAC;IACpC;;IAEA;IACA;IACA;IACA;IACA;IACA,UAAU,CAAC,OAAO,GAAG,SAAS,EAAE,EAAE;IAClC,IAAI,MAAM,IAAI,GAAG,aAAa,CAAC,iBAAiB,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IAC9D,IAAI,GAAG,CAAC,IAAI,EAAE;IACd,QAAQ,MAAM,IAAI,mBAAmB,CAAC,mDAAmD,GAAG,EAAE,CAAC;IAC/F;IACA,IAAI,OAAO,IAAI;IACf,CAAC;;IAED;IACA;IACA;IACA;IACA,UAAU,CAAC,OAAO,GAAG,SAAS,UAAU,EAAE;IAC1C,IAAI,UAAU,CAAC,OAAO,EAAE;IACxB,CAAC;;IAED;IACA;IACA;IACA;IACA;IACA,UAAU,CAAC,WAAW,GAAG,SAAS,MAAM,GAAG,KAAK,EAAE,OAAO,GAAG,EAAE,EAAE;IAChE,IAAI,GAAG,CAAC,MAAM,EAAE;IAChB,QAAQ;IACR;IACA,IAAI,MAAM,EAAE,QAAQ,GAAG,KAAK,EAAE,SAAS,GAAG,GAAG,EAAE,GAAG,OAAO;;IAEzD,IAAI,MAAM,CAAC,gBAAgB,CAAC,cAAc,EAAE,MAAM;IAClD,QAAQ,aAAa,CAAC,OAAO,EAAE;IAC/B,KAAK,CAAC;;IAEN,IAAI,WAAW,CAAC,MAAM,aAAa,CAAC,gBAAgB,CAAC,SAAS,CAAC,EAAE,QAAQ,CAAC;IAC1E,CAAC;;IChDD;IACA;IACA;IACA;IACA;IACA,SAAS,kBAAkB,CAAC,OAAO,EAAE,IAAI,EAAE;IAC3C,IAAI,IAAI,IAAI,SAAS,IAAI,IAAI,EAAE;IAC/B,QAAQ,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC;IACrC,QAAQ,GAAG,SAAS,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE;IAC1C,YAAY,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC;IAC5D,YAAY,KAAK,CAAC,SAAS,CAAC,QAAQ,IAAI,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;IACtF,YAAY;IACZ;IACA,QAAQ,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,EAAE,KAAK;IACjD;IACA;;IAEA;IACA;IACA;IACA;IACA;IACA,SAAS,kBAAkB,CAAC,OAAO,EAAE,IAAI,EAAE;IAC3C,IAAI,IAAI,IAAI,SAAS,IAAI,IAAI,EAAE;IAC/B,QAAQ,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC;IACrC,QAAQ,GAAG,SAAS,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE;IAC1C,YAAY,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,KAAK,CAAC,GAAG,EAAE;IAClD,YAAY,KAAK,CAAC,SAAS,CAAC,QAAQ,IAAI;IACxC,gBAAgB,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,QAAQ;IACnD,aAAa,CAAC;IACd,YAAY;IACZ;IACA,QAAQ,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,KAAK;IACxC;IACA;;IAEA;IACA;IACA;IACA;IACA;IACA;IACA,SAAS,oBAAoB,CAAC,OAAO,EAAE,aAAa,EAAE,KAAK,EAAE;IAC7D,IAAI,MAAM,YAAY,GAAG,SAAS,CAAC,YAAY,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,EAAE,GAAG,KAAK;IAC5E,IAAI,GAAG,SAAS,CAAC,SAAS,CAAC,YAAY,CAAC,EAAE;IAC1C,QAAQ,OAAO,CAAC,aAAa,CAAC,GAAG,YAAY;IAC7C;IACA,SAAS;IACT,QAAQ,OAAO,CAAC,aAAa,CAAC,GAAG,YAAY,KAAK,OAAO,CAAC,KAAK;IAC/D;IACA,IAAI,GAAG,SAAS,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE;IACtC,QAAQ,GAAG,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE;IAChD,YAAY,OAAO,CAAC,gBAAgB,CAAC,OAAO,EAAE,MAAM;IACpD,gBAAgB,GAAG,SAAS,CAAC,SAAS,CAAC,YAAY,CAAC,EAAE;IACtD,oBAAoB,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;IACrD,oBAAoB;IACpB;IACA,gBAAgB,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC;IACxC,aAAa,CAAC;IACd;IACA,QAAQ,KAAK,CAAC,SAAS,CAAC,QAAQ,IAAI;IACpC,YAAY,GAAG,SAAS,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE;IAC9C,gBAAgB,OAAO,CAAC,aAAa,CAAC,GAAG,QAAQ;IACjD,gBAAgB;IAChB;IACA,YAAY,OAAO,CAAC,aAAa,CAAC,GAAG,QAAQ,KAAK,OAAO,CAAC,KAAK;IAC/D,SAAS,CAAC;IACV;IACA;;;IAGA;IACA;IACA;IACA;IACA;IACA;IACA,SAAS,2BAA2B,CAAC,OAAO,EAAE,aAAa,EAAE,KAAK,EAAE;IACpE,IAAI,MAAM,UAAU,GAAG,CAAC,QAAQ,KAAK;IACrC,QAAQ,GAAG,aAAa,KAAK,OAAO,EAAE;IACtC,YAAY,OAAO,CAAC,KAAK,GAAG,QAAQ;IACpC,YAAY;IACZ;IACA,QAAQ,OAAO,CAAC,YAAY,CAAC,aAAa,EAAE,QAAQ,CAAC;IACrD,KAAK;IACL,IAAI,UAAU,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;IAC3B,IAAI,KAAK,CAAC,SAAS,CAAC,UAAU,CAAC;;IAE/B,IAAI,GAAG,aAAa,KAAK,OAAO,EAAE;IAClC,QAAQ,OAAO,CAAC,gBAAgB,CAAC,OAAO,EAAE,MAAM,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACzE;IACA;;IAEA;IACA;IACA;IACA;IACA;IACe,SAAS,iBAAiB,CAAC,OAAO,EAAE,UAAU,EAAE;;IAE/D,IAAI,SAAS,CAAC,kBAAkB,CAAC,UAAU,CAAC;;IAE5C,IAAI,GAAG,CAAC,SAAS,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE;IACxC,QAAQ,MAAM,IAAI,mBAAmB,CAAC,8BAA8B,CAAC;IACrE;;IAEA,IAAI,IAAI,IAAI,GAAG,IAAI,UAAU,EAAE;IAC/B,QAAQ,MAAM,aAAa,GAAG,GAAG,CAAC,WAAW,EAAE;IAC/C,QAAQ,IAAI,KAAK,GAAG,UAAU,CAAC,aAAa,CAAC;IAC7C,QAAQ,GAAG,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,SAAS,CAAC,UAAU,CAAC,KAAK,CAAC,yBAAyB,CAAC,EAAE;IAC/F,YAAY,KAAK,GAAG,KAAK,CAAC,yBAAyB,EAAE;IACrD,YAAY,GAAG,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;IACzC,gBAAgB,MAAM,WAAW,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,IAAI,SAAS,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;IACtF,gBAAgB,KAAK,GAAG,UAAU,CAAC,QAAQ,CAAC,MAAM;IAClD,oBAAoB,OAAO,KAAK,CAAC,GAAG,CAAC,IAAI,IAAI,SAAS,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG;IAC/G,iBAAiB,EAAE,WAAW,CAAC;IAC/B;IACA;IACA,QAAQ,GAAG,kBAAkB,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE;IACvD,YAAY,oBAAoB,CAAC,OAAO,EAAE,aAAa,EAAE,KAAK,CAAC;IAC/D,YAAY;IACZ;IACA,QAAQ,GAAG,SAAS,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE;IAC1C,YAAY,2BAA2B,CAAC,OAAO,EAAE,aAAa,EAAE,KAAK,CAAC;IACtE,YAAY;IACZ;IACA,QAAQ,GAAG,aAAa,KAAK,OAAO,IAAI,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;IACjE,YAAY,kBAAkB,CAAC,OAAO,EAAE,KAAK,CAAC;IAC9C,YAAY;IACZ;IACA,QAAQ,GAAG,aAAa,KAAK,OAAO,IAAI,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;IACjE,YAAY,kBAAkB,CAAC,OAAO,EAAE,KAAK,CAAC;IAC9C,YAAY;IACZ;IACA,QAAQ,OAAO,CAAC,YAAY,CAAC,aAAa,EAAE,KAAK,CAAC;;IAElD;IACA,IAAI,OAAO,OAAO;IAClB;;IC3IA,MAAM,UAAU,GAAG,IAAI,GAAG,EAAE;IAC5B,IAAI,cAAc,GAAG,IAAI;;AAEb,UAAC,cAAc,GAAG;IAC9B,IAAI,cAAc,GAAG;IACrB,QAAQ,GAAG,CAAC,cAAc,EAAE;IAC5B,YAAY,cAAc,GAAG,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC;IACxD;IACA,QAAQ,OAAO,cAAc,CAAC,SAAS,EAAE;IACzC,KAAK;IACL;IACA;IACA;IACA;IACA;IACA;IACA,IAAI,oBAAoB,CAAC,MAAM,EAAE,UAAU,EAAE;IAC7C,QAAQ,MAAM,IAAI,GAAG,cAAc,CAAC,cAAc,EAAE;IACpD,QAAQ,UAAU,CAAC,SAAS,CAAC,KAAK,IAAI,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IACrE,QAAQ,IAAI,CAAC,SAAS,GAAG,UAAU,CAAC,GAAG,EAAE;IACzC,QAAQ,MAAM,IAAI,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC;IAC1C,QAAQ,OAAO,IAAI;IACnB,KAAK;;IAEL;IACA;IACA;IACA;IACA;IACA;IACA,IAAI,oBAAoB,CAAC,MAAM,EAAE,KAAK,EAAE;IACxC,QAAQ,IAAI,IAAI,GAAG,cAAc,CAAC,cAAc,EAAE;IAClD,QAAQ,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC;IACtC,QAAQ,MAAM,IAAI,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC;IAC1C,QAAQ,OAAO,IAAI;IACnB,KAAK;IACL;IACA;IACA;IACA;IACA;IACA,IAAI,aAAa,CAAC,IAAI,GAAG;IACzB,QAAQ,GAAG,IAAI,EAAE;IACjB,YAAY,GAAG,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;IACrC,gBAAgB,OAAO,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE;IACvD;IACA,YAAY,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC;IACrD,YAAY,UAAU,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC;IACtC,YAAY,OAAO,IAAI,CAAC,SAAS,EAAE;IACnC;IACA,QAAQ,OAAO,IAAI,MAAM,CAAC,UAAU,CAAC;IACrC,KAAK;IACL;IACA;IACA;IACA;IACA;IACA,IAAI,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE;IACtC,QAAQ,GAAG,QAAQ,KAAK,IAAI,EAAE;IAC9B,QAAQ,MAAM,aAAa,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,QAAQ,GAAG,CAAC,QAAQ,CAAC;;IAE7E,QAAQ,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,aAAa,CAAC,MAAM,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE;IACvE,YAAY,IAAI,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;IACvD,YAAY,IAAI,KAAK,KAAK,IAAI,EAAE;IAChC,YAAY,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC;IACrC;IACA,KAAK;IACL,IAAI,QAAQ,CAAC,KAAK,EAAE;IACpB,QAAQ,GAAG,KAAK,KAAK,IAAI,EAAE;IAC3B,YAAY,OAAO,IAAI;IACvB;IACA,QAAQ,GAAG,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,SAAS,CAAC,UAAU,CAAC,KAAK,CAAC,yBAAyB,CAAC,EAAE;IAC/F,YAAY,KAAK,GAAG,KAAK,CAAC,yBAAyB,EAAE;IACrD;IACA,QAAQ,GAAG,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;IACtC,YAAY,OAAO,cAAc,CAAC,oBAAoB,CAAC,IAAI,EAAE,KAAK,CAAC;IACnE;IACA,QAAQ,IAAI,SAAS,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE;IAC3C,YAAY,OAAO,cAAc,CAAC,oBAAoB,CAAC,IAAI,EAAE,KAAK,CAAC;IACnE;IACA,QAAQ,GAAG,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;IACrC,YAAY,MAAM,QAAQ,GAAG,QAAQ,CAAC,sBAAsB,EAAE;IAC9D,YAAY,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE;IACnE,gBAAgB,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7D;IACA,YAAY,OAAO,QAAQ;IAC3B;IACA,QAAQ,GAAG,SAAS,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE;IACxC,YAAY,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;IACzC;IACA,QAAQ,IAAI,SAAS,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE;IACxC,YAAY,OAAO,KAAK;IACxB;IACA,QAAQ,GAAG,SAAS,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE;IACzC,YAAY,OAAO,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,MAAM,IAAI,IAAI,IAAI;IAC7D;IACA,QAAQ,OAAO,cAAc,CAAC,oBAAoB,CAAC,IAAI,EAAE,KAAK,CAAC;IAC/D,KAAK;IACL;IACA;IACA;IACA;IACA;IACA,IAAI,iBAAiB,CAAC,OAAO,EAAE,UAAU,EAAE;IAC3C,QAAQ,GAAG,SAAS,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE;IAC1C,QAAQ,IAAI,UAAU,EAAE;IACxB,YAAY,iBAAiB,CAAC,OAAO,EAAE,UAAU,CAAC;IAClD;IACA,KAAK;IACL;IACA;IACA;IACA;IACA;IACA;IACA;IACA,IAAI,KAAK,CAAC,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE;IAC9C,QAAQ,OAAO,OAAO;IACtB;IACA;;ICzHA,MAAM,CAAC,cAAc,CAAC,WAAW,CAAC,SAAS,EAAE,IAAI,EAAE;IACnD,IAAI,YAAY,EAAE,IAAI;IACtB,IAAI,GAAG,GAAG;IACV,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE;IACrB,YAAY,OAAO,IAAI,CAAC,GAAG;IAC3B;;IAEA,QAAQ,IAAI,CAAC,GAAG,GAAG,IAAI,SAAS,CAAC,IAAI,CAAC;IACtC,QAAQ,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG;IAC9B,QAAQ,OAAO,IAAI,CAAC,GAAG;IACvB;IACA,CAAC,CAAC;;ICIF;IACA;IACA;IACA;IACA;IACA;IACe,SAAS,kBAAkB,CAAC,IAAI,EAAE,aAAa,EAAE;IAChE,IAAI,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE;;IAEvC,IAAI,OAAO,SAAS,UAAU,EAAE,QAAQ,GAAG,IAAI,EAAE;IACjD,QAAQ,IAAI;IACZ,YAAY,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE;IAC9C,gBAAgB,MAAM,YAAY,GAAG,QAAQ;IAC7C,gBAAgB,QAAQ,GAAG,UAAU;IACrC,gBAAgB,UAAU,GAAG,YAAY;IACzC;IACA,YAAY,MAAM,OAAO,GAAG,cAAc,CAAC,aAAa,CAAC,QAAQ,CAAC;IAClE,YAAY,MAAM,YAAY,GAAG,CAAC,OAAO,aAAa,KAAK,UAAU,IAAI,aAAa,CAAC,OAAO,CAAC,GAAG,OAAO;;IAEzG,YAAY,cAAc,CAAC,iBAAiB,CAAC,YAAY,EAAE,UAAU,CAAC;IACtE,YAAY,cAAc,CAAC,eAAe,CAAC,QAAQ,EAAE,YAAY,CAAC;;IAElE,YAAY,OAAO,cAAc,CAAC,KAAK,CAAC,YAAY,EAAE,UAAU,EAAE,aAAa,CAAC;IAChF,SAAS,CAAC,OAAO,KAAK,EAAE;IACxB,YAAYA,cAAY,CAAC,KAAK,CAAC,iBAAiB,EAAE,CAAC,eAAe,EAAE,QAAQ,CAAC,CAAC,EAAE,KAAK,CAAC;IACtF;IACA,KAAK;IACL;;IC1Ce,MAAM,aAAa,SAAS,KAAK,CAAC;IACjD,IAAI,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE;IACjC,QAAQ,KAAK,CAAC,CAAC,EAAE,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;IACvD;IACA;;ICFA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;AACY,UAAC,QAAQ,GAAG;IACxB,IAAI,MAAM,EAAE,CAAC,IAAI,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAC,KAAK,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;IACxF,IAAI,MAAM,EAAE,CAAC,IAAI,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAC,KAAK,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;IACxF,IAAI,OAAO,EAAE,CAAC,IAAI,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,CAAC,KAAK,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;IAC3F,IAAI,UAAU,EAAE,CAAC,IAAI,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,YAAY,EAAE,QAAQ,EAAE,CAAC,CAAC,KAAK,SAAS,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC;IACpG,IAAI,OAAO,EAAE,CAAC,IAAI,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,CAAC,KAAK,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;IAC3F,IAAI,QAAQ,EAAE,CAAC,IAAI,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAC,CAAC,KAAK,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;IAC9F,IAAI,MAAM,EAAE,CAAC,IAAI,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAC,MAAM,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC1F,IAAI,aAAa,EAAE,CAAC,IAAI,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAC,MAAM,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC;IAC/G,IAAI,QAAQ,EAAE,CAAC,IAAI,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAC,CAAC,KAAK,SAAS,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,CAAC;IACpG,IAAI,UAAU,EAAE,CAAC,IAAI,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,YAAY,EAAE,QAAQ,EAAE,CAAC,CAAC,KAAK,SAAS,CAAC,kBAAkB,CAAC,CAAC,CAAC,EAAE,CAAC;;IAE1G;IACA,IAAI,QAAQ,EAAE,CAAC,OAAO,MAAM,EAAE,GAAG,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;IAE3D;IACA,IAAI,KAAK,EAAE,CAAC,IAAI,EAAE,GAAG,QAAQ,MAAM;IACnC,QAAQ,IAAI;IACZ,QAAQ,IAAI,EAAE,OAAO;IACrB,QAAQ,KAAK,EAAE,QAAQ;IACvB,QAAQ,QAAQ,EAAE,CAAC,CAAC,KAAK,QAAQ,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC/D,KAAK;IACL;;IAEA;IACA;IACA;IACA;IACA;IACA;IACA,MAAM,YAAY,GAAG,CAAC,IAAI,EAAE,SAAS,EAAE,MAAM,GAAG,UAAU,KAAK;IAC/D,IAAI,IAAI,CAAC,SAAS,EAAE;;IAEpB,IAAI,MAAM,MAAM,GAAG,EAAE;;IAErB;IACA,IAAI,MAAM,aAAa,GAAG,SAAS,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,MAAM;IACvE,IAAI,IAAI,IAAI,CAAC,MAAM,GAAG,aAAa,EAAE;IACrC,QAAQ,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,oBAAoB,EAAE,aAAa,CAAC,gBAAgB,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;IAClG;;IAEA;IACA,IAAI,SAAS,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,KAAK,KAAK;IACzC,QAAQ,MAAM,QAAQ,GAAG,KAAK,GAAG,CAAC;IAClC,QAAQ,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;;IAEjC,QAAQ,IAAI,KAAK,KAAK,SAAS,EAAE;IACjC,YAAY,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE;IAClC,gBAAgB,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,6BAA6B,EAAE,MAAM,CAAC,IAAI,CAAC,cAAc,EAAE,QAAQ,CAAC,CAAC,CAAC;IAC5G;IACA,YAAY;IACZ;;IAEA,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;IACrC,YAAY,MAAM,WAAW,GAAG,KAAK,EAAE,WAAW,EAAE,IAAI,IAAI,OAAO,KAAK;IACxE,YAAY,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,oBAAoB,EAAE,MAAM,CAAC,IAAI,CAAC,cAAc,EAAE,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC;IAC5I;IACA,KAAK,CAAC;;IAEN,IAAI,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;IAC3B,QAAQ,MAAM,IAAI,aAAa,CAAC,CAAC,0BAA0B,CAAC,EAAE,MAAM,CAAC;IACrE;IACA,CAAC;;IAED;IACA;IACA;IACA;IACA;IACA;AACY,UAAC,cAAc,GAAG,CAAC,EAAE,EAAE,SAAS,EAAE,MAAM,GAAG,UAAU,KAAK;IACtE,IAAI,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE;IACtC,QAAQ,MAAM,IAAI,mBAAmB,CAAC,6CAA6C,CAAC;IACpF;IACA,IAAI,OAAO,SAAS,GAAG,IAAI,EAAE;IAC7B,QAAQ,YAAY,CAAC,IAAI,EAAE,SAAS,EAAE,EAAE,CAAC,IAAI,IAAI,MAAM,CAAC;IACxD,QAAQ,OAAO,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC;IACnC,KAAK;IACL;;IC9FA,QAAQ,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,GAAG,IAAI,EAAE;IAC5C,IAAI,OAAO,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC;IACrC,CAAC;;IAED,QAAQ,CAAC,SAAS,CAAC,aAAa,GAAG,SAAS,QAAQ,EAAE;IACtD,IAAI,OAAO,CAAC,GAAG,IAAI,MAAM;IACzB,QAAQ,IAAI;IACZ,YAAY,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC;IACzC,SAAS,CAAC,MAAM,CAAC,EAAE;IACnB,YAAY,OAAO,QAAQ,CAAC,CAAC,CAAC;IAC9B;IACA,KAAK;IACL,CAAC;;IAED,MAAM,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,IAAI,EAAE;IACtC,IAAI,MAAM,KAAK,GAAG,IAAI;;IAEtB,IAAI,OAAO,UAAU,CAAC,QAAQ,CAAC,MAAM;IACrC,QAAQ,OAAO,KAAK,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK;IAC5D,YAAY,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC;IAClC,YAAY,GAAG,SAAS,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE;IAC7C,gBAAgB,OAAO,IAAI,CAAC,GAAG,EAAE;IACjC;IACA,YAAY,OAAO,IAAI;IACvB,SAAS,CAAC;IACV,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC3B,CAAC;;IAED,MAAM,CAAC,SAAS,CAAC,yBAAyB,GAAG,WAAW;IACxD,IAAI,GAAG,CAAC,SAAS,CAAC,2BAA2B,CAAC,IAAI,CAAC,EAAE;IACrD,QAAQ,OAAO,IAAI,CAAC,OAAO,EAAE;IAC7B;IACA,IAAI,OAAO,IAAI,CAAC,KAAK,CAAC,gCAAgC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK;IACvF,QAAQ,GAAG,CAAC,SAAS,CAAC,2BAA2B,CAAC,KAAK,CAAC,EAAE;IAC1D,YAAY,OAAO,KAAK;IACxB;IACA,QAAQ,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,+BAA+B,CAAC;IACpE,QAAQ,OAAO,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;IACrC,KAAK,CAAC;IACN;;ICxCA,MAAM,OAAO,GAAG,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,CAAC;;IAEhF;IACA;IACA;IACA;IACA;IACA,UAAU,CAAC,KAAK,GAAG,SAAS,MAAM,EAAE;IACpC,IAAI,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;IAC/B,QAAQ,MAAM,IAAI,mBAAmB,CAAC,4CAA4C,CAAC;IACnF;IACA,IAAI,MAAM,QAAQ,GAAG,UAAU,CAAC,MAAM,CAAC;;IAEvC,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,KAAK;IAChC,QAAQ,QAAQ,CAAC,MAAM,CAAC,GAAG,SAAS,GAAG,MAAM,EAAE;IAC/C,YAAY,MAAM,MAAM,GAAG,QAAQ,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,GAAG,MAAM,CAAC;IAC5D,YAAY,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;IACtE,YAAY,OAAO,MAAM;IACzB,SAAS;IACT,KAAK,CAAC;;IAEN,IAAI,QAAQ,CAAC,KAAK,GAAG,WAAW;IAChC,QAAQ,QAAQ,CAAC,GAAG,EAAE,CAAC,MAAM,GAAG,CAAC;IACjC,QAAQ,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;IAC7C,QAAQ,OAAO,IAAI;IACnB,KAAK;;IAEL,IAAI,QAAQ,CAAC,KAAK,GAAG,SAAS,MAAM,EAAE;IACtC,QAAQ,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,QAAQ,CAAC,GAAG,EAAE,EAAE,GAAG,MAAM,CAAC,CAAC;IACpD,KAAK;;IAEL,IAAI,QAAQ,CAAC,iBAAiB,GAAG,SAAS,SAAS,EAAE,QAAQ,EAAE;IAC/D,QAAQ,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,QAAQ,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,QAAQ,CAAC,EAAE,CAAC;IAC7F,KAAK;IACL,IAAI,QAAQ,CAAC,MAAM,GAAG,SAAS,KAAK,EAAE;IACtC,QAAQ,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;IACvD,QAAQ,GAAG,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE;IACjC,YAAY,OAAO,EAAE;IACrB;IACA,QAAQ,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;IACjF,QAAQ,OAAO,OAAO;IACtB,KAAK;;IAEL,IAAI,QAAQ,CAAC,IAAI,GAAG,SAAS,MAAM,EAAE,MAAM,EAAE;IAC7C,QAAQ,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,EAAE;IACpC,QAAQ,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM;IACnC,QAAQ,GAAG,MAAM,GAAG,MAAM,IAAI,MAAM,GAAG,MAAM,EAAE;IAC/C,YAAY,OAAO,KAAK;IACxB;IACA,QAAQ,GAAG,MAAM,GAAG,MAAM,EAAE;IAC5B,YAAY,MAAM,IAAI,GAAG,MAAM;IAC/B,YAAY,MAAM,GAAG,MAAM;IAC3B,YAAY,MAAM,GAAG,IAAI;IACzB;IACA,QAAQ,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC;IACtC,QAAQ,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM;;IAErC,QAAQ,KAAK,CAAC,MAAM,CAAC,GAAG,QAAQ;IAChC,QAAQ,KAAK,CAAC,MAAM,CAAC,GAAG,QAAQ;IAChC,QAAQ,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC,EAAE,CAAC;IAClG,QAAQ,OAAO,IAAI;IACnB,KAAK;;IAEL,IAAI,QAAQ,CAAC,MAAM,GAAG,WAAW;IACjC,QAAQ,OAAO,QAAQ,CAAC,GAAG,EAAE,CAAC,MAAM;IACpC;;IAEA,IAAI,MAAM,eAAe,GAAG,CAAC,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,QAAQ,CAAC;IACvG,IAAI,eAAe,CAAC,OAAO,CAAC,CAAC,MAAM,KAAK;IACxC,QAAQ,QAAQ,CAAC,MAAM,CAAC,GAAG,SAAS,GAAG,IAAI,EAAE;IAC7C,YAAY,OAAO,QAAQ,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,GAAG,IAAI,CAAC;IAClD,SAAS;IACT,KAAK;;IAEL,IAAI,OAAO,QAAQ;IACnB,CAAC;;IC5ED;IACA;IACA;IACA;IACA;IACA,UAAU,CAAC,KAAK,GAAG,SAAS,QAAQ,EAAE;IACtC,IAAI,MAAM,SAAS,GAAG,UAAU,CAAC,CAAC,CAAC;IACnC,IAAI,MAAM,KAAK,GAAG,WAAW;IAC7B,QAAQ,GAAG,SAAS,CAAC,eAAe,CAAC,QAAQ,CAAC,EAAE;IAChD,YAAY,OAAO,CAAC,QAAQ,CAAC,GAAG,SAAS,CAAC,EAAE,IAAI,CAAC,MAAM;IACvD,gBAAgB,SAAS,CAAC,OAAO,EAAE;IACnC,aAAa,CAAC,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE,MAAM,KAAK,CAAC,EAAE,CAAC;IAC/C;IACA,QAAQ,QAAQ,CAAC,GAAG,SAAS,CAAC;IAC9B,QAAQ,SAAS,CAAC,OAAO,EAAE;IAC3B,KAAK;IACL,IAAI,KAAK,CAAC,SAAS,GAAG,SAAS;IAC/B,IAAI,OAAO,KAAK;IAChB,CAAC;;IClBD;IACA;IACA;IACA;IACA;IACA,UAAU,CAAC,IAAI,GAAG,SAAS,KAAK,EAAE;IAClC,IAAI,MAAM,IAAI,GAAG,EAAE;IACnB,IAAI,IAAI,MAAM,GAAG,IAAI,KAAK,EAAE;IAC5B,QAAQ,MAAM,SAAS,GAAG,KAAK,CAAC,GAAG,CAAC;IACpC,QAAQ,GAAG,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE;IACxC,YAAY,IAAI,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC;IAClD,YAAY;IACZ;IACA,aAAa,GAAG,SAAS,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE;IAC9C,YAAY,IAAI,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC,SAAS,CAAC;IACnD,YAAY;IACZ;IACA,QAAQ,IAAI,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC,SAAS,CAAC;IACzC;;IAEA,IAAI,MAAM,IAAI,GAAG,WAAW;IAC5B,QAAQ,MAAM,MAAM,GAAG,EAAE;IACzB,QAAQ,IAAI,MAAM,GAAG,IAAI,IAAI,EAAE;IAC/B,YAAY,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC;IACtC,YAAY,GAAG,SAAS,CAAC,YAAY,CAAC,QAAQ,CAAC,EAAE;IACjD,gBAAgB,MAAM,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,GAAG,EAAE;IAC5C,aAAa,MAAM,GAAG,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;IACnD,gBAAgB,MAAM,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,MAAM;IAC7C,aAAa,MAAM;IACnB,gBAAgB,MAAM,CAAC,GAAG,CAAC,GAAG,QAAQ;IACtC;IACA;IACA,QAAQ,OAAO,MAAM;IACrB,KAAK;IACL,IAAI,MAAM,MAAM,GAAG,WAAW;;IAE9B,KAAK;;IAEL,IAAI,OAAO,IAAI,KAAK,CAAC,IAAI,EAAE;IAC3B,QAAQ,GAAG,CAAC,MAAM,EAAE,QAAQ,EAAE;IAC9B,YAAY,GAAG,QAAQ,KAAK,aAAa,EAAE;IAC3C,gBAAgB,OAAO,IAAI;IAC3B;IACA,YAAY,GAAG,QAAQ,KAAK,QAAQ,EAAE;IACtC,gBAAgB,OAAO,IAAI,EAAE;IAC7B;IACA,YAAY,GAAG,QAAQ,KAAK,QAAQ,EAAE;IACtC,gBAAgB,OAAO,MAAM;IAC7B;IACA,YAAY,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,SAAS,EAAE;IAC/C,gBAAgB,OAAO,MAAM,CAAC,QAAQ,CAAC;IACvC;IACA,YAAY,OAAO,SAAS;IAC5B,SAAS;IACT,QAAQ,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE;IACpC,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,SAAS,EAAE;IAC3C,gBAAgB,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC;IAC1C;IACA;IACA,KAAK;IACL,CAAC;;IAED;IACA;IACA;IACA;IACA;IACA,UAAU,CAAC,KAAK,GAAG,SAAS,IAAI,EAAE;IAClC,IAAI,GAAG,SAAS,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE;IACrC,QAAQ,OAAO,IAAI,CAAC,GAAG,EAAE;IACzB;IACA,IAAI,GAAG,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;IAChC,QAAQ,OAAO,IAAI,CAAC,MAAM;IAC1B;IACA,IAAI,GAAG,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;IAChC,QAAQ,MAAM,MAAM,GAAG,EAAE;IACzB,QAAQ,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE;IAC9D,YAAY,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC;IAChC,YAAY,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC/C;IACA,QAAQ,OAAO,MAAM;IACrB;IACA,IAAI,OAAO,IAAI;IACf,CAAC;;;IAGD,UAAU,CAAC,MAAM,GAAG,SAAS,OAAO,EAAE,IAAI,EAAE;IAC5C,IAAI,IAAI,MAAM,GAAG,IAAI,IAAI,EAAE;IAC3B,QAAQ,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC;IACvC,QAAQ,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC;;IAElC,QAAQ,GAAG,SAAS,CAAC,YAAY,CAAC,UAAU,CAAC,EAAE;IAC/C,YAAY,GAAG,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;IAC5C,gBAAgB,UAAU,CAAC,MAAM,CAAC,UAAU,EAAE,QAAQ,CAAC;IACvD,gBAAgB;IAChB;IACA,YAAY,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC;IACpC,YAAY;IACZ;IACA,QAAQ,GAAG,SAAS,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE;IAC1C,YAAY,UAAU,CAAC,MAAM,CAAC,UAAU,EAAE,QAAQ,CAAC;IACnD,YAAY;IACZ;IACA,QAAQ,OAAO,CAAC,GAAG,CAAC,GAAG,QAAQ;IAC/B;IACA,CAAC;;IAED,UAAU,CAAC,MAAM,GAAG,UAAU,CAAC,IAAI;IACnC,UAAU,CAAC,IAAI,GAAG,UAAU,CAAC,IAAI;;IC1GjC;IACA;IACA;IACA;IACA;IACA;IACA,UAAU,CAAC,QAAQ,GAAG,SAAS,QAAQ,EAAE,YAAY,GAAG,EAAE,EAAE;IAC5D,IAAI,MAAM,YAAY,GAAG,QAAQ,EAAE;IACnC,IAAI,MAAM,UAAU,GAAG,IAAI,cAAc,CAAC,YAAY,CAAC;IACvD,IAAI,MAAM,YAAY,GAAG,MAAM,UAAU,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;;IAEzD,IAAI,GAAG,SAAS,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE;IAC3C,QAAQ,GAAG,CAAC,SAAS,CAAC,YAAY,CAAC,YAAY,CAAC,SAAS,CAAC,EAAE;IAC5D,YAAY,MAAM,IAAI,mBAAmB,CAAC,iEAAiE,CAAC;IAC5G;IACA,QAAQ,YAAY,CAAC,SAAS,CAAC,SAAS,CAAC,YAAY,CAAC;IACtD,QAAQ,OAAO,UAAU;IACzB;;IAEA,IAAI,YAAY,CAAC,OAAO,CAAC,UAAU,IAAI,UAAU,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;;IAE1E,IAAI,OAAO,UAAU;IACrB,CAAC;;ACzBW,UAAC,KAAK,IAAI,WAAW;;IAEjC,IAAI,MAAM,OAAO,GAAG,IAAI,GAAG,EAAE;;IAE7B,IAAI,OAAO;IACX;IACA;IACA;IACA;IACA;IACA,QAAQ,GAAG,CAAC,IAAI,EAAE;IAClB,YAAY,MAAM,CAAC,QAAQ,EAAE,gBAAgB,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;IAChF,YAAY,MAAM,gBAAgB,GAAG,UAAU,CAAC,gBAAgB,CAAC,GAAG,EAAE,CAAC;IACvE,YAAY,MAAM,YAAY,GAAG,gBAAgB,CAAC,SAAS,CAAC,KAAK,IAAI,gBAAgB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACjG,YAAY,MAAM,mBAAmB,GAAG,gBAAgB,CAAC,SAAS,CAAC,KAAK,IAAI,gBAAgB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACxG,YAAY,gBAAgB,CAAC,OAAO,GAAG,MAAM;IAC7C,gBAAgB,YAAY,EAAE;IAC9B,gBAAgB,mBAAmB,EAAE;IACrC,gBAAgB,gBAAgB,CAAC,OAAO,EAAE;IAC1C,aAAa;IACb,YAAY,WAAW,CAAC,GAAG,CAAC,gBAAgB,CAAC;;IAE7C,YAAY,OAAO,gBAAgB;IACnC,SAAS;IACT;IACA;IACA;IACA;IACA,QAAQ,MAAM,CAAC,IAAI,EAAE;IACrB,YAAY,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;IACjC,SAAS;IACT;IACA;IACA;IACA;IACA;IACA;IACA,QAAQ,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE;IAC5B,YAAY,MAAM,QAAQ,GAAG,UAAU,CAAC,KAAK,CAAC;IAC9C,YAAY,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,QAAQ,EAAE,WAAW,EAAE,IAAI,GAAG,EAAE,CAAC,CAAC;IAClE,YAAY,OAAO,QAAQ;IAC3B,SAAS;IACT;IACA;IACA;IACA;IACA;IACA,QAAQ,GAAG,CAAC,IAAI,EAAE;IAClB,YAAY,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;IAC1C,YAAY,OAAO,IAAI,GAAG,IAAI,CAAC,QAAQ,GAAG,IAAI;IAC9C,SAAS;IACT;IACA;IACA;IACA;IACA;IACA,QAAQ,kBAAkB,CAAC,IAAI,EAAE;IACjC,YAAY,OAAO,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;IACpC,SAAS;IACT;IACA;IACA;IACA;IACA,QAAQ,MAAM,CAAC,IAAI,EAAE;IACrB,YAAY,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;IAC1C,YAAY,GAAG,CAAC,IAAI,EAAE;IACtB,YAAY,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE;IACnC,YAAY,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,QAAQ,IAAI,QAAQ,CAAC,OAAO,EAAE,CAAC;IACpE,YAAY,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE;IACjC;IACA,KAAK;IACL,CAAC,EAAE;;ICjEH;IACA;IACA;IACA;IACA;IACA;IACA;IACO,SAAS,OAAO,CAAC,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE;IAC7C,IAAI,MAAM,OAAO,GAAG,IAAI,MAAM,CAAC,SAAS,CAAC;IACzC,IAAI,MAAM,QAAQ,GAAG,OAAO,CAAC,UAAU,EAAE;IACzC,IAAuB,OAAO,CAAC,YAAY;;IAE3C,IAAI,IAAI,KAAK,GAAG,IAAI,GAAG,EAAE;IACzB,IAAI,IAAI,YAAY,GAAG,IAAI;IAC3B,IAAI,MAAM,MAAM,GAAG,IAAI,GAAG,EAAE;;IAE5B,IAAI,MAAM,KAAK,GAAG,MAAM;IACxB,QAAQ,OAAO,CAAC,cAAc,EAAE;IAChC,QAAQ,UAAU,EAAE;IACpB,KAAK;;IAEL,IAAI,MAAM,UAAU,GAAG,CAAC,MAAM,KAAK;IACnC,QAAQ,IAAI,MAAM,CAAC,KAAK,EAAE,SAAS,CAAC,IAAI,KAAK,CAAC,OAAO,EAAE,EAAE;IACzD,YAAY,GAAG,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;IAClC,gBAAgB;IAChB;IACA,YAAY,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,EAAE,KAAK,EAAE;IAClD,YAAY,GAAG,MAAM,IAAI,KAAK,EAAE;IAChC,gBAAgB,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC;IACzC;IACA,YAAY,SAAS,CAAC,aAAa,EAAE,OAAO,EAAE;IAC9C,YAAY,SAAS,CAAC,KAAK,GAAG,IAAI;IAClC,YAAY,SAAS,CAAC,aAAa,GAAG,IAAI;IAC1C,YAAY,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC;IACzC,YAAY,YAAY,IAAI,YAAY,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC;IAChE;IACA,KAAK;;IAEL,IAAI,MAAM,iBAAiB,GAAG,CAAC,IAAI,EAAE,QAAQ,KAAK;IAClD,QAAQ,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,EAAE,QAAQ,EAAE,GAAG,CAAC;;IAEjD,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;IAC7B,YAAY,MAAM,SAAS,GAAG,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC;IAC9C,YAAY,SAAS,CAAC,aAAa,EAAE,GAAG,CAAC,QAAQ,CAAC;IAClD,YAAY,SAAS,CAAC,KAAK,GAAG,KAAK;IACnC,YAAY,GAAG,SAAS,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;IACzC,gBAAgB,OAAO,KAAK;IAC5B;IACA,YAAY,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC;IAC/B;;IAEA,QAAQ,IAAI;IACZ,YAAY,MAAM,aAAa,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,GAAG,UAAU,CAAC,QAAQ,CAAC,GAAG,IAAI;IACpF,YAAY,IAAI,KAAK,GAAG,cAAc,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC;IAC7E,YAAY,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,OAAO,CAAC,KAAK,CAAC,EAAE,aAAa,CAAC,CAAC;IAC7F,SAAS,CAAC,OAAO,CAAC,EAAE;IACpB,YAAYA,cAAY,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC,+BAA+B,EAAE,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC;IACxF,YAAY,MAAM,CAAC;IACnB;IACA,QAAQ,OAAO,KAAK;IACpB,KAAK;;IAEL,IAAI,MAAM,eAAe,GAAG,CAAC,MAAM,KAAK;IACxC,QAAQ,MAAM,QAAQ,GAAG,QAAQ,CAAC,sBAAsB,EAAE;IAC1D,QAAQ,IAAI,MAAM,OAAO,IAAI,MAAM,EAAE;IACrC,YAAY,MAAM,SAAS,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC;IAChD,YAAY,GAAG,CAAC,SAAS,EAAE;IAC3B,gBAAgB;IAChB;IACA,YAAY,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,EAAE,KAAK,EAAE;IAClD,YAAY,KAAK,IAAI,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC;IAChD;IACA,QAAQ,MAAM,CAAC,YAAY,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAC/C;;IAEA,IAAI,MAAM,iBAAiB,GAAG,CAAC,MAAM,KAAK;IAE1C,QAAQ,IAAI,QAAQ,GAAG,QAAQ,CAAC,sBAAsB,EAAE;IACxD,QAAQ,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC;IAC1C,QAAwB,KAAK,CAAC,IAAI,CAAC,YAAY;;IAI/C,QAAQ,IAAI,MAAM,KAAK,IAAI,OAAO,EAAE;IACpC,YAAY,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC;IAC1C,YAAY,MAAM,SAAS,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC;IAChD,YAAY,GAAG,CAAC,SAAS,EAAE;IAC3B,gBAAgB;IAChB;IACA,YAAY,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,KAAK,EAAE;IACjD,YAAY,GAAG,CAAC,KAAK,EAAE;IACvB,gBAAgB;IAChB;IACA,YAAY,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC;IACvC;IACA,QAAQ,OAAO,CAAC,cAAc,CAAC,QAAQ,CAAC;IACxC,KAAK;;IAEL,IAAI,MAAM,YAAY,GAAG,MAAM;IAC/B,QAAQ,MAAM,MAAM,GAAG,QAAQ,CAAC,UAAU;IAC1C,QAAQ,GAAG,CAAC,MAAM,EAAE;IACpB,YAAY;IACZ;;IAEA,QAAQ,MAAM,KAAK,GAAG,CAAC,SAAS,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI;IACxE,QAAQ,MAAM,CAAC,KAAK,EAAE;IACtB,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;IACjC,YAAY,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE;IACnE,gBAAgB,MAAM,KAAK,EAAE,iBAAiB,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IAC3D,gBAAgB,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC;IACjC;IACA,SAAS,MAAM;IACf,YAAY,IAAI,MAAM,QAAQ,IAAI,KAAK,EAAE;IACzC,gBAAgB,MAAM,KAAK,GAAG,iBAAiB,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,QAAQ,CAAC;IAC1E,gBAAgB,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC;IACjC;IACA;;IAEA,QAAQ,GAAG,MAAM,CAAC,IAAI,KAAK,CAAC,EAAE;IAC9B,YAAY,KAAK,EAAE;IACnB,YAAY,YAAY,EAAE,KAAK,EAAE;IACjC,YAAY;IACZ;;IAEA,QAAQ,UAAU,CAAC,MAAM,CAAC;IAC1B,QAAQ,GAAG,CAAC,YAAY,IAAI,YAAY,CAAC,IAAI,KAAK,CAAC,EAAE;IACrD,YAAY,eAAe,CAAC,MAAM,CAAC;IACnC,SAAS,MAAM;IACf,YAAY,iBAAiB,CAAO,CAAC;IACrC;IACA,QAAQ,YAAY,EAAE,KAAK,EAAE;IAC7B,QAAQ,YAAY,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC;IAC3C,KAAK;;IAEL,IAAI,YAAY,EAAE;IAClB,IAAI,GAAG,SAAS,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE;IACrC,QAAQ,IAAI,CAAC,SAAS,CAAC,YAAY;IACnC;IACA,IAAI,OAAO,OAAO;IAClB;;IC5IO,SAAS,YAAY,CAAC,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,OAAO,GAAG,EAAE,EAAE;IAChE,IAAI,MAAM,OAAO,GAAG,IAAI,MAAM,CAAC,eAAe,CAAC;IAC/C,IAAI,MAAM,QAAQ,GAAG,OAAO,CAAC,UAAU,EAAE;IACzC,IAAI,MAAM,UAAU,GAAG,OAAO,CAAC,YAAY,EAAE;;IAE7C,IAAI,IAAI,KAAK,GAAG,IAAI,GAAG,EAAE;IACzB,IAAI,IAAI,iBAAiB,GAAG,CAAC;;IAE7B,IAAI,MAAM,SAAS,GAAG,IAAI,OAAO,EAAE;;IAEnC,IAAI,MAAM,KAAK,GAAG,MAAM;IACxB,QAAQ,OAAO,CAAC,cAAc,EAAE;IAChC,QAAQ,UAAU,EAAE;IACpB,QAAQ,iBAAiB,GAAG,CAAC;IAC7B,KAAK;IACL,IAAI,MAAM,UAAU,GAAG,CAAC,IAAI,EAAE,QAAQ,KAAK;IAC3C,QAAQ,GAAG,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;IAChC,YAAY,OAAO,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC;IACtC;IACA,QAAQ,OAAO,MAAM,CAAC,IAAI,EAAE,QAAQ,EAAE,GAAG,CAAC;IAC1C,KAAK;IACL,IAAI,MAAM,YAAY,GAAG,CAAC,IAAI,KAAK;IACnC,QAAQ,OAAO,aAAa,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IAC9C,KAAK;;IAEL,IAAI,MAAM,oBAAoB,GAAG,CAAC,KAAK,EAAE,SAAS,GAAG,CAAC,KAAK;IAC3D,QAAQ,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;IAChC,YAAY;IACZ;IACA,QAAQ,IAAI,KAAK,GAAG,SAAS;IAC7B,QAAQ,IAAI,IAAI,CAAC,GAAG,SAAS,EAAE,MAAM,GAAG,KAAK,EAAE,MAAM,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE;IACxE,YAAY,MAAM,SAAS,GAAG,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAChE,YAAY,GAAG,CAAC,SAAS,EAAE;IAC3B,gBAAgB;IAChB;IACA,YAAY,SAAS,CAAC,aAAa,EAAE,KAAK,EAAE,EAAE,GAAG,CAAC,KAAK,CAAC;IACxD,YAAY,KAAK,EAAE;IACnB;IACA,KAAK;;IAEL,IAAI,MAAM,eAAe,GAAG,CAAC,SAAS,EAAE,WAAW,GAAG,IAAI,KAAK;IAC/D,QAAQ,GAAG,CAAC,SAAS,EAAE;IACvB,YAAY;IACZ;IACA,QAAQ,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK;IACrC,QAAQ,SAAS,CAAC,aAAa,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE;IACnD,QAAQ,SAAS,CAAC,KAAK,GAAG,IAAI;IAC9B,QAAQ,SAAS,CAAC,aAAa,GAAG,IAAI;IACtC,QAAQ,GAAG,WAAW,EAAE;IACxB,YAAY,KAAK,EAAE,MAAM,EAAE;IAC3B,YAAY,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC;IACzC;IACA;;IAEA,IAAI,MAAM,oBAAoB,GAAG,CAAC,KAAK,EAAE,WAAW,GAAG,IAAI,KAAK;IAChE,QAAQ,eAAe,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,WAAW,CAAC;IACtD,KAAK;;IAEL,IAAI,MAAM,UAAU,GAAG,MAAM;IAC7B,QAAQ,KAAK,MAAM,CAAC,KAAK,EAAE,SAAS,CAAC,IAAI,KAAK,CAAC,OAAO,EAAE,EAAE;IAC1D,YAAY,eAAe,CAAC,SAAS,EAAE,KAAK,CAAC;IAC7C;IACA,QAAQ,KAAK,CAAC,KAAK,EAAE;IACrB;;IAEA,IAAI,MAAM,SAAS,GAAG,CAAC,IAAI,EAAE,QAAQ,KAAK;IAC1C,QAAQ,MAAM,KAAK,GAAG,UAAU,CAAC,IAAI,EAAE,QAAQ,CAAC;;IAEhD,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;IAC7B,YAAY,MAAM,SAAS,GAAG,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC;IAC9C,YAAY,SAAS,CAAC,aAAa,EAAE,KAAK,EAAE,EAAE,GAAG,CAAC,QAAQ,CAAC;IAC3D,YAAY,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK;IACzC,YAAY,GAAG,KAAK,EAAE;IACtB,gBAAgB,OAAO,KAAK;IAC5B;IACA,YAAY,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC;IAC/B;;IAEA,QAAQ,IAAI;IACZ,YAAY,MAAM,aAAa,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,GAAG,UAAU,CAAC,QAAQ,CAAC,GAAG,IAAI;IACpF,YAAY,IAAI,KAAK,GAAG,cAAc,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;IAC9E,YAAY,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE;IAC7B,gBAAgB,KAAK;IACrB,gBAAgB,KAAK,EAAE,KAAK;IAC5B,gBAAgB,aAAa,GAAG,aAAa,GAAG,IAAI,OAAO,CAAC,aAAa,CAAC,GAAG,IAAI;IACjF,aAAa,CAAC;IACd,YAAY,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC;IACtC,YAAY,OAAO,KAAK;IACxB,SAAS,CAAC,OAAO,CAAC,EAAE;IACpB,YAAYA,cAAY,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC,+BAA+B,EAAE,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC;IACxF,YAAY,MAAM,CAAC;IACnB;IACA,KAAK;IACL,IAAI,MAAM,aAAa,GAAG,SAAS,KAAK,EAAE;IAC1C,QAAQ,MAAM,SAAS,GAAG,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC;IAC1C,QAAQ,GAAG,CAAC,SAAS,EAAE;IACvB,YAAY,OAAO,IAAI;IACvB;IACA,QAAQ,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK;IACrC,QAAQ,GAAG,CAAC,KAAK,EAAE;IACnB,YAAY,eAAe,CAAC,SAAS,EAAE,KAAK,CAAC;IAC7C,YAAY,OAAO,IAAI;IACvB;IACA,QAAQ,OAAO,KAAK;IACpB,KAAK;;IAEL,IAAI,MAAM,WAAW,GAAG,SAAS,KAAK,EAAE,QAAQ,EAAE;IAClD,QAAQ,MAAM,SAAS,GAAG,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC;IAC1C,QAAQ,GAAG,CAAC,SAAS,EAAE;IACvB,YAAY,OAAO,IAAI;IACvB;IACA,QAAQ,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK;IACrC,QAAQ,GAAG,CAAC,KAAK,EAAE;IACnB,YAAY,OAAO,IAAI;IACvB;;IAEA,QAAQ,GAAG,QAAQ,EAAE;IACrB,YAAY,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC;IACvC,YAAY;IACZ;IACA,QAAQ,KAAK,CAAC,MAAM,EAAE;IACtB;;IAEA,IAAI,MAAM,OAAO,GAAG;IACpB,QAAQ,UAAU,CAAC,KAAK,EAAE,cAAc,GAAG,CAAC,CAAC;IAC7C,YAAY,MAAM,QAAQ,GAAG,QAAQ,CAAC,sBAAsB,EAAE;IAC9D,YAAY,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE;IACnE,gBAAgB,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,iBAAiB,CAAC,CAAC;IACvE,gBAAgB,iBAAiB,EAAE;IACnC;IACA,YAAY,OAAO,QAAQ;IAC3B,SAAS;IACT,QAAQ,GAAG,CAAC,KAAK,EAAE,KAAK,GAAG,CAAC,EAAE;IAC9B,YAAY,UAAU,CAAC,MAAM;IAC7B,gBAAgB,OAAO,CAAC,aAAa,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC;IAC/D,aAAa,EAAE,KAAK,CAAC;IACrB,SAAS;IACT,QAAQ,OAAO,CAAC,KAAK,EAAE;IACvB,YAAY,KAAK,EAAE;IACnB,YAAY,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC;IAC9B,SAAS;IACT,QAAQ,OAAO,CAAC,KAAK,EAAE;IACvB,YAAY,IAAI,KAAK,GAAG,IAAI;IAC5B,YAAY,MAAM,QAAQ,GAAG,QAAQ,CAAC,sBAAsB,EAAE;IAC9D,YAAY,IAAI,MAAM,IAAI,IAAI,KAAK,EAAE;IACrC,gBAAgB,KAAK,GAAG,YAAY,CAAC,IAAI,CAAC;IAC1C,gBAAgB,GAAG,KAAK,EAAE;IAC1B,oBAAoB,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC;IAC/C;IACA;IACA,YAAY,KAAK,GAAG,IAAI;IACxB,YAAY,OAAO,CAAC,aAAa,CAAC,QAAQ,EAAE,QAAQ,CAAC;IACrD,SAAS;IACT,QAAQ,SAAS,CAAC,OAAO,EAAE,KAAK,EAAE;IAClC,YAAY,IAAI,KAAK,GAAG,YAAY,CAAC,OAAO,CAAC;IAC7C,YAAY,GAAG,KAAK,EAAE;IACtB,gBAAgB,oBAAoB,CAAC,UAAU,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE,IAAI,CAAC;IACtE;IACA,YAAY,KAAK,GAAG,IAAI;IACxB,SAAS;IACT,QAAQ,KAAK;IACb,QAAQ,KAAK,CAAC,KAAK,EAAE;IACrB,YAAY,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC;IACjC,SAAS;IACT,QAAQ,IAAI,CAAC,KAAK,EAAE;IACpB,YAAY,IAAI,KAAK,GAAG,CAAC;IACzB,YAAY,GAAG,OAAO,CAAC,SAAS,EAAE;IAClC,gBAAgB,KAAK,GAAG,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC;IACrD;;IAEA,YAAY,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC;IACrC,SAAS;IACT,QAAQ,QAAQ,CAAC,CAAC,MAAM,EAAE,SAAS,EAAE,QAAQ,CAAC,EAAE;IAChD,YAAY,MAAM,QAAQ,GAAG,QAAQ,CAAC,sBAAsB,EAAE;IAC9D,YAAY,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,EAAE,CAAC,EAAE,EAAE;IAChD,gBAAgB,MAAM,IAAI,GAAG,QAAQ,CAAC,CAAC,CAAC;IACxC,gBAAgB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;IACjC,gBAAgB,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IACnD,gBAAgB,iBAAiB,EAAE;IACnC;IACA,YAAY,OAAO,CAAC,WAAW,CAAC,QAAQ,CAAC;IACzC,YAAY,QAAQ,CAAC,eAAe,EAAE;IACtC,SAAS;IACT,QAAQ,OAAO,CAAC,MAAM,CAAC;IACvB,YAAY,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,UAAU,CAAC,WAAW,CAAC;IACpF,SAAS;IACT,QAAQ,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE;IAC9B,YAAY,MAAM,CAAC,KAAK,EAAE,WAAW,EAAE,GAAG,MAAM,CAAC,GAAG,IAAI;IACxD,YAAY,IAAI,kBAAkB,GAAG,IAAI;IACzC,YAAY,MAAM,eAAe,GAAG,QAAQ,CAAC,sBAAsB,EAAE;;IAErE,YAAY,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;IACnC,gBAAgB,IAAI,QAAQ,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC;IAC5D,gBAAgB,GAAG,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE;IACzC,oBAAoB,WAAW,CAAC,QAAQ,EAAE,eAAe,CAAC;IAC1D,iBAAiB,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;IAC9C,oBAAoB,MAAM,iBAAiB,GAAG,aAAa,CAAC,QAAQ,CAAC;IACrE,oBAAoB,kBAAkB,GAAG,iBAAiB,EAAE,eAAe;;IAE3E,oBAAoB,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;IAC5D,wBAAwB,MAAM,KAAK,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,GAAG,CAAM,CAAC;IAC5E,wBAAwB,WAAW,CAAC,KAAK,EAAE,eAAe,CAAC;IAC3D;IACA;IACA,aAAa,MAAM;IACnB,gBAAgB,kBAAkB,GAAG,QAAQ;IAC7C;IACA,YAAY,eAAe,CAAC,eAAe,EAAE;;IAE7C,YAAY,GAAG,MAAM,IAAI,MAAM,CAAC,MAAM,IAAI,kBAAkB,EAAE;IAC9D,gBAAgB,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,kBAAkB,CAAC,WAAW,CAAC;IAChG;;IAEA,SAAS;IACT,QAAQ,OAAO,CAAC,CAAC,EAAE,QAAQ,EAAE;IAC7B,YAAY,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC;IACrC,SAAS;IACT,QAAQ,IAAI,CAAC,CAAC,EAAE,MAAM,EAAE;IACxB,YAAY,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC;IACnC,SAAS;IACT,QAAQ,MAAM,CAAC,CAAC,EAAE,OAAO,EAAE;IAC3B,YAAY,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC;IACtC,SAAS;IACT,QAAQ,GAAG,CAAC,CAAC,EAAE,OAAO,EAAE;IACxB,YAAY,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC;IACtC,SAAS;IACT,QAAQ,KAAK,CAAC,CAAC,EAAE,OAAO,EAAE;IAC1B,YAAY,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC;IACtC,SAAS;IACT,QAAQ,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE;IAC7B,YAAY,MAAM,MAAM,GAAG,QAAQ,CAAC,UAAU;;IAE9C,YAAY,IAAI,MAAM,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IAClD,YAAY,IAAI,MAAM,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IAClD,YAAY,GAAG,CAAC,MAAM,IAAI,CAAC,MAAM,EAAE;IACnC,gBAAgB;IAChB;;IAEA,YAAY,MAAM,UAAU,GAAG,MAAM,CAAC,WAAW;IACjD,YAAY,MAAM,CAAC,YAAY,CAAC,MAAM,EAAE,MAAM,CAAC;IAC/C,YAAY,MAAM,CAAC,YAAY,CAAC,MAAM,EAAE,UAAU,CAAC;IACnD,YAAY,MAAM,GAAG,IAAI;IACzB,YAAY,MAAM,GAAG,IAAI;IACzB;IACA,KAAK;;IAEL,IAAI,MAAM,YAAY,GAAG,CAAC,KAAK,EAAE,CAAC,EAAE,UAAU,KAAK;IACnD,QAAQ,GAAG,UAAU,EAAE,MAAM,KAAK,UAAU,EAAE;IAC9C,YAAY,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,EAAE,UAAU,CAAC,MAAM,CAAC;IAChE,SAAS,OAAO;IAChB,YAAY,GAAG,UAAU,CAAC,MAAM,KAAK,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;IAC/D,gBAAgB,GAAG,iBAAiB,KAAK,CAAC,EAAE;IAC5C,oBAAoB;IACpB;IACA,gBAAgB,KAAK,EAAE;IACvB;;IAEA,YAAY,GAAG,CAAC,UAAU,EAAE,MAAM,EAAE;IACpC,gBAAgB,GAAG,iBAAiB,KAAK,CAAC,EAAE;IAC5C,oBAAoB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC;IACtC,oBAAoB;IACpB;IACA,gBAAgB,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC;IACtC;IACA,iBAAiB,GAAG,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE;IAChD,gBAAgB,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,UAAU,CAAC,IAAI,EAAE,UAAU,CAAC,MAAM,CAAC;IAC9E;IACA;;IAEA,QAAQ,oBAAoB,CAAC,KAAK,EAAE,CAAC,CAAC;IACtC,KAAK;;IAEL,IAAI,YAAY,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,IAAI,EAAE,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAClD,IAAI,GAAG,SAAS,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE;IACrC,QAAQ,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC;IACpC;;IAEA,IAAI,OAAO,OAAO;IAClB;;ICvRA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACO,MAAM,MAAM,GAAG,SAAS,SAAS,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI,EAAE;IACjE,IAAI,GAAG,EAAE,SAAS,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,EAAE;IAC7C,QAAQ,OAAOA,cAAY,CAAC,IAAI,CAAC,QAAQ,EAAE,6CAA6C,CAAC,OAAO,EAAE,SAAS,CAAC;IAC5G;IACA,IAAI,MAAM,OAAO,GAAG,IAAI,MAAM,CAAC,YAAY,EAAE,OAAO,IAAI,EAAE,CAAC,CAAC;;IAE5D,IAAI,IAAI,YAAY,GAAG,IAAI;IAC3B,IAAI,MAAM,eAAe,GAAG,MAAM;IAClC,QAAQ,GAAG,YAAY,EAAE;IACzB,YAAY,OAAO,YAAY;IAC/B;IACA,QAAQ,YAAY,GAAG,cAAc,CAAC,QAAQ,CAAC,KAAK,CAAC;IACrD,QAAQ,OAAO,YAAY;IAC3B,KAAK;;IAEL,IAAI,MAAM,YAAY,GAAG,SAAS,CAAC,GAAG,EAAE;;IAExC,IAAI,GAAG,YAAY,EAAE;IACrB,QAAQ,OAAO,CAAC,WAAW,CAAC,eAAe,EAAE,CAAC;IAC9C;IACA,IAAI,SAAS,CAAC,SAAS,CAAC,KAAK,IAAI;IACjC,QAAQ,GAAG,KAAK,EAAE;IAClB,YAAY,OAAO,CAAC,WAAW,CAAC,eAAe,EAAE,CAAC;IAClD,SAAS,MAAM;IACf,YAAY,OAAO,CAAC,MAAM,EAAE;IAC5B;IACA,KAAK,CAAC;;IAEN,IAAI,OAAO,OAAO;IAClB;;IAEA;IACA;IACA;IACA;IACA;IACA;IACA;IACO,MAAM,MAAM,GAAG,SAAS,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE;;IAE1D,IAAI,MAAM,aAAa,GAAG,UAAU,CAAC,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC;IACtD,IAAI,SAAS,CAAC,SAAS,CAAC,KAAK,IAAI,aAAa,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;;IAE3D,IAAI,OAAO,MAAM,CAAC,aAAa,EAAE,KAAK,EAAE,OAAO,CAAC;IAChD;;IAEA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACO,MAAM,SAAS,GAAG,SAAS,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE;IAC7D,IAAI,OAAO,MAAM,CAAC,SAAS,EAAE,KAAK,EAAE,OAAO,CAAC;IAC5C;;IC/DA;IACA;IACA;IACA;IACA;IACA;IACA;IACO,MAAM,KAAK,GAAG,SAAS,UAAU,EAAE,MAAM,EAAE,iBAAiB,GAAG,IAAI,EAAE;;IAE5E,IAAI,GAAG,CAAC,SAAS,CAAC,YAAY,CAAC,UAAU,CAAC,EAAE;IAC5C,QAAQ,MAAM,IAAI,mBAAmB,CAAC,0CAA0C,CAAC;IACjF;;IAEA,IAAI,MAAM,MAAM,GAAG,IAAI,MAAM,EAAE;IAC/B,IAAI,MAAM,KAAK,GAAG,IAAI,GAAG,EAAE;;IAE3B,IAAI,MAAM,OAAO,GAAG,SAAS,GAAG,EAAE;IAClC,QAAQ,GAAG,iBAAiB,IAAI,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;IAChD,YAAY,OAAO,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC;IACjC;IACA,QAAQ,IAAI,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC;IAC9B,QAAQ,GAAG,CAAC,IAAI,EAAE;IAClB,YAAY,OAAO,IAAI;IACvB;IACA,QAAQ,IAAI,GAAG,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC;IAC5C,QAAQ,iBAAiB,IAAI,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC;IACjD,QAAQ,OAAO,IAAI;IACnB;;IAEA,IAAI,MAAM,YAAY,GAAG,UAAU,CAAC,GAAG,EAAE;IACzC,IAAI,MAAM,cAAc,GAAG,OAAO,CAAC,YAAY,CAAC;IAChD,IAAI,GAAG,cAAc,EAAE;IACvB,QAAQ,MAAM,CAAC,WAAW,CAAC,cAAc,CAAC;IAC1C;;IAEA,IAAI,UAAU,CAAC,SAAS,CAAC,KAAK,IAAI;IAClC,QAAQ,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC;IACtC,QAAQ,MAAM,CAAC,MAAM,EAAE;IACvB,QAAQ,GAAG,OAAO,EAAE;IACpB,YAAY,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC;IACvC;IACA,KAAK;;IAEL,IAAI,OAAO,MAAM;IACjB;;;IAGA;IACA;IACA;IACA;IACA;IACA;IACA;IACO,MAAM,MAAM,GAAG,UAAU,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE;;IAE7D,IAAI,GAAG,CAAC,SAAS,CAAC,YAAY,CAAC,UAAU,CAAC,EAAE;IAC5C,QAAQ,MAAM,IAAI,mBAAmB,CAAC,0CAA0C,CAAC;IACjF;;IAEA,IAAI,OAAO,KAAK,CAAC,UAAU,EAAE;IAC7B,QAAQ,IAAI,EAAE,MAAM;IACpB,QAAQ,KAAK,EAAE,OAAO;IACtB,KAAK,CAAC;IACN;;IAEA;IACA;IACA;IACA;IACA;IACO,MAAM,IAAI,GAAG,SAAS,UAAU,EAAE;IACzC,IAAI,GAAG,CAAC,SAAS,CAAC,YAAY,CAAC,UAAU,CAAC,EAAE;IAC5C,QAAQ,MAAM,IAAI,mBAAmB,CAAC,wCAAwC,CAAC;IAC/E;;IAEA,IAAI,IAAI,OAAO,GAAG,IAAI;IACtB,IAAI,IAAI,QAAQ,GAAG,IAAI;;IAEvB,IAAI,OAAO;IACX,QAAQ,IAAI,CAAC,MAAM,EAAE;IACrB,YAAY,OAAO,GAAG,MAAM;IAC5B,YAAY,OAAO,IAAI;IACvB,SAAS;IACT,QAAQ,SAAS,CAAC,OAAO,EAAE;IAC3B,YAAY,QAAQ,GAAG,OAAO;IAC9B,YAAY,OAAO,MAAM,CAAC,UAAU,EAAE,OAAO,EAAE,QAAQ,CAAC;IACxD;IACA;IACA;;IC9FO,MAAM,GAAG,GAAG,kBAAkB,CAAC,KAAK,CAAC;IACrC,MAAM,IAAI,GAAG,kBAAkB,CAAC,MAAM,CAAC;IACvC,MAAM,KAAK,GAAG,kBAAkB,CAAC,OAAO,CAAC;IACzC,MAAM,CAAC,GAAG,kBAAkB,CAAC,GAAG,CAAC;IACjC,MAAM,SAAS,GAAG,CAAC;IACnB,MAAM,MAAM,GAAG,kBAAkB,CAAC,QAAQ,CAAC;IAC3C,MAAM,EAAE,GAAG,kBAAkB,CAAC,IAAI,CAAC;IACnC,MAAM,EAAE,GAAG,kBAAkB,CAAC,IAAI,CAAC;IACnC,MAAM,EAAE,GAAG,kBAAkB,CAAC,IAAI,CAAC;IACnC,MAAM,EAAE,GAAG,kBAAkB,CAAC,IAAI,CAAC;IACnC,MAAM,EAAE,GAAG,kBAAkB,CAAC,IAAI,CAAC;IACnC,MAAM,EAAE,GAAG,kBAAkB,CAAC,IAAI,CAAC;;IAEnC,MAAM,EAAE,GAAG,kBAAkB,CAAC,IAAI,CAAC;;IAEnC,MAAMC,MAAI,GAAG,kBAAkB,CAAC,GAAG,CAAC;IACpC,MAAM,GAAG,GAAG,kBAAkB,CAAC,KAAK,CAAC;IACrC,MAAM,IAAI,GAAG,kBAAkB,CAAC,MAAM,CAAC;IACvC,MAAM,UAAU,GAAG,kBAAkB,CAAC,YAAY,CAAC;IACnD,MAAM,EAAE,GAAG,kBAAkB,CAAC,IAAI,CAAC;IACnC,MAAM,EAAE,GAAG,kBAAkB,CAAC,IAAI,CAAC;IACnC,MAAM,KAAK,GAAG,kBAAkB,CAAC,OAAO,CAAC;IACzC,MAAM,IAAI,GAAG,kBAAkB,CAAC,MAAM,CAAC;IACvC,MAAM,GAAG,GAAG,kBAAkB,CAAC,KAAK,CAAC;IACrC,MAAM,GAAG,GAAG,kBAAkB,CAAC,KAAK,CAAC;IACrC,MAAM,GAAG,GAAG,kBAAkB,CAAC,KAAK,CAAC;IACrC,MAAM,GAAG,GAAG,kBAAkB,CAAC,KAAK,CAAC;IACrC,MAAM,IAAI,GAAG,kBAAkB,CAAC,MAAM,CAAC;IACvC,MAAM,IAAI,GAAG,kBAAkB,CAAC,MAAM,CAAC;IACvC,MAAM,KAAK,GAAG,kBAAkB,CAAC,GAAG,CAAC;;IC7BrC,MAAM,EAAE,GAAG,kBAAkB,CAAC,IAAI,CAAC;IACnC,MAAM,EAAE,GAAG,kBAAkB,CAAC,IAAI,CAAC;IACnC,MAAM,EAAE,GAAG,kBAAkB,CAAC,IAAI,CAAC;;ICDnC,MAAM,IAAI,GAAG,kBAAkB,CAAC,MAAM,EAAE,SAAS,EAAE,EAAE;;IAE5D,IAAI,EAAE,CAAC,MAAM,GAAG,SAAS,MAAM,EAAE;IACjC,QAAQ,GAAG,OAAO,MAAM,KAAK,UAAU,EAAE;IACzC,YAAY,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK;IAC/B,gBAAgB,CAAC,CAAC,cAAc,EAAE;IAClC,gBAAgB,MAAM,CAAC,CAAC,CAAC;IACzB,aAAa,CAAC;IACd,YAAY,OAAO,EAAE;IACrB;IACA,QAAQ,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC3C,QAAQ,OAAO,EAAE;IACjB,KAAK;IACL,IAAI,EAAE,CAAC,iBAAiB,GAAG,WAAW;IACtC,QAAQ,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,qBAAqB,CAAC;IAC3D,QAAQ,OAAO,EAAE;IACjB;IACA,IAAI,EAAE,CAAC,IAAI,GAAG,SAAS,MAAM,EAAE;IAC/B,QAAQ,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC3C,QAAQ,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC3C,QAAQ,OAAO,EAAE;IACjB,KAAK;IACL,IAAI,EAAE,CAAC,GAAG,GAAG,SAAS,MAAM,EAAE;IAC9B,QAAQ,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,KAAK,CAAC;IAC1C,QAAQ,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC3C,KAAK;IACL,IAAI,OAAO,EAAE;IACb,CAAC,CAAC;;IAEK,MAAM,KAAK,GAAG,kBAAkB,CAAC,OAAO,CAAC;;IAEzC,MAAM,QAAQ,GAAG,kBAAkB,CAAC,UAAU,CAAC;IAC/C,MAAM,SAAS,GAAG,QAAQ;;IAE1B,MAAM,MAAM,GAAG,kBAAkB,CAAC,QAAQ,CAAC;IAC3C,MAAM,QAAQ,GAAG,kBAAkB,CAAC,UAAU,GAAG;IACjD,MAAM,MAAM,GAAG,kBAAkB,CAAC,QAAQ,CAAC;IAC3C,MAAM,MAAM,GAAG,kBAAkB,CAAC,QAAQ,CAAC;IAC3C,MAAM,QAAQ,GAAG,kBAAkB,CAAC,UAAU,CAAC;IAC/C,MAAM,MAAM,GAAG,kBAAkB,CAAC,QAAQ,CAAC;IAC3C,MAAM,QAAQ,GAAG,kBAAkB,CAAC,UAAU,CAAC;IAC/C,MAAM,KAAK,GAAG,kBAAkB,CAAC,OAAO,CAAC;;IAEzC,MAAM,aAAa,GAAG,CAAC,UAAU,KAAK,KAAK,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,UAAU,EAAE,CAAC;IAC9E,MAAM,WAAW,GAAG,CAAC,UAAU,KAAK,KAAK,CAAC,CAAC,IAAI,EAAE,QAAQ,EAAE,GAAG,UAAU,EAAE,CAAC;IAC3E,MAAM,SAAS,GAAG,CAAC,UAAU,KAAK,KAAK,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,UAAU,EAAE,CAAC;IACxE,MAAM,aAAa,GAAG,CAAC,UAAU,KAAK,KAAK,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,UAAU,EAAE,CAAC;IAChF,MAAM,QAAQ,GAAG,CAAC,UAAU,KAAK,KAAK,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,UAAU,EAAE,CAAC;IAC3E,MAAM,KAAK,GAAG,CAAC,UAAU,KAAK,KAAK,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,UAAU,EAAE,CAAC;;IAErE,MAAM,UAAU,GAAG,CAAC,UAAU,KAAK,KAAK,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,UAAU,EAAE,CAAC;IAC1E,MAAM,UAAU,GAAG,CAAC,UAAU,KAAK,KAAK,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,UAAU,EAAE,CAAC;IAC1E,MAAM,SAAS,GAAG,CAAC,UAAU,KAAK,KAAK,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,UAAU,EAAE,CAAC;IACxE,MAAM,SAAS,GAAG,CAAC,UAAU,KAAK,KAAK,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,UAAU,EAAE,CAAC;IACxE,MAAM,aAAa,GAAG,CAAC,UAAU,KAAK,KAAK,CAAC,EAAE,IAAI,EAAE,gBAAgB,EAAE,GAAG,UAAU,EAAE,CAAC;IACtF,MAAM,SAAS,GAAG,CAAC,UAAU,KAAK,KAAK,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,UAAU,EAAE,CAAC;IACxE,MAAM,UAAU,GAAG,CAAC,UAAU,KAAK,KAAK,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,UAAU,EAAE,CAAC;IAC1E,MAAM,WAAW,GAAG,CAAC,UAAU,KAAK,KAAK,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,UAAU,EAAE,CAAC;IAC5E,MAAM,QAAQ,GAAG,CAAC,UAAU,KAAK,KAAK,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,UAAU,EAAE,CAAC;IACtE,MAAM,QAAQ,GAAG,CAAC,UAAU,KAAK,KAAK,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,UAAU,EAAE,CAAC;IACtE,MAAM,UAAU,GAAG,CAAC,UAAU,KAAK,KAAK,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,UAAU,EAAE,CAAC;IAC1E,MAAM,WAAW,GAAG,CAAC,UAAU,KAAK,KAAK,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,UAAU,EAAE,CAAC;;;IAG5E,MAAM,MAAM,GAAG,kBAAkB,CAAC,QAAQ,CAAC;IAC3C,MAAM,YAAY,GAAG,CAAC,KAAK,EAAE,UAAU,KAAK,MAAM,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,UAAU,EAAE,CAAC;IAC5F,MAAM,YAAY,GAAG,CAAC,KAAK,EAAE,UAAU,KAAK,MAAM,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,UAAU,EAAE,CAAC;;ICnE5F,MAAM,IAAI,GAAG,kBAAkB,CAAC,MAAM,CAAC;IACvC,MAAM,OAAO,GAAG,kBAAkB,CAAC,SAAS,CAAC;IAC7C,MAAM,OAAO,GAAG,kBAAkB,CAAC,SAAS,CAAC;IAC7C,MAAM,KAAK,GAAG,kBAAkB,CAAC,OAAO,CAAC;IACzC,MAAM,GAAG,GAAG,kBAAkB,CAAC,KAAK,CAAC;IACrC,MAAM,MAAM,GAAG,kBAAkB,CAAC,QAAQ,CAAC;IAC3C,MAAM,UAAU,GAAG,kBAAkB,CAAC,YAAY,CAAC;;IAEnD,MAAM,MAAM,GAAG,kBAAkB,CAAC,QAAQ,CAAC;IAC3C,MAAM,MAAM,GAAG,kBAAkB,CAAC,QAAQ,CAAC;;ICP3C,MAAM,SAAS,GAAG,kBAAkB,CAAC,KAAK,CAAC;IAC3C,MAAM,GAAG,GAAG,SAAS,GAAG,EAAE,UAAU,EAAE;IAC7C,IAAI,OAAO,SAAS,CAAC,EAAE,GAAG,EAAE,GAAG,UAAU,EAAE,CAAC;IAC5C,CAAC;;IAED;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACO,MAAM,QAAQ,GAAG,SAAS,GAAG,EAAE,YAAY,EAAE,UAAU,EAAE,QAAQ,EAAE;IAC1E,IAAI,MAAM,KAAK,GAAG,GAAG,CAAC,YAAY,IAAI,GAAG,EAAE,UAAU,CAAC;IACtD,IAAI,MAAM,GAAG,GAAG,IAAI,KAAK,EAAE;IAC3B,IAAI,GAAG,CAAC,MAAM,GAAG,MAAM;IACvB,QAAQ,SAAS,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC;IAC/D,QAAQ,KAAK,CAAC,GAAG,GAAG,GAAG;IACvB,KAAK;IACL,IAAI,GAAG,CAAC,OAAO,GAAG,MAAM;IACxB,QAAQ,SAAS,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC,IAAI,mBAAmB,CAAC,iBAAiB,CAAC,CAAC;IAC9F,KAAK;IACL,IAAI,GAAG,SAAS,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE;IACpC,QAAQ,GAAG,CAAC,SAAS,CAAC,MAAM,IAAI;IAChC,YAAY,GAAG,CAAC,GAAG,GAAG,MAAM;IAC5B,SAAS,CAAC;IACV;IACA,IAAI,GAAG,CAAC,GAAG,GAAG,GAAG;IACjB,IAAI,OAAO,KAAK;IAChB,CAAC;;IAED;IACA;IACA;IACA;IACA;IACA;IACO,MAAM,OAAO,GAAG,SAAS,GAAG,EAAE,UAAU,EAAE;IACjD,IAAI,OAAO,GAAG,CAAC,GAAG,EAAE,EAAE,GAAG,UAAU,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;IACvD,CAAC;;ICzCM,MAAM,OAAO,GAAG,kBAAkB,CAAC,SAAS,CAAC;IAC7C,MAAM,OAAO,GAAG,kBAAkB,CAAC,SAAS,CAAC;IAC7C,MAAM,MAAM,GAAG,kBAAkB,CAAC,QAAQ,CAAC;IAC3C,MAAM,IAAI,GAAG,kBAAkB,CAAC,MAAM,CAAC;;ICJvC,MAAM,WAAW,GAAG,kBAAkB,CAAC,IAAI,CAAC;IAC5C,MAAM,aAAa,GAAG,kBAAkB,CAAC,IAAI,CAAC;IAC9C,MAAM,QAAQ,GAAG,kBAAkB,CAAC,IAAI,CAAC;;IAEzC,MAAM,EAAE,GAAG,QAAQ;IACnB,MAAM,EAAE,GAAG,WAAW;IACtB,MAAM,EAAE,GAAG,aAAa;;ICNxB,MAAM,KAAK,GAAG,kBAAkB,CAAC,OAAO,CAAC;IACzC,MAAM,KAAK,GAAG,kBAAkB,CAAC,OAAO,CAAC;IACzC,MAAM,MAAM,GAAG,kBAAkB,CAAC,QAAQ,CAAC;IAC3C,MAAM,KAAK,GAAG,kBAAkB,CAAC,OAAO,CAAC;IACzC,MAAM,MAAM,GAAG,kBAAkB,CAAC,QAAQ,CAAC;IAC3C,MAAM,GAAG,GAAG,kBAAkB,CAAC,KAAK,CAAC;;ICLrC,MAAM,IAAI,GAAG,kBAAkB,CAAC,MAAM,CAAC;IACvC,MAAM,IAAI,GAAG,kBAAkB,CAAC,MAAM,CAAC;IACvC,MAAM,OAAO,GAAG,kBAAkB,CAAC,SAAS,CAAC;IAC7C,MAAM,GAAG,GAAG,kBAAkB,CAAC,KAAK,CAAC;IACrC,MAAM,IAAI,GAAG,kBAAkB,CAAC,MAAM,CAAC;IACvC,MAAM,GAAG,GAAG,kBAAkB,CAAC,KAAK,CAAC;IACrC,MAAM,GAAG,GAAG,kBAAkB,CAAC,KAAK,CAAC;;ICNrC,MAAM,OAAO,GAAG,kBAAkB,CAAC,SAAS,CAAC;IAC7C,MAAM,KAAK,GAAG,kBAAkB,CAAC,OAAO,CAAC;IACzC,MAAM,KAAK,GAAG,kBAAkB,CAAC,OAAO,CAAC;IACzC,MAAM,KAAK,GAAG,kBAAkB,CAAC,OAAO,CAAC;IACzC,MAAM,KAAK,GAAG,kBAAkB,CAAC,OAAO,CAAC;IACzC,MAAM,EAAE,GAAG,kBAAkB,CAAC,IAAI,CAAC;IACnC,MAAM,IAAI,GAAG,EAAE;IACf,MAAM,EAAE,GAAG,kBAAkB,CAAC,IAAI,CAAC;IACnC,MAAM,SAAS,GAAG,EAAE;IACpB,MAAM,SAAS,GAAG,EAAE;IACpB,MAAM,EAAE,GAAG,kBAAkB,CAAC,IAAI,CAAC;IACnC,MAAM,SAAS,GAAG,EAAE;;ICIpB,MAAM,QAAQ,GAAG,kBAAkB,CAAC,EAAE,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ICfvC,MAAM,kBAAkB,GAAG;;IAElC,CAAC;;IAED;IACA;IACA;IACA;IACA;IACA;IACA;IACO,SAAS,KAAK,CAAC,KAAK,EAAE,UAAU,EAAE,QAAQ,GAAG,EAAE,EAAE;;IAExD,IAAI,KAAK,GAAG,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC;;IAEhC,IAAI,IAAI,QAAQ,GAAG,IAAI;IACvB,IAAI,IAAI,KAAK,GAAG,QAAQ,CAAC,IAAI,IAAI,IAAI;;IAErC,IAAI,MAAM,YAAY,GAAG,QAAQ,CAAC,WAAW,IAAI,EAAE;IACnD,IAAI,MAAM,cAAc,GAAG,QAAQ,CAAC,aAAa,IAAI,KAAK;IAC1D,IAAI,MAAM,iBAAiB,GAAG,QAAQ,CAAC,IAAI,IAAI,EAAE;;IAEjD,IAAI,MAAM,OAAO,GAAG,EAAE;IACtB,IAAI,MAAM,YAAY,GAAG,EAAE;;;IAG3B,IAAI,MAAM,eAAe,GAAG,CAAC,WAAW,KAAK;IAC7C,QAAQ,GAAG,CAAC,WAAW,EAAE,OAAO,IAAI;IACpC,QAAQ,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC;;IAEnD,QAAQ,IAAI,OAAO,GAAG,iBAAiB,CAAC,IAAI,CAAC;IAC7C,QAAQ,GAAG,CAAC,OAAO,IAAI,IAAI,EAAE;IAC7B,YAAY,OAAO,GAAG,kBAAkB,CAAC,IAAI,CAAC;IAC9C;IACA,QAAQ,GAAG,CAAC,OAAO,EAAE;IACrB,YAAY,OAAO,GAAG,OAAO;IAC7B;;IAEA,QAAQ,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC;;IAE7C,QAAQ,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE;IAChD,KAAK;;IAEL,IAAI,MAAM,UAAU,GAAG,MAAM;IAC7B,QAAQ,GAAG,QAAQ,EAAE;IACrB,YAAY,OAAO,QAAQ;IAC3B;;IAEA,QAAQ,MAAM,kBAAkB,GAAG,KAAK,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK;IACtF,YAAY,MAAM,WAAW,GAAG,eAAe,CAAC,UAAU,CAAC;IAC3D,YAAY,GAAG,CAAC,WAAW,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,OAAO,KAAK;IACjE,YAAY,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC,OAAO;IAC3D,YAAY,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;IAC/C,YAAY,OAAO,WAAW,CAAC,OAAO;IACtC,SAAS,CAAC;;IAEV,QAAQ,QAAQ,GAAG,IAAI,MAAM,CAAC,GAAG,CAAC,kBAAkB,CAAC,GAAG,CAAC;IACzD,QAAQ,OAAO,QAAQ;IACvB,KAAK;;IAEL,IAAI,IAAI,CAAC,IAAI,GAAG,MAAM,KAAK;IAC3B,IAAI,IAAI,CAAC,SAAS,GAAG,MAAM,UAAU;IACrC,IAAI,IAAI,CAAC,WAAW,GAAG,MAAM,YAAY;IACzC,IAAI,IAAI,CAAC,aAAa,GAAG,MAAM,cAAc;IAC7C,IAAI,IAAI,CAAC,IAAI,GAAG,MAAM,KAAK;;IAE3B;IACA;IACA;IACA;IACA,IAAI,IAAI,CAAC,KAAK,GAAG,SAAS,IAAI,EAAE;IAChC,QAAQ,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC;IAClC,QAAQ,MAAM,KAAK,GAAG,UAAU,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC;IAC7C,QAAQ,GAAG,CAAC,KAAK,EAAE,OAAO,KAAK;IAC/B,QAAQ,MAAM,MAAM,GAAG,EAAE;;IAEzB,QAAQ,UAAU,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,KAAK,KAAK;IAC1D,YAAY,GAAG,KAAK,GAAG,CAAC,EAAE;IAC1B,YAAY,MAAM,IAAI,GAAG,YAAY,CAAC,KAAK,GAAG,CAAC,CAAC;IAChD,YAAY,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK;IAChC,SAAS,CAAC;;IAEV,QAAQ,OAAO,MAAM;IACrB,KAAK;IACL;IACA;IACA;IACA,IAAI,IAAI,CAAC,GAAG,GAAG,SAAS,OAAO,EAAE;IACjC,QAAQ,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK;IACxE,YAAY,MAAM,WAAW,GAAG,eAAe,CAAC,UAAU,CAAC;IAC3D,YAAY,GAAG,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE;IACnE,gBAAgB,OAAO,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC;IACvD;IACA,YAAY,MAAM,IAAI,KAAK,CAAC,CAAC,mBAAmB,EAAE,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACtE,SAAS,CAAC;;IAEV,QAAQ,MAAM,WAAW,GAAG,CAAC,OAAO,OAAO,CAAC,KAAK,KAAK,QAAQ,IAAI,CAAC,IAAI,eAAe,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,QAAQ,EAAE,GAAG,IAAI;IACxH,QAAQ,OAAO,CAAC,OAAO,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,GAAG,EAAE,KAAK,WAAW,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,GAAG,IAAI,CAAC;IAC3G;IACA;;ICnGe,MAAM,WAAW,SAAS,KAAK,CAAC;IAC/C,IAAI,WAAW,CAAC,OAAO,EAAE,OAAO,EAAE;IAClC,QAAQ,KAAK,CAAC,OAAO,CAAC;IACtB,QAAQ,IAAI,CAAC,OAAO,GAAG,OAAO;IAC9B;;IAEA;;ICNO,MAAM,gBAAgB,GAAG;IAChC;IACA;IACA;IACA;IACA;IACA;IACA,IAAI,QAAQ,EAAE,CAAC,UAAU,EAAE,IAAI,KAAK;IACpC,QAAQ,MAAM,QAAQ,GAAG,EAAE;IAC3B,QAAQ,UAAU,CAAC,OAAO,CAAC,KAAK,IAAI;IACpC,YAAY,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAClD,SAAS,CAAC;IACV,QAAQ,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IACtC,QAAQ,OAAO,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC;IACjC,KAAK;IACL;IACA;IACA;IACA;IACA;IACA;IACA,IAAI,eAAe,EAAE,CAAC,UAAU,EAAE,WAAW,KAAK;IAClD,QAAQ,MAAM,eAAe,GAAG,EAAE;IAClC,QAAQ,UAAU,CAAC,OAAO,CAAC,KAAK,IAAI;IACpC,YAAY,GAAG,KAAK,CAAC,OAAO,CAAC,WAAW,EAAE;IAC1C,gBAAgB,eAAe,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC;IAClE;IACA,SAAS,CAAC;IACV,QAAQ,GAAG,WAAW,EAAE;IACxB,YAAY,eAAe,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC;IAChD;IACA,QAAQ,OAAO,eAAe;IAC9B,KAAK;IACL;IACA;IACA;IACA;IACA;IACA;IACA,IAAI,QAAQ,EAAE,CAAC,UAAU,EAAE,IAAI,KAAK;IACpC,QAAQ,MAAM,QAAQ,GAAG,EAAE;IAC3B,QAAQ,UAAU,CAAC,OAAO,CAAC,KAAK,IAAI;IACpC,YAAY,GAAG,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE;IACpC,gBAAgB,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;IACjD;IACA,SAAS,CAAC;IACV,QAAQ,IAAI,IAAI,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;IACnC,QAAQ,OAAO,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC;IACjC;IACA,CAAC;;ICjDc,SAAS,UAAU,GAAG;;IAErC,IAAI,MAAM,QAAQ,GAAG,EAAE;IACvB,IAAI,IAAI,aAAa,GAAG,CAAC;;IAEzB;IACA;IACA;IACA;IACA,IAAI,MAAM,EAAE,GAAG,CAAC,KAAK,KAAK;IAC1B,QAAQ,MAAM,KAAK,GAAG,aAAa,GAAG,KAAK;IAC3C,QAAQ,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;IAC7B,YAAY;IACZ;IACA,QAAQ,aAAa,GAAG,KAAK;IAC7B,QAAQ,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,QAAQ,CAAC,KAAK,CAAC;IAC9D,QAAQ,OAAO,CAAC,IAAI,CAAC;IACrB,KAAK;;IAEL,IAAI,MAAM,SAAS,GAAG,WAAW;IACjC,QAAQ,OAAO,aAAa,GAAG,CAAC;IAChC,KAAK;IACL,IAAI,MAAM,YAAY,GAAG,WAAW;IACpC,QAAQ,OAAO,aAAa,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC;IAClD,KAAK;;IAEL;IACA;IACA;IACA;IACA,IAAI,MAAM,OAAO,GAAG,CAAC,IAAI,KAAK;IAC9B,QAAQ,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;IAC/F;;IAEA,IAAI,MAAM,cAAc,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;;IAE9D;IACA;IACA;IACA,IAAI,IAAI,CAAC,IAAI,GAAG,SAAS,MAAM,EAAE;IACjC,QAAQ,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;IACnE,QAAQ,GAAG,IAAI,KAAK,cAAc,EAAE,EAAE;IACtC,YAAY;IACZ;IACA,QAAQ,QAAQ,CAAC,MAAM,CAAC,aAAa,GAAG,CAAC,CAAC;IAC1C,QAAQ,QAAQ,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;IACrD,QAAQ,aAAa,EAAE;IACvB,QAAQ,OAAO,CAAC,IAAI,CAAC;IACrB,KAAK;IACL;IACA;IACA;IACA;IACA,IAAI,IAAI,CAAC,OAAO,GAAG,SAAS,MAAM,EAAE;IACpC,QAAQ,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;IACnE,QAAQ,GAAG,IAAI,KAAK,cAAc,EAAE,EAAE;IACtC,YAAY;IACZ;IACA,QAAQ,QAAQ,CAAC,aAAa,CAAC,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE;IAChE,KAAK;IACL,IAAI,IAAI,CAAC,OAAO,GAAG,WAAW;IAC9B,QAAQ,OAAO,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IACtC,KAAK;IACL,IAAI,IAAI,CAAC,IAAI,GAAG,WAAW;IAC3B,QAAQ,OAAO,SAAS,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;IACpC,KAAK;;IAEL;IACA;IACA;IACA,IAAI,IAAI,CAAC,IAAI,GAAG,SAAS,WAAW,EAAE;IACtC,QAAQ,MAAM,CAAC,gBAAgB,CAAC,YAAY,EAAE,MAAM;IACpD,YAAY,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC;IACjF,YAAY,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC;IAC9D,SAAS,CAAC;IACV,QAAQ,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,IAAI,cAAc,EAAE,CAAC;IAC5F,QAAQ,QAAQ,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;IACrD,QAAQ,aAAa,GAAG,CAAC;IACzB,QAAQ,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC;IAC1D;IACA;;IC/Ee,SAAS,aAAa,GAAG;;IAExC;IACA;IACA;IACA;IACA,IAAI,IAAI,CAAC,IAAI,GAAG,SAAS,MAAM,EAAE;IACjC,QAAQ,IAAI;IACZ,YAAY,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;IACvE,YAAY,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,EAAE;IAC3E,gBAAgB;IAChB;IACA,YAAY,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,KAAK,CAAC,IAAI,EAAE,IAAI,IAAI,GAAG,IAAI,CAAC;IACtG,YAAY,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC;IAC9D,SAAS,CAAC,OAAO,CAAC,EAAE;IACpB,YAAYD,cAAY,CAAC,KAAK,CAAC,eAAe,EAAE,oBAAoB,EAAE,CAAC,CAAC;IACxE;IACA,KAAK;IACL;IACA;IACA;IACA;IACA,IAAI,IAAI,CAAC,OAAO,GAAG,SAAS,MAAM,EAAE;IACpC,QAAQ,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;IAC5D,QAAQ,IAAI;IACZ,YAAY,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,KAAK,CAAC,IAAI,EAAE,IAAI,IAAI,GAAG,IAAI,CAAC;IACzG,YAAY,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,CAAC;IAC3D,SAAS,CAAC,MAAM,CAAC,EAAE;IACnB,YAAYA,cAAY,CAAC,KAAK,CAAC,eAAe,EAAE,uBAAuB,EAAE,CAAC,CAAC;IAC3E;IACA,KAAK;IACL,IAAI,IAAI,CAAC,OAAO,GAAG,WAAW;IAC9B,QAAQ,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE;IAChC,KAAK;;IAEL,IAAI,IAAI,CAAC,IAAI,GAAG,WAAW;IAC3B,QAAQ,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE;IAC7B,KAAK;;IAEL;IACA;IACA;IACA,IAAI,IAAI,CAAC,IAAI,GAAG,SAAS,WAAW,EAAE;IACtC,QAAQ,MAAM,CAAC,gBAAgB,CAAC,UAAU,EAAE,CAAC,KAAK,KAAK;IACvD,YAAY,IAAI;IAChB,gBAAgB,GAAG,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE;IACtD,oBAAoB;IACpB;IACA,gBAAgB,MAAM,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI;IAClD,gBAAgB,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC;IAC5E,gBAAgB,GAAG,CAAC,KAAK,EAAE;IAC3B,oBAAoB;IACpB;IACA,gBAAgB,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC;IAClE,aAAa,CAAC,MAAM,CAAC,EAAE;IACvB,gBAAgBA,cAAY,CAAC,KAAK,CAAC,eAAe,EAAE,yBAAyB,EAAE,CAAC,CAAC;IACjF;IACA,SAAS,CAAC;IACV,QAAQ,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,KAAK,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC7H,QAAQ,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC;IAC1D;;IAEA;;IChEe,SAAS,YAAY,GAAG;IACvC,IAAI,MAAM,QAAQ,GAAG,EAAE;IACvB,IAAI,IAAI,aAAa,GAAG,CAAC;;IAEzB;IACA;IACA;IACA;IACA,IAAI,MAAM,EAAE,GAAG,CAAC,KAAK,KAAK;IAC1B,QAAQ,MAAM,KAAK,GAAG,aAAa,GAAG,KAAK;IAC3C,QAAQ,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;IAC7B,YAAY;IACZ;IACA,QAAQ,aAAa,GAAG,KAAK;IAC7B,QAAQ,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,QAAQ,CAAC,KAAK,CAAC;IAC9D,QAAQ,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC;IAC1D,KAAK;;IAEL,IAAI,MAAM,SAAS,GAAG,WAAW;IACjC,QAAQ,OAAO,aAAa,GAAG,CAAC;IAChC,KAAK;IACL,IAAI,MAAM,YAAY,GAAG,WAAW;IACpC,QAAQ,OAAO,aAAa,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC;IAClD,KAAK;;IAEL;IACA;IACA;IACA;IACA,IAAI,IAAI,CAAC,IAAI,GAAG,SAAS,MAAM,EAAE;IACjC,QAAQ,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;IAClE,QAAQ,GAAG,QAAQ,CAAC,aAAa,CAAC,IAAI,QAAQ,CAAC,aAAa,CAAC,CAAC,IAAI,KAAK,IAAI,EAAE;IAC7E,YAAY;IACZ;IACA,QAAQ,QAAQ,CAAC,MAAM,CAAC,aAAa,GAAG,CAAC,CAAC;IAC1C,QAAQ,QAAQ,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;IACrD,QAAQ,aAAa,EAAE;IACvB,QAAQ,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC;IAC1D,KAAK;;IAEL;IACA;IACA;IACA;IACA,IAAI,IAAI,CAAC,OAAO,GAAG,SAAS,MAAM,EAAE;IACpC,QAAQ,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;IAClE,QAAQ,QAAQ,CAAC,aAAa,CAAC,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE;IAChE,QAAQ,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC;IAC1D,KAAK;;IAEL,IAAI,IAAI,CAAC,OAAO,GAAG,WAAW;IAC9B,QAAQ,OAAO,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IACtC,KAAK;;IAEL,IAAI,IAAI,CAAC,IAAI,GAAG,WAAW;IAC3B,QAAQ,OAAO,SAAS,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;IACpC,KAAK;;IAEL;IACA;IACA;IACA,IAAI,IAAI,CAAC,IAAI,GAAG,SAAS,WAAW,EAAE;IACtC,QAAQ,MAAM,WAAW,GAAG,WAAW,KAAK,MAAM,CAAC,QAAQ,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;IAC9F,QAAQ,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC;IACxE,QAAQ,QAAQ,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;IACrD,QAAQ,aAAa,GAAG,CAAC;;IAEzB,QAAQ,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC;IAC1D;IACA;;ICtEA;IACA;IACA;IACA;IACA;IACO,SAAS,eAAe,CAAC,MAAM,EAAE,SAAS,EAAE;;IAEnD,IAAI,MAAM,MAAM,GAAG,IAAI,GAAG,EAAE;;IAE5B,IAAI,MAAM,eAAe,GAAG,SAAS,IAAI,EAAE;IAC3C,QAAQ,SAAS,CAAC,SAAS,GAAG,EAAE;IAChC,QAAQ,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC;IACnC,KAAK;;IAEL,IAAI,MAAM,wBAAwB,GAAG,SAAS,KAAK,EAAE;IACrD,QAAQ,GAAG,CAAC,KAAK,CAAC,KAAK,EAAE;IACzB,YAAY;IACZ;IACA,QAAQ,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,KAAK;IACpD,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;IAC7B,YAAY,MAAM,SAAS,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC;IAC9C,YAAY,eAAe,CAAC,SAAS,CAAC;IACtC,YAAY;IACZ;IACA,QAAQ,MAAM,SAAS,GAAG,KAAK,CAAC,SAAS,EAAE;IAC3C,QAAQ,MAAM,IAAI,GAAG,SAAS,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;IACjD,QAAQ,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC;IAC9B,QAAQ,eAAe,CAAC,IAAI,CAAC;IAC7B,KAAK;;IAEL,IAAI,MAAM,CAAC,SAAS,CAAC,wBAAwB,CAAC;;IAE9C,IAAI,wBAAwB,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;IACnD,IAAI,OAAO,SAAS;IACpB;;ICvBO,MAAM,mBAAmB,GAAG,SAAS;;IAE5C;IACA;IACA;IACA;IACA;IACe,SAAS,MAAM,CAAC,QAAQ,GAAG,EAAE,EAAE;;IAE9C;IACA,IAAI,MAAM,OAAO,GAAG,EAAE;IACtB;IACA,IAAI,MAAM,aAAa,GAAG,EAAE;IAC5B,IAAI,MAAM,UAAU,GAAG,EAAE;IACzB,IAAI,MAAM,UAAU,GAAG,EAAE;IACzB,IAAI,MAAM,aAAa,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE;;IAE5F,IAAI,GAAG,QAAQ,CAAC,IAAI,KAAK,MAAM,EAAE;IACjC,QAAQ,UAAU,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC;IAClC,KAAK,MAAM,GAAG,QAAQ,CAAC,IAAI,KAAK,SAAS,EAAE;IAC3C,QAAQ,aAAa,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC;IACrC,KAAK,MAAM,GAAG,QAAQ,CAAC,IAAI,KAAK,QAAQ,EAAE;IAC1C,QAAQ,YAAY,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC;IACpC,KAAK,MAAM;IACX,QAAQ,MAAM,IAAI,WAAW,CAAC,sBAAsB,CAAC,QAAQ,CAAC,IAAI,CAAC;IACnE;;IAEA,IAAI,MAAM,OAAO,GAAG,SAAS,OAAO,EAAE,IAAI,EAAE;IAC5C,QAAQ,IAAI,MAAM,QAAQ,IAAI,UAAU,EAAE;IAC1C,YAAY,IAAI;IAChB,gBAAgB,QAAQ,CAAC,OAAO,CAAC;IACjC,gBAAgB,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC;IACrC,aAAa,CAAC,OAAO,CAAC,EAAE;IACxB,gBAAgBA,cAAY,CAAC,IAAI,CAAC,gBAAgB,EAAE,oBAAoB,EAAE,CAAC,CAAC;IAC5E;IACA;IACA;;IAEA,IAAI,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,GAAG,OAAO,CAAC;IACpC,IAAI,IAAI,CAAC,YAAY,GAAG,OAAO,EAAE,GAAG,aAAa,EAAE,CAAC;;IAEpD;IACA;IACA;IACA;IACA;IACA;IACA;IACA,IAAI,IAAI,CAAC,GAAG,GAAG,SAAS,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE;IAClD,QAAQ,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,gBAAgB,CAAC,QAAQ,CAAC,UAAU,EAAE,IAAI,CAAC,EAAE,SAAS,EAAE;IACxF,YAAY,GAAG,OAAO;IACtB,YAAY,WAAW,EAAE,gBAAgB,CAAC,eAAe,CAAC,UAAU,EAAE,OAAO,EAAE,WAAW,IAAI,EAAE,CAAC;IACjG,YAAY,IAAI,EAAE,OAAO,EAAE,IAAI,GAAG,gBAAgB,CAAC,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI;IAC5F,SAAS,CAAC;IACV,QAAQ,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;IAC3B,QAAQ,GAAG,KAAK,CAAC,IAAI,EAAE,EAAE;IACzB,YAAY,aAAa,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,GAAG,KAAK;IAC/C;IACA,QAAQ,OAAO,IAAI;IACnB,KAAK;;IAEL;IACA;IACA;IACA;IACA;IACA;IACA;IACA,IAAI,IAAI,CAAC,KAAK,GAAG,SAAS,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE;IACrD,QAAQ,GAAG,CAAC,SAAS,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE;IAC5C,YAAY,MAAM,IAAI,WAAW,CAAC,6BAA6B,CAAC;IAChE;IACA,QAAQ,UAAU,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC1C,QAAQ,QAAQ,EAAE;IAClB,QAAQ,UAAU,CAAC,GAAG,EAAE;IACxB,QAAQ,OAAO,IAAI;IACnB,KAAK;;IAEL;IACA;IACA;IACA;IACA;IACA;IACA;IACA,IAAI,IAAI,CAAC,WAAW,GAAG,SAAS,IAAI,EAAE,MAAM,GAAG,EAAE,EAAE,KAAK,GAAG,EAAE,EAAE;IAC/D,QAAQ,MAAM,KAAK,GAAG,aAAa,CAAC,IAAI,CAAC;IACzC,QAAQ,GAAG,CAAC,KAAK,EAAE;IACnB,YAAY,MAAM,IAAI,WAAW,CAAC,CAAC,0BAA0B,EAAE,IAAI,CAAC,CAAC,CAAC;IACtE;IACA,QAAQ,OAAO,KAAK,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;IAC3C,KAAK;;IAEL;IACA;IACA;IACA;IACA;IACA,IAAI,IAAI,CAAC,OAAO,GAAG,SAAS,MAAM,EAAE;IACpC,QAAQ,GAAG,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE;IACrC,YAAY,MAAM,KAAK,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC;IACpD,YAAY,GAAG,CAAC,KAAK,EAAE;IACvB,gBAAgB,MAAM,IAAI,WAAW,CAAC,CAAC,0BAA0B,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;IACjF;IACA,YAAY,OAAO;IACnB,gBAAgB,KAAK;IACrB,gBAAgB,MAAM,EAAE,MAAM,CAAC,MAAM;IACrC,gBAAgB,KAAK,EAAE,MAAM,CAAC,KAAK;IACnC,gBAAgB,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,GAAG,MAAM,EAAE;IAC7C,aAAa;IACb;;IAEA,QAAQ,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC;IACrD,QAAQ,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC;IAC3C,QAAQ,IAAI,UAAU,GAAG,IAAI,EAAE,MAAM;;IAErC,QAAQ,IAAI,MAAM,KAAK,IAAI,OAAO,EAAE;IACpC,YAAY,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC;IACtC,YAAY,GAAG,MAAM,EAAE;IACvB,gBAAgB,UAAU,GAAG,KAAK;IAClC,gBAAgB;IAChB;IACA;IACA,QAAQ,GAAG,CAAC,UAAU,EAAE;IACxB,YAAY,MAAM,IAAI,WAAW,CAAC,CAAC,yBAAyB,EAAE,OAAO,CAAC,CAAC,CAAC;IACxE;IACA,QAAQ,MAAM,WAAW,GAAG,EAAE;IAC9B,QAAQ,GAAG,QAAQ,EAAE;IACrB,YAAY,MAAM,OAAO,GAAG,IAAI,eAAe,CAAC,QAAQ,CAAC,CAAC,OAAO,EAAE;IACnE,YAAY,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,OAAO,EAAE;IAChD,gBAAgB,WAAW,CAAC,GAAG,CAAC,GAAG,KAAK;IACxC;IACA;;IAEA,QAAQ,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,EAAE;IAC9E,KAAK;;IAEL;IACA;IACA;IACA;IACA;IACA,IAAI,IAAI,CAAC,SAAS,GAAG,SAAS,QAAQ,EAAE;IACxC,QAAQ,GAAG,CAAC,SAAS,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE;IAC5C,YAAY,MAAM,IAAI,WAAW,CAAC,6BAA6B,CAAC;IAChE;IACA,QAAQ,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC;IACjC,QAAQ,OAAO,MAAM;IACrB,YAAY,UAAU,CAAC,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IAC9D,SAAS;IACT,KAAK;;IAEL;IACA;IACA;IACA;IACA;IACA;IACA;IACA,IAAI,IAAI,CAAC,iBAAiB,GAAG,SAAS,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE;IAClE,QAAQ,aAAa,CAAC,KAAK,GAAG,KAAK;IACnC,QAAQ,aAAa,CAAC,MAAM,GAAG,MAAM;IACrC,QAAQ,aAAa,CAAC,KAAK,GAAG,KAAK;IACnC,QAAQ,aAAa,CAAC,IAAI,GAAG,IAAI;;IAEjC,QAAQ,MAAM,WAAW,GAAG,CAAC,GAAG,KAAK,CAAC,WAAW,EAAE,EAAE,OAAO,CAAC;IAC7D,QAAQ,IAAI,YAAY,GAAG,CAAC;IAC5B,QAAQ,MAAM,OAAO,GAAG,EAAE,GAAG,aAAa,EAAE;;IAE5C,QAAQ,MAAM,IAAI,GAAG,CAAC,eAAe,KAAK;IAC1C,YAAY,YAAY,EAAE;IAC1B,YAAY,GAAG,YAAY,IAAI,WAAW,CAAC,MAAM,EAAE;IACnD,gBAAgB;IAChB;IACA,YAAY,OAAO,WAAW,CAAC,YAAY,CAAC,CAAC,eAAe,IAAI,OAAO,EAAE,IAAI,CAAC;IAC9E,SAAS;IACT,QAAQ,OAAO,WAAW,CAAC,YAAY,CAAC,CAAC,OAAO,EAAE,IAAI,CAAC;IACvD,KAAK;;IAEL;;IAEA,MAAM,CAAC,OAAO,GAAG,EAAE;;IAEnB;IACA;IACA;IACA;IACA;IACA;IACA,MAAM,CAAC,MAAM,GAAG,SAAS,OAAO,EAAE,QAAQ,EAAE;IAC5C,IAAI,GAAG,CAAC,SAAS,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE;IACxC,QAAQA,cAAY,CAAC,KAAK,CAAC,QAAQ,EAAE,6BAA6B,EAAE,CAAC,CAAC;IACtE,QAAQ,MAAM,IAAI,WAAW,CAAC,6BAA6B,CAAC;IAC5D;IACA,IAAI,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,OAAO,CAAC;IACtC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,IAAI,mBAAmB,CAAC,GAAG,MAAM;IAChE,IAAI,QAAQ,CAAC,MAAM,CAAC;;IAEpB,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;;IAE9B,IAAI,MAAM,CAAC,KAAK,GAAG,SAAS,SAAS,EAAE;IACvC,QAAQ,GAAG,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE;IAC1C,YAAY,MAAM,cAAc,GAAG,QAAQ,CAAC,aAAa,CAAC,SAAS,CAAC;IACpE,YAAY,GAAG,CAAC,cAAc,EAAE;IAChC,gBAAgB,MAAM,IAAI,WAAW,CAAC,CAAC,kCAAkC,EAAE,SAAS,CAAC,CAAC,CAAC;IACvF;IACA,YAAY,SAAS,GAAG,cAAc;IACtC,SAAS,MAAM,GAAG,CAAC,SAAS,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE;IACnD,YAAY,MAAM,IAAI,WAAW,CAAC,0CAA0C,CAAC;IAC7E;;IAEA,QAAQ,OAAO,eAAe,CAAC,MAAM,EAAE,SAAS,CAAC;IACjD,KAAK;;IAEL,IAAI,OAAO,MAAM;IACjB,CAAC;;IAED,MAAM,CAAC,GAAG,GAAG,SAAS,IAAI,EAAE;IAC5B,IAAI,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,IAAI,mBAAmB,CAAC;IAC9D,IAAI,GAAG,CAAC,MAAM,EAAE;IAChB,QAAQ,MAAM,IAAI,WAAW,CAAC,CAAC,2BAA2B,EAAE,IAAI,CAAC,CAAC,CAAC;IACnE;IACA,IAAI,OAAO,MAAM;IACjB,CAAC;;IAED,MAAM,CAAC,IAAI,GAAG,SAAS,MAAM,EAAE,IAAI,GAAG,IAAI,EAAE;IAC5C,IAAI,OAAO,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC;IACxC,CAAC;;IAED,MAAM,CAAC,OAAO,GAAG,SAAS,MAAM,EAAE,IAAI,GAAG,IAAI,EAAE;IAC/C,IAAI,OAAO,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC;IAC3C,CAAC;;IAED,MAAM,CAAC,OAAO,GAAG,SAAS,IAAI,GAAG,IAAI,EAAE;IACvC,IAAI,OAAO,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE;IACrC,CAAC;IACD,MAAM,CAAC,IAAI,GAAG,SAAS,IAAI,GAAG,IAAI,EAAE;IACpC,IAAI,OAAO,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE;IAClC,CAAC;;ICnPM,SAAS,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC;IACvC,IAAI,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,UAAU,EAAE,GAAG,OAAO;IAC/C,IAAI,MAAM,MAAM,GAAG,EAAE,IAAI,IAAI;IAC7B,IAAI,GAAG,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;IACnC,QAAQ,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,EAAE;IACnC,QAAQ,OAAOE,MAAU,CAAC,EAAE,GAAG,UAAU,EAAE,IAAI,EAAE,MAAM,CAAC,EAAE,QAAQ,CAAC,CAAC,EAAE,CAAC,cAAc,CAAC,MAAM;IAC5F,YAAY,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;IAC/B,SAAS,CAAC;IACV;IACA,IAAI,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,IAAI,mBAAmB;IAC3D,IAAI,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC;IACzC,IAAI,GAAG,CAAC,MAAM,EAAE;IAChB,QAAQ,MAAM,IAAI,WAAW,CAAC,oBAAoB,CAAC,UAAU,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC;IAC7F;IACA,IAAI,MAAM,GAAG,GAAG,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC;IAC5E,IAAI,OAAOA,MAAU,CAAC,EAAE,GAAG,UAAU,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,QAAQ,CAAC,CAAC,EAAE,CAAC,cAAc,CAAC,MAAM;IACtF,QAAQ,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC;IACxB,KAAK,CAAC;IACN;;IAEA,IAAI,CAAC,KAAK,GAAG,SAAS,UAAU,EAAE,QAAQ,CAAC;IAC3C,IAAI,OAAOA,MAAU,CAAC,EAAE,GAAG,UAAU,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACnE,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"native-document.dev.js","sources":["../src/utils/debug-manager.js","../src/data/MemoryManager.js","../src/errors/NativeDocumentError.js","../src/data/ObservableChecker.js","../src/data/ObservableItem.js","../src/utils/helpers.js","../src/wrappers/DocumentObserver.js","../src/utils/events.js","../src/wrappers/NDElement.js","../src/utils/validator.js","../src/elements/anchor.js","../src/wrappers/constants.js","../src/data/Observable.js","../src/wrappers/AttributesWrapper.js","../src/wrappers/ElementCreator.js","../src/wrappers/NdPrototype.js","../src/wrappers/HtmlElementWrapper.js","../src/errors/ArgTypesError.js","../src/utils/args-types.js","../src/utils/prototypes.js","../src/data/observable-helpers/array.js","../src/data/observable-helpers/batch.js","../src/data/observable-helpers/object.js","../src/data/observable-helpers/computed.js","../src/data/Store.js","../src/elements/control/for-each.js","../src/elements/control/for-each-array.js","../src/elements/control/show-if.js","../src/elements/control/switch.js","../src/elements/content-formatter.js","../src/elements/description-list.js","../src/elements/form.js","../src/elements/html5-semantics.js","../src/elements/img.js","../src/elements/interactive.js","../src/elements/list.js","../src/elements/medias.js","../src/elements/meta-data.js","../src/elements/table.js","../src/elements/index.js","../src/router/Route.js","../src/errors/RouterError.js","../src/router/RouteGroupHelper.js","../src/router/modes/HashRouter.js","../src/router/modes/HistoryRouter.js","../src/router/modes/MemoryRouter.js","../src/router/RouterComponent.js","../src/router/Router.js","../src/router/link.js"],"sourcesContent":["let DebugManager = {};\n\nif(process.env.NODE_ENV === 'development') {\n DebugManager = {\n enabled: false,\n\n enable() {\n this.enabled = true;\n console.log('๐Ÿ” NativeDocument Debug Mode enabled');\n },\n\n disable() {\n this.enabled = false;\n },\n\n log(category, message, data) {\n if (!this.enabled) return;\n console.group(`๐Ÿ” [${category}] ${message}`);\n if (data) console.log(data);\n console.trace();\n console.groupEnd();\n },\n\n warn(category, message, data) {\n if (!this.enabled) return;\n console.warn(`โš ๏ธ [${category}] ${message}`, data);\n },\n\n error(category, message, error) {\n console.error(`โŒ [${category}] ${message}`, error);\n }\n };\n\n}\nif(process.env.NODE_ENV === 'production') {\n DebugManager = {\n log() {},\n warn() {},\n error() {},\n disable() {}\n };\n}\nexport default DebugManager;","import DebugManager from \"../utils/debug-manager\";\nimport Validator from \"../utils/validator\";\n\n\nconst MemoryManager = (function() {\n\n let $nextObserverId = 0;\n const $observables = new Map();\n\n return {\n /**\n * Register an observable and return an id.\n *\n * @param {ObservableItem} observable\n * @param {Function} getListeners\n * @returns {number}\n */\n register(observable) {\n const id = ++$nextObserverId;\n $observables.set(id, new WeakRef(observable));\n return id;\n },\n unregister(id) {\n $observables.delete(id);\n },\n getObservableById(id) {\n return $observables.get(id)?.deref();\n },\n cleanup() {\n for (const [_, weakObservableRef] of $observables) {\n const observable = weakObservableRef.deref();\n if (observable) {\n observable.cleanup();\n }\n }\n $observables.clear();\n },\n /**\n * Clean observables that are not referenced anymore.\n * @param {number} threshold\n */\n cleanObservables(threshold) {\n if($observables.size < threshold) return;\n let cleanedCount = 0;\n for (const [id, weakObservableRef] of $observables) {\n if (!weakObservableRef.deref()) {\n $observables.delete(id);\n cleanedCount++;\n }\n }\n if (cleanedCount > 0) {\n DebugManager.log('Memory Auto Clean', `๐Ÿงน Cleaned ${cleanedCount} orphaned observables`);\n }\n }\n };\n}());\n\nexport default MemoryManager;","export default class NativeDocumentError extends Error {\n constructor(message, context = {}) {\n super(message);\n this.name = 'NativeDocumentError';\n this.context = context;\n this.timestamp = new Date().toISOString();\n }\n}","/**\n *\n * @param {ObservableItem} $observable\n * @param {Function} $checker\n * @class ObservableChecker\n */\nexport default function ObservableChecker($observable, $checker) {\n this.observable = $observable;\n this.checker = $checker;\n this.unSubscriptions = [];\n}\n\nObservableChecker.prototype.__$isObservableChecker = true;\n\nObservableChecker.prototype.subscribe = function(callback) {\n const unSubscribe = this.observable.subscribe((value) => {\n callback && callback(this.checker(value));\n });\n this.unSubscriptions.push(unSubscribe);\n return unSubscribe;\n};\n\nObservableChecker.prototype.check = function(callback) {\n return this.observable.check(() => callback(this.val()));\n}\n\nObservableChecker.prototype.val = function() {\n return this.checker && this.checker(this.observable.val());\n}\n\nObservableChecker.prototype.set = function(value) {\n return this.observable.set(value);\n};\n\nObservableChecker.prototype.trigger = function() {\n return this.observable.trigger();\n};\n\nObservableChecker.prototype.cleanup = function() {\n return this.observable.cleanup();\n};","import DebugManager from \"../utils/debug-manager\";\nimport MemoryManager from \"./MemoryManager\";\nimport NativeDocumentError from \"../errors/NativeDocumentError\";\nimport ObservableChecker from \"./ObservableChecker\";\nimport Validator from \"../utils/validator\";\n\n/**\n *\n * @param {*} value\n * @class ObservableItem\n */\nexport default function ObservableItem(value) {\n this.$previousValue = value;\n this.$currentValue = value;\n this.$isCleanedUp = false;\n\n this.$listeners = null;\n this.$watchers = null;\n\n this.$memoryId = null;\n}\n\nObject.defineProperty(ObservableItem.prototype, '$value', {\n get() {\n return this.$currentValue;\n },\n set(value) {\n this.set(value);\n },\n configurable: true,\n});\n\nObservableItem.prototype.__$isObservable = true;\n\nconst noneTrigger = function() {};\nObservableItem.prototype.triggerListeners = function(operations) {\n const $listeners = this.$listeners;\n const $previousValue = this.$previousValue;\n const $currentValue = this.$currentValue;\n\n operations = operations || {};\n if($listeners?.length) {\n for(let i = 0, length = $listeners.length; i < length; i++) {\n $listeners[i]($currentValue, $previousValue, operations);\n }\n }\n};\n\nObservableItem.prototype.triggerWatchers = function() {\n if(!this.$watchers) {\n return;\n }\n\n const $watchers = this.$watchers;\n const $previousValue = this.$previousValue;\n const $currentValue = this.$currentValue;\n\n if($watchers.has($currentValue)) {\n $watchers.get($currentValue).forEach(callback => {\n callback.set ? callback.set(true) : callback(true);\n });\n }\n if($watchers.has($previousValue)) {\n $watchers.get($previousValue).forEach(callback => {\n callback.set ? callback.set(false) : callback(false);\n });\n }\n};\n\nObservableItem.prototype.triggerAll = function(operations) {\n this.triggerListeners(operations);\n this.triggerWatchers();\n};\n\nObservableItem.prototype.assocTrigger = function() {\n if(this.$watchers?.size && this.$listeners?.length) {\n this.trigger = this.triggerAll;\n return;\n }\n if(this.$listeners?.length) {\n this.trigger = this.triggerListeners;\n return;\n }\n if(this.$watchers?.size) {\n this.trigger = this.triggerWatchers;\n return;\n }\n this.trigger = noneTrigger;\n}\nObservableItem.prototype.trigger = noneTrigger;\n\n/**\n * @param {*} data\n */\nObservableItem.prototype.set = function(data) {\n const newValue = (typeof data === 'function') ? data(this.$currentValue) : data;\n if(this.$currentValue === newValue) {\n return;\n }\n this.$previousValue = this.$currentValue;\n this.$currentValue = newValue;\n this.trigger();\n};\n\nObservableItem.prototype.val = function() {\n return this.$currentValue;\n};\n\nObservableItem.prototype.disconnectAll = function() {\n this.$listeners?.splice(0);\n this.$previousValue = null;\n this.$currentValue = null;\n if(this.$watchers) {\n for (const [_, watchValueList] of this.$watchers) {\n watchValueList.splice(0);\n }\n }\n this.$watchers?.clear();\n this.$listeners = null;\n this.$watchers = null;\n this.trigger = noneTrigger;\n}\nObservableItem.prototype.cleanup = function() {\n MemoryManager.unregister(this.$memoryId);\n this.disconnectAll();\n this.$isCleanedUp = true;\n delete this.$value;\n}\n\n/**\n *\n * @param {Function} callback\n * @returns {(function(): void)}\n */\nObservableItem.prototype.subscribe = function(callback) {\n this.$listeners = this.$listeners ?? [];\n if (this.$isCleanedUp) {\n DebugManager.warn('Observable subscription', 'โš ๏ธ Attempted to subscribe to a cleaned up observable.');\n return () => {};\n }\n if (typeof callback !== 'function') {\n throw new NativeDocumentError('Callback must be a function');\n }\n\n this.$listeners.push(callback);\n this.assocTrigger();\n return () => {\n this.unsubscribe(callback);\n this.assocTrigger();\n };\n};\n\nObservableItem.prototype.on = function(value, callback) {\n this.$watchers = this.$watchers ?? new Map();\n\n let watchValueList = this.$watchers.get(value);\n if(!watchValueList) {\n watchValueList = [];\n this.$watchers.set(value, watchValueList);\n }\n\n watchValueList.push(callback);\n this.assocTrigger();\n return () => {\n const index = watchValueList.indexOf(callback);\n watchValueList?.splice(index, 1);\n if(watchValueList.size === 0) {\n this.$watchers?.delete(value);\n watchValueList = null;\n }\n this.assocTrigger();\n };\n};\n\n/**\n * Unsubscribe from an observable.\n * @param {Function} callback\n */\nObservableItem.prototype.unsubscribe = function(callback) {\n const index = this.$listeners.indexOf(callback);\n if (index > -1) {\n this.$listeners.splice(index, 1);\n }\n this.assocTrigger();\n};\n\n/**\n * Create an Observable checker instance\n * @param callback\n * @returns {ObservableChecker}\n */\nObservableItem.prototype.check = function(callback) {\n return new ObservableChecker(this, callback)\n};\nObservableItem.prototype.get = ObservableItem.prototype.check;\n\nObservableItem.prototype.toString = function() {\n if(!this.$memoryId) {\n MemoryManager.register(this);\n }\n return '{{#ObItem::(' +this.$memoryId+ ')}}';\n}","import Validator from \"./validator\";\n\nconst invoke = function(fn, args, context) {\n if(context) {\n fn.apply(context, args);\n } else {\n fn(...args);\n }\n};\n/**\n *\n * @param {Function} fn\n * @param {number} delay\n * @param {{leading?:Boolean, trailing?:Boolean, debounce?:Boolean, check: Function}}options\n * @returns {(function(...[*]): void)|*}\n */\nexport const debounce = function(fn, delay, options = {}) {\n let timer = null;\n let lastArgs = null;\n\n return function(...args) {\n const context = options.context === true ? this : null;\n let scopeDelay = delay;\n if(options.check) {\n const response = options.check(...args);\n if(typeof response === 'number') {\n scopeDelay = response;\n }\n }\n lastArgs = args;\n\n // debounce mode: reset the timer for each call\n clearTimeout(timer);\n timer = setTimeout(() => invoke(fn, lastArgs, context), delay);\n }\n};\n\n\n/**\n *\n * @param {*} item\n * @param {string|null} defaultKey\n * @param {?Function} key\n * @returns {*}\n */\nexport const getKey = (item, defaultKey, key) => {\n if(Validator.isFunction(key)) return key(item, defaultKey);\n if(Validator.isObservable(item)) {\n const val = item.val();\n return (val && key) ? val[key] : defaultKey;\n }\n if(!Validator.isObject(item)) {\n return item;\n }\n return item[key] ?? defaultKey;\n};\n\nexport const trim = function(str, char) {\n return str.replace(new RegExp(`^[${char}]+|[${char}]+$`, 'g'), '');\n}","import {debounce} from \"../utils/helpers\";\n\nconst DocumentObserver = {\n mounted: new WeakMap(),\n mountedSupposedSize: 0,\n unmounted: new WeakMap(),\n unmountedSupposedSize: 0,\n observer: null,\n checkMutation: function(mutationsList) {\n let i = 0;\n for(const mutation of mutationsList) {\n if(DocumentObserver.mountedSupposedSize > 0 ) {\n for(const node of mutation.addedNodes) {\n const data = DocumentObserver.mounted.get(node);\n if(!data) {\n continue;\n }\n data.inDom = true;\n data.mounted && data.mounted(node);\n }\n }\n\n if(DocumentObserver.unmountedSupposedSize > 0 ) {\n for(const node of mutation.removedNodes) {\n const data = DocumentObserver.unmounted.get(node);\n if(!data) {\n continue;\n }\n\n data.inDom = false;\n if(data.unmounted && data.unmounted(node) === true) {\n data.disconnect();\n node.nd?.remove();\n }\n }\n }\n }\n },\n /**\n *\n * @param {HTMLElement} element\n * @param {boolean} inDom\n * @returns {{watch: (function(): Map<any, any>), disconnect: (function(): boolean), mounted: (function(*): Set<any>), unmounted: (function(*): Set<any>)}}\n */\n watch: function(element, inDom = false) {\n let data = {\n inDom,\n mounted: null,\n unmounted: null,\n disconnect: () => {\n DocumentObserver.mounted.delete(element);\n DocumentObserver.unmounted.delete(element);\n DocumentObserver.mountedSupposedSize--;\n DocumentObserver.unmountedSupposedSize--;\n data = null;\n }\n };\n\n return {\n disconnect: data.disconnect,\n mounted: (callback) => {\n data.mounted = callback;\n DocumentObserver.mounted.set(element, data);\n DocumentObserver.mountedSupposedSize++;\n },\n unmounted: (callback) => {\n data.unmounted = callback;\n DocumentObserver.unmounted.set(element, data);\n DocumentObserver.unmountedSupposedSize++;\n }\n };\n }\n};\n\nDocumentObserver.observer = new MutationObserver(DocumentObserver.checkMutation);\nDocumentObserver.observer.observe(document.body, {\n childList: true,\n subtree: true,\n});\nexport default DocumentObserver;","export const EVENTS = [\n \"Click\",\n \"DblClick\",\n \"MouseDown\",\n \"MouseEnter\",\n \"MouseLeave\",\n \"MouseMove\",\n \"MouseOut\",\n \"MouseOver\",\n \"MouseUp\",\n \"Wheel\",\n \"KeyDown\",\n \"KeyPress\",\n \"KeyUp\",\n \"Blur\",\n \"Change\",\n \"Focus\",\n \"Input\",\n \"Invalid\",\n \"Reset\",\n \"Search\",\n \"Select\",\n \"Submit\",\n \"Drag\",\n \"DragEnd\",\n \"DragEnter\",\n \"DragLeave\",\n \"DragOver\",\n \"DragStart\",\n \"Drop\",\n \"AfterPrint\",\n \"BeforePrint\",\n \"BeforeUnload\",\n \"Error\",\n \"HashChange\",\n \"Load\",\n \"Offline\",\n \"Online\",\n \"PageHide\",\n \"PageShow\",\n \"Resize\",\n \"Scroll\",\n \"Unload\",\n \"Abort\",\n \"CanPlay\",\n \"CanPlayThrough\",\n \"DurationChange\",\n \"Emptied\",\n \"Ended\",\n \"LoadedData\",\n \"LoadedMetadata\",\n \"LoadStart\",\n \"Pause\",\n \"Play\",\n \"Playing\",\n \"Progress\",\n \"RateChange\",\n \"Seeked\",\n \"Seeking\",\n \"Stalled\",\n \"Suspend\",\n \"TimeUpdate\",\n \"VolumeChange\",\n \"Waiting\"\n];","import DocumentObserver from \"./DocumentObserver\";\nimport { EVENTS } from \"../utils/events\";\n\nexport function NDElement(element) {\n this.$element = element;\n this.$observer = null;\n}\nNDElement.prototype.__$isNDElement = true;\n\nfor(const event of EVENTS) {\n const eventName = event.toLowerCase();\n NDElement.prototype['on'+event] = function(callback) {\n this.$element.addEventListener(eventName, callback);\n return this;\n };\n NDElement.prototype['onPrevent'+event] = function(callback) {\n this.$element.addEventListener(eventName, function(event) {\n event.preventDefault();\n callback(event);\n });\n return this;\n };\n NDElement.prototype['onStop'+event] = function(callback) {\n this.$element.addEventListener(eventName, function(event) {\n event.stopPropagation();\n callback(event);\n });\n return this;\n };\n NDElement.prototype['onPreventStop'+event] = function(callback) {\n this.$element.addEventListener(eventName, function(event) {\n event.stopPropagation();\n event.preventDefault();\n callback(event);\n });\n return this;\n };\n}\n\nNDElement.prototype.ref = function(target, name) {\n target[name] = this.$element;\n return this;\n};\n\nNDElement.prototype.unmountChildren = function() {\n let element = this.$element;\n for(let i = 0, length = element.children.length; i < length; i++) {\n let elementChildren = element.children[i];\n if(!elementChildren.$ndProx) {\n elementChildren.nd?.remove();\n }\n elementChildren = null;\n }\n element = null;\n return this;\n};\n\nNDElement.prototype.remove = function() {\n let element = this.$element;\n element.nd.unmountChildren();\n element.$ndProx = null;\n delete element.nd?.on?.prevent;\n delete element.nd?.on;\n delete element.nd;\n element = null;\n return this;\n};\n\nNDElement.prototype.lifecycle = function(states) {\n this.$observer = this.$observer || DocumentObserver.watch(this.$element);\n\n states.mounted && this.$observer.mounted(states.mounted);\n states.unmounted && this.$observer.unmounted(states.unmounted);\n return this;\n};\nNDElement.prototype.mounted = function(callback) {\n return this.lifecycle({ mounted: callback });\n};\n\nNDElement.prototype.unmounted = function(callback) {\n return this.lifecycle({ unmounted: callback });\n};\n\nNDElement.prototype.htmlElement = function() {\n return this.$element;\n};\n\nNDElement.prototype.node = NDElement.prototype.htmlElement;","import ObservableItem from \"../data/ObservableItem\";\nimport DebugManager from \"./debug-manager\";\nimport NativeDocumentError from \"../errors/NativeDocumentError\";\nimport ObservableChecker from \"../data/ObservableChecker\";\nimport {NDElement} from \"../wrappers/NDElement\";\n\nconst Validator = {\n isObservable(value) {\n return value instanceof ObservableItem || value instanceof ObservableChecker || value?.__$isObservable;\n },\n isProxy(value) {\n return value?.__isProxy__\n },\n isObservableChecker(value) {\n return value instanceof ObservableChecker || value?.__$isObservableChecker;\n },\n isArray(value) {\n return Array.isArray(value);\n },\n isString(value) {\n return typeof value === 'string';\n },\n isNumber(value) {\n return typeof value === 'number';\n },\n isBoolean(value) {\n return typeof value === 'boolean';\n },\n isFunction(value) {\n return typeof value === 'function';\n },\n isAsyncFunction(value) {\n return typeof value === 'function' && value.constructor.name === 'AsyncFunction';\n },\n isObject(value) {\n return typeof value === 'object';\n },\n isJson(value) {\n return typeof value === 'object' && value !== null && value.constructor.name === 'Object' && !Array.isArray(value);\n },\n isElement(value) {\n return value instanceof HTMLElement || value instanceof DocumentFragment || value instanceof Text;\n },\n isFragment(value) {\n return value instanceof DocumentFragment;\n },\n isStringOrObservable(value) {\n return this.isString(value) || this.isObservable(value);\n },\n isValidChild(child) {\n return child === null ||\n this.isElement(child) ||\n this.isObservable(child) ||\n this.isNDElement(child) ||\n ['string', 'number', 'boolean'].includes(typeof child);\n },\n isNDElement(child) {\n return child instanceof NDElement || child?.constructor?.__$isNDElement;\n },\n isValidChildren(children) {\n if (!Array.isArray(children)) {\n children = [children];\n }\n\n const invalid = children.filter(child => !this.isValidChild(child));\n return invalid.length === 0;\n },\n validateChildren(children) {\n if (!Array.isArray(children)) {\n children = [children];\n }\n\n const invalid = children.filter(child => !this.isValidChild(child));\n if (invalid.length > 0) {\n throw new NativeDocumentError(`Invalid children detected: ${invalid.map(i => typeof i).join(', ')}`);\n }\n\n return children;\n },\n /**\n * Check if the data contains observables.\n * @param {Array|Object} data\n * @returns {boolean}\n */\n containsObservables(data) {\n if(!data) {\n return false;\n }\n return Validator.isObject(data)\n && Object.values(data).some(value => Validator.isObservable(value));\n },\n /**\n * Check if the data contains an observable reference.\n * @param {string} data\n * @returns {boolean}\n */\n containsObservableReference(data) {\n if(!data || typeof data !== 'string') {\n return false;\n }\n return /\\{\\{#ObItem::\\([0-9]+\\)\\}\\}/.test(data);\n },\n validateAttributes(attributes) {\n if (!attributes || typeof attributes !== 'object') {\n return attributes;\n }\n\n const reserved = [];\n const foundReserved = Object.keys(attributes).filter(key => reserved.includes(key));\n\n if (foundReserved.length > 0) {\n DebugManager.warn('Validator', `Reserved attributes found: ${foundReserved.join(', ')}`);\n }\n\n return attributes;\n },\n\n validateEventCallback(callback) {\n if (typeof callback !== 'function') {\n throw new NativeDocumentError('Event callback must be a function');\n }\n }\n};\n\nexport default Validator;","import Validator from \"../utils/validator\";\nimport DebugManager from \"../utils/debug-manager\";\nimport {ElementCreator} from \"../wrappers/ElementCreator\";\n\n\nexport default function Anchor(name) {\n const element = document.createDocumentFragment();\n\n const anchorStart = document.createComment('Anchor Start : '+name);\n const anchorEnd = document.createComment('/ Anchor End '+name);\n\n element.appendChild(anchorStart);\n element.appendChild(anchorEnd);\n\n element.nativeInsertBefore = element.insertBefore;\n element.nativeAppendChild = element.appendChild;\n\n const insertBefore = function(parent, child, target) {\n if(parent === element) {\n parent.nativeInsertBefore(ElementCreator.getChild(child), target);\n return;\n }\n parent.insertBefore(ElementCreator.getChild(child), target);\n };\n\n element.appendElement = function(child, before = null) {\n if(anchorEnd.parentNode === element) {\n anchorEnd.parentNode.nativeInsertBefore(child, before || anchorEnd);\n return;\n }\n anchorEnd.parentNode?.insertBefore(child, before || anchorEnd);\n };\n\n element.appendChild = function(child, before = null) {\n const parent = anchorEnd.parentNode;\n if(!parent) {\n DebugManager.error('Anchor', 'Anchor : parent not found', child);\n return;\n }\n before = before ?? anchorEnd;\n if(Validator.isArray(child)) {\n const fragment = document.createDocumentFragment();\n for(let i = 0, length = child.length; i < length; i++) {\n fragment.appendChild(ElementCreator.getChild(child[i]));\n }\n insertBefore(parent, fragment, before);\n return element;\n }\n insertBefore(parent, child, before);\n };\n\n element.removeChildren = function() {\n const parent = anchorEnd.parentNode;\n if(parent === element) {\n return;\n }\n if(parent.firstChild === anchorStart && parent.lastChild === anchorEnd) {\n parent.replaceChildren(anchorStart, anchorEnd);\n return;\n }\n\n let itemToRemove = anchorStart.nextSibling, tempItem;\n const fragment = document.createDocumentFragment();\n while(itemToRemove && itemToRemove !== anchorEnd) {\n tempItem = itemToRemove.nextSibling;\n fragment.append(itemToRemove);\n itemToRemove = tempItem;\n }\n fragment.replaceChildren();\n }\n element.remove = function() {\n const parent = anchorEnd.parentNode;\n if(parent === element) {\n return;\n }\n let itemToRemove = anchorStart.nextSibling, tempItem;\n while(itemToRemove !== anchorEnd) {\n tempItem = itemToRemove.nextSibling;\n element.nativeAppendChild(itemToRemove);\n itemToRemove = tempItem;\n }\n };\n\n element.removeWithAnchors = function() {\n element.removeChildren();\n anchorStart.remove();\n anchorEnd.remove();\n };\n\n element.replaceContent = function(child) {\n const parent = anchorEnd.parentNode;\n if(!parent) {\n return;\n }\n if(parent.firstChild === anchorStart && parent.lastChild === anchorEnd) {\n parent.replaceChildren(anchorStart, child, anchorEnd);\n return;\n }\n element.removeChildren();\n parent.insertBefore(child, anchorEnd);\n };\n\n element.insertBefore = function(child, anchor = null) {\n element.appendChild(child, anchor);\n };\n\n element.clear = function() {\n element.remove();\n };\n\n element.endElement = function() {\n return anchorEnd;\n };\n element.startElement = function() {\n return anchorStart;\n };\n\n return element;\n};","\nexport const BOOLEAN_ATTRIBUTES = ['checked', 'selected', 'disabled', 'readonly', 'required', 'autofocus', 'multiple', 'autocomplete', 'hidden', 'contenteditable', 'spellcheck', 'translate', 'draggable', 'async', 'defer', 'autoplay', 'controls', 'loop', 'muted', 'download', 'reversed', 'open', 'default', 'formnovalidate', 'novalidate', 'scoped', 'itemscope', 'allowfullscreen', 'allowpaymentrequest', 'playsinline'];","import ObservableItem from './ObservableItem';\nimport Validator from \"../utils/validator\";\nimport MemoryManager from \"./MemoryManager\";\nimport NativeDocumentError from \"../errors/NativeDocumentError\";\nimport {debounce} from \"../utils/helpers.js\";\n\n/**\n *\n * @param {*} value\n * @returns {ObservableItem}\n * @constructor\n */\nexport function Observable(value) {\n return new ObservableItem(value);\n}\n\n/**\n *\n * @param id\n * @returns {ObservableItem|null}\n */\nObservable.getById = function(id) {\n const item = MemoryManager.getObservableById(parseInt(id));\n if(!item) {\n throw new NativeDocumentError('Observable.getById : No observable found with id ' + id);\n }\n return item;\n};\n\n/**\n *\n * @param {ObservableItem} observable\n */\nObservable.cleanup = function(observable) {\n observable.cleanup();\n};\n\n/**\n * Enable auto cleanup of observables.\n * @param {Boolean} enable\n * @param {{interval:Boolean, threshold:number}} options\n */\nObservable.autoCleanup = function(enable = false, options = {}) {\n if(!enable) {\n return;\n }\n const { interval = 60000, threshold = 100 } = options;\n\n window.addEventListener('beforeunload', () => {\n MemoryManager.cleanup();\n });\n\n setInterval(() => MemoryManager.cleanObservables(threshold), interval);\n};\n\n","import Validator from \"../utils/validator\";\nimport NativeDocumentError from \"../errors/NativeDocumentError\";\nimport {BOOLEAN_ATTRIBUTES} from \"./constants.js\";\nimport {Observable} from \"../data/Observable\";\n\n/**\n *\n * @param {HTMLElement} element\n * @param {Object} data\n */\nfunction bindClassAttribute(element, data) {\n for(let className in data) {\n const value = data[className];\n if(Validator.isObservable(value)) {\n element.classList.toggle(className, value.val());\n value.subscribe(newValue => element.classList.toggle(className, newValue));\n continue;\n }\n element.classList.toggle(className, value)\n }\n}\n\n/**\n *\n * @param {HTMLElement} element\n * @param {Object} data\n */\nfunction bindStyleAttribute(element, data) {\n for(let styleName in data) {\n const value = data[styleName];\n if(Validator.isObservable(value)) {\n element.style[styleName] = value.val();\n value.subscribe(newValue => {\n element.style[styleName] = newValue;\n });\n continue;\n }\n element.style[styleName] = value;\n }\n}\n\n/**\n *\n * @param {HTMLElement} element\n * @param {string} attributeName\n * @param {boolean|number|Observable} value\n */\nfunction bindBooleanAttribute(element, attributeName, value) {\n const defaultValue = Validator.isObservable(value) ? value.val() : value;\n if(Validator.isBoolean(defaultValue)) {\n element[attributeName] = defaultValue;\n }\n else {\n element[attributeName] = defaultValue === element.value;\n }\n if(Validator.isObservable(value)) {\n if(['checked'].includes(attributeName)) {\n element.addEventListener('input', () => {\n if(Validator.isBoolean(defaultValue)) {\n value.set(element[attributeName]);\n return;\n }\n value.set(element.value);\n });\n }\n value.subscribe(newValue => {\n if(Validator.isBoolean(newValue)) {\n element[attributeName] = newValue;\n return;\n }\n element[attributeName] = newValue === element.value;\n });\n }\n}\n\n\n/**\n *\n * @param {HTMLElement} element\n * @param {string} attributeName\n * @param {Observable} value\n */\nfunction bindAttributeWithObservable(element, attributeName, value) {\n const applyValue = (newValue) => {\n if(attributeName === 'value') {\n element.value = newValue;\n return;\n }\n element.setAttribute(attributeName, newValue);\n };\n applyValue(value.val());\n value.subscribe(applyValue);\n\n if(attributeName === 'value') {\n element.addEventListener('input', () => value.set(element.value));\n }\n}\n\n/**\n *\n * @param {HTMLElement} element\n * @param {Object} attributes\n */\nexport default function AttributesWrapper(element, attributes) {\n\n Validator.validateAttributes(attributes);\n\n if(!Validator.isObject(attributes)) {\n throw new NativeDocumentError('Attributes must be an object');\n }\n\n for(let key in attributes) {\n const attributeName = key.toLowerCase();\n let value = attributes[attributeName];\n if(Validator.isString(value) && Validator.isFunction(value.resolveObservableTemplate)) {\n value = value.resolveObservableTemplate();\n if(Validator.isString(value)) {\n element.setAttribute(attributeName, value);\n continue;\n }\n const observables = value.filter(item => Validator.isObservable(item));\n value = Observable.computed(() => {\n return value.map(item => Validator.isObservable(item) ? item.val() : item).join(' ') || ' ';\n }, observables);\n }\n if(attributeName === 'class' && Validator.isJson(value)) {\n bindClassAttribute(element, value);\n continue;\n }\n if(attributeName === 'style' && Validator.isJson(value)) {\n bindStyleAttribute(element, value);\n continue;\n }\n if(BOOLEAN_ATTRIBUTES.includes(attributeName)) {\n bindBooleanAttribute(element, attributeName, value);\n continue;\n }\n if(Validator.isObservable(value)) {\n bindAttributeWithObservable(element, attributeName, value);\n continue;\n }\n element.setAttribute(attributeName, value);\n\n }\n return element;\n}","import Anchor from \"../elements/anchor\";\nimport Validator from \"../utils/validator\";\nimport AttributesWrapper from \"./AttributesWrapper\";\n\nconst $nodeCache = new Map();\nlet $textNodeCache = null;\n\nexport const ElementCreator = {\n createTextNode() {\n if(!$textNodeCache) {\n $textNodeCache = document.createTextNode('');\n }\n return $textNodeCache.cloneNode();\n },\n /**\n *\n * @param {HTMLElement|DocumentFragment} parent\n * @param {ObservableItem} observable\n * @returns {Text}\n */\n createObservableNode(parent, observable) {\n const text = ElementCreator.createTextNode();\n observable.subscribe(value => text.nodeValue = String(value));\n text.nodeValue = observable.val();\n parent && parent.appendChild(text);\n return text;\n },\n\n /**\n *\n * @param {HTMLElement|DocumentFragment} parent\n * @param {*} value\n * @returns {Text}\n */\n createStaticTextNode(parent, value) {\n let text = ElementCreator.createTextNode();\n text.nodeValue = String(value);\n parent && parent.appendChild(text);\n return text;\n },\n /**\n *\n * @param {string} name\n * @returns {HTMLElement|DocumentFragment}\n */\n createElement(name) {\n if(name) {\n if($nodeCache.has(name)) {\n return $nodeCache.get(name).cloneNode();\n }\n const node = document.createElement(name);\n $nodeCache.set(name, node);\n return node.cloneNode();\n }\n return new Anchor('Fragment');\n },\n /**\n *\n * @param {*} children\n * @param {HTMLElement|DocumentFragment} parent\n */\n processChildren(children, parent) {\n if(children === null) return;\n const childrenArray = Array.isArray(children) ? children : [children];\n\n for(let i = 0, length = childrenArray.length; i < length; i++) {\n let child = this.getChild(childrenArray[i]);\n if (child === null) continue;\n parent.appendChild(child);\n }\n },\n getChild(child) {\n if(child === null) {\n return null;\n }\n if(Validator.isString(child) && Validator.isFunction(child.resolveObservableTemplate)) {\n child = child.resolveObservableTemplate();\n }\n if(Validator.isString(child)) {\n return ElementCreator.createStaticTextNode(null, child);\n }\n if (Validator.isObservable(child)) {\n return ElementCreator.createObservableNode(null, child);\n }\n if(Validator.isArray(child)) {\n const fragment = document.createDocumentFragment();\n for(let i = 0, length = child.length; i < length; i++) {\n fragment.appendChild(this.getChild(child[i]));\n }\n return fragment;\n }\n if(Validator.isFunction(child)) {\n return this.getChild(child());\n }\n if (Validator.isElement(child)) {\n return child;\n }\n if(Validator.isNDElement(child)) {\n return child.$element ?? child.$build?.() ?? null;\n }\n return ElementCreator.createStaticTextNode(null, child);\n },\n /**\n *\n * @param {HTMLElement} element\n * @param {Object} attributes\n */\n processAttributes(element, attributes) {\n if(Validator.isFragment(element)) return;\n if (attributes) {\n AttributesWrapper(element, attributes);\n }\n },\n /**\n *\n * @param {HTMLElement} element\n * @param {Object} attributes\n * @param {?Function} customWrapper\n * @returns {HTMLElement|DocumentFragment}\n */\n setup(element, attributes, customWrapper) {\n return element;\n }\n};","import { NDElement } from \"./NDElement\";\n\nObject.defineProperty(HTMLElement.prototype, 'nd', {\n configurable: true,\n get() {\n if(this.$nd) {\n return this.$nd;\n }\n\n this.$nd = new NDElement(this);\n this.$nd.nd = this.$nd;\n return this.$nd;\n }\n});","import Validator from \"../utils/validator\";\nimport DebugManager from \"../utils/debug-manager\";\nimport {ElementCreator} from \"./ElementCreator\";\nimport './NdPrototype';\n\n/**\n *\n * @param {*} value\n * @returns {Text}\n */\nexport const createTextNode = function(value) {\n return (Validator.isObservable(value))\n ? ElementCreator.createObservableNode(null, value)\n : ElementCreator.createStaticTextNode(null, value);\n};\n\n\n/**\n *\n * @param {string} name\n * @param {?Function} customWrapper\n * @returns {Function}\n */\nexport default function HtmlElementWrapper(name, customWrapper) {\n const $tagName = name.toLowerCase();\n\n return function(attributes, children = null) {\n try {\n if(!Validator.isJson(attributes)) {\n const tempChildren = children;\n children = attributes;\n attributes = tempChildren;\n }\n const element = ElementCreator.createElement($tagName);\n const finalElement = (typeof customWrapper === 'function') ? customWrapper(element) : element;\n\n ElementCreator.processAttributes(finalElement, attributes);\n ElementCreator.processChildren(children, finalElement);\n\n return ElementCreator.setup(finalElement, attributes, customWrapper);\n } catch (error) {\n DebugManager.error('ElementCreation', `Error creating ${$tagName}`, error);\n }\n };\n}\n\n","\n\nexport default class ArgTypesError extends Error {\n constructor(message, errors) {\n super(`${message}\\n\\n${errors.join(\"\\n\")}\\n\\n`);\n }\n}","import Validator from \"./validator\";\nimport ArgTypesError from \"../errors/ArgTypesError\";\nimport NativeDocumentError from \"../errors/NativeDocumentError\";\n\n/**\n *\n * @type {{string: (function(*): {name: *, type: string, validate: function(*): boolean}),\n * number: (function(*): {name: *, type: string, validate: function(*): boolean}),\n * boolean: (function(*): {name: *, type: string, validate: function(*): boolean}),\n * observable: (function(*): {name: *, type: string, validate: function(*): boolean}),\n * element: (function(*): {name: *, type: string, validate: function(*): *}),\n * function: (function(*): {name: *, type: string, validate: function(*): boolean}),\n * object: (function(*): {name: *, type: string, validate: function(*): boolean}),\n * objectNotNull: (function(*): {name: *, type: string, validate: function(*): *}),\n * children: (function(*): {name: *, type: string, validate: function(*): *}),\n * attributes: (function(*): {name: *, type: string, validate: function(*): *}),\n * optional: (function(*): *&{optional: boolean}),\n * oneOf: (function(*, ...[*]): {name: *, type: string, types: *[],\n * validate: function(*): boolean})\n * }}\n */\nexport const ArgTypes = {\n string: (name) => ({ name, type: 'string', validate: (v) => Validator.isString(v) }),\n number: (name) => ({ name, type: 'number', validate: (v) => Validator.isNumber(v) }),\n boolean: (name) => ({ name, type: 'boolean', validate: (v) => Validator.isBoolean(v) }),\n observable: (name) => ({ name, type: 'observable', validate: (v) => Validator.isObservable(v) }),\n element: (name) => ({ name, type: 'element', validate: (v) => Validator.isElement(v) }),\n function: (name) => ({ name, type: 'function', validate: (v) => Validator.isFunction(v) }),\n object: (name) => ({ name, type: 'object', validate: (v) => (Validator.isObject(v)) }),\n objectNotNull: (name) => ({ name, type: 'object', validate: (v) => (Validator.isObject(v) && v !== null) }),\n children: (name) => ({ name, type: 'children', validate: (v) => Validator.validateChildren(v) }),\n attributes: (name) => ({ name, type: 'attributes', validate: (v) => Validator.validateAttributes(v) }),\n\n // Optional arguments\n optional: (argType) => ({ ...argType, optional: true }),\n\n // Union types\n oneOf: (name, ...argTypes) => ({\n name,\n type: 'oneOf',\n types: argTypes,\n validate: (v) => argTypes.some(type => type.validate(v))\n })\n};\n\n/**\n *\n * @param {Array} args\n * @param {Array} argSchema\n * @param {string} fnName\n */\nconst validateArgs = (args, argSchema, fnName = 'Function') => {\n if (!argSchema) return;\n\n const errors = [];\n\n // Check the number of arguments\n const requiredCount = argSchema.filter(arg => !arg.optional).length;\n if (args.length < requiredCount) {\n errors.push(`${fnName}: Expected at least ${requiredCount} arguments, got ${args.length}`);\n }\n\n // Validate each argument\n argSchema.forEach((schema, index) => {\n const position = index + 1;\n const value = args[index];\n\n if (value === undefined) {\n if (!schema.optional) {\n errors.push(`${fnName}: Missing required argument '${schema.name}' at position ${position}`);\n }\n return;\n }\n\n if (!schema.validate(value)) {\n const valueTypeOf = value?.constructor?.name || typeof value;\n errors.push(`${fnName}: Invalid argument '${schema.name}' at position ${position}, expected ${schema.type}, got ${valueTypeOf}`);\n }\n });\n\n if (errors.length > 0) {\n throw new ArgTypesError(`Argument validation failed`, errors);\n }\n};\n\n/**\n * @param {Function} fn\n * @param {Array} argSchema\n * @param {string} fnName\n * @returns {Function}\n */\nexport const withValidation = (fn, argSchema, fnName = 'Function') => {\n if(!Validator.isArray(argSchema)) {\n throw new NativeDocumentError('withValidation : argSchema must be an array');\n }\n return function(...args) {\n validateArgs(args, argSchema, fn.name || fnName);\n return fn.apply(this, args);\n };\n};","import {withValidation} from \"./args-types.js\";\nimport {Observable} from \"../data/Observable\";\nimport Validator from \"./validator\";\n\n\nFunction.prototype.args = function(...args) {\n return withValidation(this, args);\n};\n\nFunction.prototype.errorBoundary = function(callback) {\n return (...args) => {\n try {\n return this.apply(this, args);\n } catch(e) {\n return callback(e);\n }\n };\n};\n\nString.prototype.use = function(args) {\n const value = this;\n\n return Observable.computed(() => {\n return value.replace(/\\$\\{(.*?)}/g, (match, key) => {\n const data = args[key];\n if(Validator.isObservable(data)) {\n return data.val();\n }\n return data;\n });\n }, Object.values(args));\n};\n\nString.prototype.resolveObservableTemplate = function() {\n if(!Validator.containsObservableReference(this)) {\n return this.valueOf();\n }\n return this.split(/(\\{\\{#ObItem::\\([0-9]+\\)\\}\\})/g).filter(Boolean).map((value) => {\n if(!Validator.containsObservableReference(value)) {\n return value;\n }\n const [_, id] = value.match(/\\{\\{#ObItem::\\(([0-9]+)\\)\\}\\}/);\n return Observable.getById(id);\n });\n}","import NativeDocumentError from \"../../errors/NativeDocumentError\";\nimport {Observable} from \"../Observable\";\n\n\nconst methods = ['push', 'pop', 'shift', 'unshift', 'reverse', 'sort', 'splice'];\n\n/**\n *\n * @param {Array} target\n * @returns {ObservableItem}\n */\nObservable.array = function(target) {\n if(!Array.isArray(target)) {\n throw new NativeDocumentError('Observable.array : target must be an array');\n }\n const observer = Observable(target);\n\n methods.forEach((method) => {\n observer[method] = function(...values) {\n const result = observer.val()[method](...values);\n observer.trigger({ action: method, args: values, result });\n return result;\n };\n });\n\n observer.clear = function() {\n observer.val().length = 0;\n observer.trigger({ action: 'clear' });\n return true;\n };\n\n observer.merge = function(values) {\n observer.set([...observer.val(), ...values]);\n };\n\n observer.populateAndRender = function(iteration, callback) {\n observer.trigger({ action: 'populate', args: [observer.val(), iteration, callback] });\n };\n observer.remove = function(index) {\n const deleted = observer.val().splice(index, 1);\n if(deleted.length === 0) {\n return [];\n }\n observer.trigger({ action: 'remove', args: [index], result: deleted[0] });\n return deleted;\n };\n\n observer.swap = function(indexA, indexB) {\n const value = observer.val();\n const length = value.length;\n if(length < indexA || length < indexB) {\n return false;\n }\n if(indexB < indexA) {\n const temp = indexA;\n indexA = indexB;\n indexB = temp;\n }\n const elementA = value[indexA];\n const elementB = value[indexB]\n\n value[indexA] = elementB;\n value[indexB] = elementA;\n observer.trigger({ action: 'swap', args: [indexA, indexB], result: [elementA, elementB] });\n return true;\n };\n\n observer.length = function() {\n return observer.val().length;\n }\n\n const overrideMethods = ['map', 'filter', 'reduce', 'some', 'every', 'find', 'findIndex', 'concat'];\n overrideMethods.forEach((method) => {\n observer[method] = function(...args) {\n return observer.val()[method](...args);\n };\n })\n\n return observer;\n};","import Validator from \"../../utils/validator\";\nimport {Observable} from \"../Observable\";\n\n/**\n *\n * @param {Function} callback\n * @returns {Function}\n */\nObservable.batch = function(callback) {\n const $observer = Observable(0);\n const batch = function() {\n if(Validator.isAsyncFunction(callback)) {\n return (callback(...arguments)).then(() => {\n $observer.trigger();\n }).catch(error => { throw error; });\n }\n callback(...arguments);\n $observer.trigger();\n };\n batch.$observer = $observer;\n return batch;\n};","import Validator from \"../../utils/validator\";\nimport {Observable} from \"../Observable\";\n\n/**\n *\n * @param {Object} value\n * @returns {Proxy}\n */\nObservable.init = function(value) {\n const data = {};\n for(const key in value) {\n const itemValue = value[key];\n if(Validator.isJson(itemValue)) {\n data[key] = Observable.init(itemValue);\n continue;\n }\n else if(Validator.isArray(itemValue)) {\n data[key] = Observable.array(itemValue);\n continue;\n }\n data[key] = Observable(itemValue);\n }\n\n const $val = function() {\n const result = {};\n for(const key in data) {\n const dataItem = data[key];\n if(Validator.isObservable(dataItem)) {\n result[key] = dataItem.val();\n } else if(Validator.isProxy(dataItem)) {\n result[key] = dataItem.$value;\n } else {\n result[key] = dataItem;\n }\n }\n return result;\n };\n const $clone = function() {\n\n };\n\n return new Proxy(data, {\n get(target, property) {\n if(property === '__isProxy__') {\n return true;\n }\n if(property === '$value') {\n return $val();\n }\n if(property === '$clone') {\n return $clone;\n }\n if(target[property] !== undefined) {\n return target[property];\n }\n return undefined;\n },\n set(target, prop, newValue) {\n if(target[prop] !== undefined) {\n target[prop].set(newValue);\n }\n }\n })\n};\n\n/**\n * Get the value of an observable or an object of observables.\n * @param {ObservableItem|Object<ObservableItem>} data\n * @returns {{}|*|null}\n */\nObservable.value = function(data) {\n if(Validator.isObservable(data)) {\n return data.val();\n }\n if(Validator.isProxy(data)) {\n return data.$value;\n }\n if(Validator.isArray(data)) {\n const result = [];\n for(let i = 0, length = data.length; i < length; i++) {\n const item = data[i];\n result.push(Observable.value(item));\n }\n return result;\n }\n return data;\n};\n\n\nObservable.update = function($target, data) {\n for(const key in data) {\n const targetItem = $target[key];\n const newValue = data[key];\n\n if(Validator.isObservable(targetItem)) {\n if(Validator.isArray(newValue)) {\n Observable.update(targetItem, newValue);\n continue;\n }\n targetItem.set(newValue);\n continue;\n }\n if(Validator.isProxy(targetItem)) {\n Observable.update(targetItem, newValue);\n continue;\n }\n $target[key] = newValue;\n }\n};\n\nObservable.object = Observable.init;\nObservable.json = Observable.init;","import ObservableItem from \"../ObservableItem\";\nimport Validator from \"../../utils/validator\";\nimport NativeDocumentError from \"../../errors/NativeDocumentError\";\nimport {Observable} from \"../Observable\";\n\n/**\n *\n * @param {Function} callback\n * @param {Array|Function} dependencies\n * @returns {ObservableItem}\n */\nObservable.computed = function(callback, dependencies = []) {\n const initialValue = callback();\n const observable = new ObservableItem(initialValue);\n const updatedValue = () => observable.set(callback());\n\n if(Validator.isFunction(dependencies)) {\n if(!Validator.isObservable(dependencies.$observer)) {\n throw new NativeDocumentError('Observable.computed : dependencies must be valid batch function');\n }\n dependencies.$observer.subscribe(updatedValue);\n return observable;\n }\n\n dependencies.forEach(dependency => dependency.subscribe(updatedValue));\n\n return observable;\n};","import {Observable} from \"./Observable\";\n\nexport const Store = (function() {\n\n const $stores = new Map();\n\n return {\n /**\n * Create a new state follower and return it.\n * @param {string} name\n * @returns {ObservableItem}\n */\n use(name) {\n const {observer: originalObserver, subscribers } = $stores.get(name);\n const observerFollower = Observable(originalObserver.val());\n const unSubscriber = originalObserver.subscribe(value => observerFollower.set(value));\n const updaterUnsubscriber = observerFollower.subscribe(value => originalObserver.set(value));\n observerFollower.destroy = () => {\n unSubscriber();\n updaterUnsubscriber();\n observerFollower.cleanup();\n };\n subscribers.add(observerFollower);\n\n return observerFollower;\n },\n /**\n * @param {string} name\n * @returns {ObservableItem}\n */\n follow(name) {\n return this.use(name);\n },\n /**\n * Create a new state and return the observer.\n * @param {string} name\n * @param {*} value\n * @returns {ObservableItem}\n */\n create(name, value) {\n const observer = Observable(value);\n $stores.set(name, { observer, subscribers: new Set()});\n return observer;\n },\n /**\n * Get the observer for a state.\n * @param {string} name\n * @returns {null|ObservableItem}\n */\n get(name) {\n const item = $stores.get(name);\n return item ? item.observer : null;\n },\n /**\n *\n * @param {string} name\n * @returns {{observer: ObservableItem, subscribers: Set}}\n */\n getWithSubscribers(name) {\n return $stores.get(name);\n },\n /**\n * Delete a state.\n * @param {string} name\n */\n delete(name) {\n const item = $stores.get(name);\n if(!item) return;\n item.observer.cleanup();\n item.subscribers.forEach(follower => follower.destroy());\n item.observer.clear();\n }\n };\n}());","import ObservableItem from \"../../data/ObservableItem\";\nimport {Observable} from \"../../data/Observable\";\nimport Validator from \"../../utils/validator\";\nimport Anchor from \"../anchor\";\nimport DebugManager from \"../../utils/debug-manager\";\nimport {getKey} from \"../../utils/helpers\";\nimport { ElementCreator } from \"../../wrappers/ElementCreator\";\n\n/**\n *\n * @param {Array|Object|ObservableItem} data\n * @param {Function} callback\n * @param {?Function} key\n * @returns {DocumentFragment}\n */\nexport function ForEach(data, callback, key) {\n const element = new Anchor('ForEach');\n const blockEnd = element.endElement();\n const blockStart = element.startElement();\n\n let cache = new Map();\n let lastKeyOrder = null;\n const keyIds = new Set();\n\n const clear = () => {\n element.removeChildren();\n cleanCache();\n };\n\n const cleanCache = (parent) => {\n for(const [keyId, cacheItem] of cache.entries()) {\n if(keyIds.has(keyId)) {\n continue;\n }\n const child = cacheItem.child?.deref();\n if(parent && child) {\n parent.removeChild(child);\n }\n cacheItem.indexObserver?.cleanup();\n cacheItem.child = null;\n cacheItem.indexObserver = null;\n cache.delete(cacheItem.keyId);\n lastKeyOrder && lastKeyOrder.delete(cacheItem.keyId);\n }\n };\n\n const handleContentItem = (item, indexKey) => {\n const keyId = getKey(item, indexKey, key);\n\n if(cache.has(keyId)) {\n const cacheItem = cache.get(keyId);\n cacheItem.indexObserver?.set(indexKey);\n cacheItem.isNew = false;\n if(cacheItem.child?.deref()) {\n return keyId;\n }\n cache.delete(keyId);\n }\n\n try {\n const indexObserver = callback.length >= 2 ? Observable(indexKey) : null;\n let child = ElementCreator.getChild(callback(item, indexObserver))\n cache.set(keyId, { keyId, isNew: true, child: new WeakRef(child), indexObserver});\n } catch (e) {\n DebugManager.error('ForEach', `Error creating element for key ${keyId}` , e);\n throw e;\n }\n return keyId;\n };\n\n const batchDOMUpdates = (parent) => {\n const fragment = document.createDocumentFragment();\n for(const itemKey of keyIds) {\n const cacheItem = cache.get(itemKey);\n if(!cacheItem) {\n continue;\n }\n const child = cacheItem.child?.deref();\n child && fragment.appendChild(child);\n }\n parent.insertBefore(fragment, blockEnd);\n }\n\n const diffingDOMUpdates = (parent) => {\n const operations = [];\n let fragment = document.createDocumentFragment();\n const newKeys = Array.from(keyIds);\n const oldKeys = Array.from(lastKeyOrder);\n\n let currentPosition = blockStart;\n\n for(const index in newKeys) {\n const itemKey = newKeys[index];\n const cacheItem = cache.get(itemKey);\n if(!cacheItem) {\n continue;\n }\n const child = cacheItem.child.deref();\n if(!child) {\n continue;\n }\n fragment.appendChild(child);\n }\n element.replaceContent(fragment);\n };\n\n const buildContent = () => {\n const parent = blockEnd.parentNode;\n if(!parent) {\n return;\n }\n\n const items = (Validator.isObservable(data)) ? data.val() : data;\n keyIds.clear();\n if(Array.isArray(items)) {\n for(let i = 0, length = items.length; i < length; i++) {\n const keyId= handleContentItem(items[i], i);\n keyIds.add(keyId);\n }\n } else {\n for(const indexKey in items) {\n const keyId = handleContentItem(items[indexKey], indexKey);\n keyIds.add(keyId);\n }\n }\n\n if(keyIds.size === 0) {\n clear();\n lastKeyOrder?.clear();\n return;\n }\n\n cleanCache(parent);\n if(!lastKeyOrder || lastKeyOrder.size === 0) {\n batchDOMUpdates(parent);\n } else {\n diffingDOMUpdates(parent);\n }\n lastKeyOrder?.clear();\n lastKeyOrder = new Set([...keyIds]);\n };\n\n buildContent();\n if(Validator.isObservable(data)) {\n data.subscribe(buildContent)\n }\n return element;\n}\n","import Anchor from \"../anchor\";\nimport {Observable} from \"../../data/Observable\";\nimport Validator from \"../../utils/validator\";\nimport DebugManager from \"../../utils/debug-manager\";\nimport {getKey} from \"../../utils/helpers\";\nimport { ElementCreator } from \"../../wrappers/ElementCreator\";\n\nexport function ForEachArray(data, callback, key, configs = {}) {\n const element = new Anchor('ForEach Array');\n const blockEnd = element.endElement();\n const blockStart = element.startElement();\n\n let cache = new Map();\n let lastNumberOfItems = 0;\n const isIndexRequired = callback.length >= 2;\n\n const keysCache = new WeakMap();\n\n const clear = () => {\n element.removeChildren();\n cleanCache();\n lastNumberOfItems = 0;\n };\n const getItemKey = (item, indexKey) => {\n if(keysCache.has(item)) {\n return keysCache.get(item);\n }\n return getKey(item, indexKey, key);\n };\n const getItemChild = (item) => {\n return getChildByKey(getItemKey(item));\n };\n\n const updateIndexObservers = (items, startFrom = 0) => {\n if(!isIndexRequired) {\n return;\n }\n let index = startFrom;\n for(let i = startFrom, length = items?.length; i < length; i++) {\n const cacheItem = cache.get(getItemKey(items[i], i));\n if(!cacheItem) {\n continue;\n }\n cacheItem.indexObserver?.deref()?.set(index);\n index++;\n }\n };\n\n const removeCacheItem = (cacheItem, removeChild = true) => {\n if(!cacheItem) {\n return;\n }\n const child = cacheItem.child;\n cacheItem.indexObserver?.deref()?.cleanup();\n cacheItem.child = null;\n cacheItem.indexObserver = null;\n if(removeChild) {\n child?.remove();\n cache.delete(cacheItem.keyId);\n }\n }\n\n const removeCacheItemByKey = (keyId, removeChild = true) => {\n removeCacheItem(cache.get(keyId), removeChild);\n };\n\n const cleanCache = () => {\n for (const [keyId, cacheItem] of cache.entries()) {\n removeCacheItem(cacheItem, false);\n }\n cache.clear();\n }\n\n const buildItem = (item, indexKey) => {\n const keyId = getItemKey(item, indexKey);\n\n if(cache.has(keyId)) {\n const cacheItem = cache.get(keyId);\n cacheItem.indexObserver?.deref()?.set(indexKey);\n const child = cacheItem.child;\n if(child) {\n return child;\n }\n cache.delete(keyId);\n }\n\n try {\n const indexObserver = isIndexRequired ? Observable(indexKey) : null;\n let child = ElementCreator.getChild(callback(item, indexObserver));\n cache.set(keyId, {\n keyId,\n child: child,\n indexObserver: (indexObserver ? new WeakRef(indexObserver) : null)\n });\n keysCache.set(item, keyId);\n return child;\n } catch (e) {\n DebugManager.error('ForEach', `Error creating element for key ${keyId}` , e);\n throw e;\n }\n };\n const getChildByKey = function(keyId) {\n const cacheItem = cache.get(keyId);\n if(!cacheItem) {\n return null;\n }\n const child = cacheItem.child;\n if(!child) {\n removeCacheItem(cacheItem, false);\n return null;\n }\n return child;\n };\n\n const removeByKey = function(keyId, fragment) {\n const cacheItem = cache.get(keyId);\n if(!cacheItem) {\n return null;\n }\n const child = cacheItem.child;\n if(!child) {\n return null;\n }\n\n if(fragment) {\n fragment.appendChild(child);\n return;\n }\n child.remove();\n }\n\n const Actions = {\n toFragment(items, startIndexFrom = 0){\n const fragment = document.createDocumentFragment();\n for(let i = 0, length = items.length; i < length; i++) {\n fragment.append(buildItem(items[i], lastNumberOfItems));\n lastNumberOfItems++;\n }\n return fragment;\n },\n add(items, delay = 0) {\n setTimeout(() => {\n element.appendElement(Actions.toFragment(items))\n }, delay);\n },\n replace(items) {\n clear();\n Actions.add(items);\n },\n reOrder(items) {\n let child = null;\n const fragment = document.createDocumentFragment();\n for(const item of items) {\n child = getItemChild(item);\n if(child) {\n fragment.appendChild(child);\n }\n }\n child = null;\n element.appendElement(fragment, blockEnd);\n },\n removeOne(element, index) {\n let child = getItemChild(element);\n if(child) {\n removeCacheItemByKey(getItemKey(element, index), true);\n }\n child = null;\n },\n clear,\n merge(items) {\n Actions.add(items, 0);\n },\n push(items) {\n let delay = 0;\n if(configs.pushDelay) {\n delay = configs.pushDelay(items) ?? 0;\n }\n\n Actions.add(items, delay);\n },\n populate([target, iteration, callback]) {\n const fragment = document.createDocumentFragment();\n for (let i = 0; i < iteration; i++) {\n const data = callback(i);\n target.push(data);\n fragment.append(buildItem(data, i));\n lastNumberOfItems++;\n }\n element.appendChild(fragment);\n fragment.replaceChildren();\n },\n unshift(values){\n element.insertBefore(Actions.toFragment(values), blockStart.nextSibling);\n },\n splice(args, deleted) {\n const [start, deleteCount, ...values] = args;\n let elementBeforeFirst = null;\n const garbageFragment = document.createDocumentFragment();\n\n if(deleted.length > 0) {\n let firstKey = getItemKey(deleted[0], start);\n if(deleted.length === 1) {\n removeByKey(firstKey, garbageFragment);\n } else if(deleted.length > 1) {\n const firstChildRemoved = getChildByKey(firstKey);\n elementBeforeFirst = firstChildRemoved?.previousSibling;\n\n for(let i = 0; i < deleted.length; i++) {\n const keyId = getItemKey(deleted[i], start + i, key);\n removeByKey(keyId, garbageFragment);\n }\n }\n } else {\n elementBeforeFirst = blockEnd;\n }\n garbageFragment.replaceChildren();\n\n if(values && values.length && elementBeforeFirst) {\n element.insertBefore(Actions.toFragment(values), elementBeforeFirst.nextSibling);\n }\n\n },\n reverse(_, reversed) {\n Actions.reOrder(reversed);\n },\n sort(_, sorted) {\n Actions.reOrder(sorted);\n },\n remove(_, deleted) {\n Actions.removeOne(deleted);\n },\n pop(_, deleted) {\n Actions.removeOne(deleted);\n },\n shift(_, deleted) {\n Actions.removeOne(deleted);\n },\n swap(args, elements) {\n const parent = blockEnd.parentNode;\n\n let childA = getItemChild(elements[0]);\n let childB = getItemChild(elements[1]);\n if(!childA || !childB) {\n return;\n }\n\n const childBNext = childB.nextSibling;\n parent.insertBefore(childB, childA);\n parent.insertBefore(childA, childBNext);\n childA = null;\n childB = null;\n }\n };\n\n const buildContent = (items, _, operations) => {\n if(operations?.action === 'populate') {\n Actions.populate(operations.args, operations.result);\n } else {\n if(operations.action === 'clear' || !items.length) {\n if(lastNumberOfItems === 0) {\n return;\n }\n clear();\n }\n\n if(!operations?.action) {\n if(lastNumberOfItems === 0) {\n Actions.add(items);\n return;\n }\n Actions.replace(items);\n }\n else if(Actions[operations.action]) {\n Actions[operations.action](operations.args, operations.result);\n }\n }\n\n updateIndexObservers(items, 0);\n };\n\n buildContent(data.val(), null, {action: null});\n if(Validator.isObservable(data)) {\n data.subscribe(buildContent);\n }\n\n return element;\n}","import { Observable } from \"../../data/Observable\";\nimport Validator from \"../../utils/validator\";\nimport DebugManager from \"../../utils/debug-manager.js\";\nimport Anchor from \"../anchor\";\nimport {ElementCreator} from \"../../wrappers/ElementCreator\";\n\n/**\n * Show the element if the condition is true\n *\n * @param {ObservableItem|ObservableChecker} condition\n * @param {*} child\n * @param {string|null} comment\n * @returns {DocumentFragment}\n */\nexport const ShowIf = function(condition, child, comment = null) {\n if(!(Validator.isObservable(condition))) {\n return DebugManager.warn('ShowIf', \"ShowIf : condition must be an Observable / \"+comment, condition);\n }\n const element = new Anchor('Show if : '+(comment || ''));\n\n let childElement = null;\n const getChildElement = () => {\n if(childElement) {\n return childElement;\n }\n childElement = ElementCreator.getChild(child);\n return childElement;\n };\n\n const currentValue = condition.val();\n\n if(currentValue) {\n element.appendChild(getChildElement());\n }\n condition.subscribe(value => {\n if(value) {\n element.appendChild(getChildElement());\n } else {\n element.remove();\n }\n });\n\n return element;\n}\n\n/**\n * Hide the element if the condition is true\n * @param {ObservableItem|ObservableChecker} condition\n * @param child\n * @param comment\n * @returns {DocumentFragment}\n */\nexport const HideIf = function(condition, child, comment) {\n\n const hideCondition = Observable(!condition.val());\n condition.subscribe(value => hideCondition.set(!value));\n\n return ShowIf(hideCondition, child, comment);\n}\n\n/**\n * Hide the element if the condition is false\n *\n * @param {ObservableItem|ObservableChecker} condition\n * @param {*} child\n * @param {string|null} comment\n * @returns {DocumentFragment}\n */\nexport const HideIfNot = function(condition, child, comment) {\n return ShowIf(condition, child, comment);\n}","import NativeDocumentError from \"../../errors/NativeDocumentError\";\nimport Validator from \"../../utils/validator\";\nimport Anchor from \"../anchor\";\nimport {ElementCreator} from \"../../wrappers/ElementCreator\";\n\n\n\n/**\n *\n * @param {ObservableItem|ObservableChecker} $condition\n * @param {{[key]: *}} values\n * @param {Boolean} shouldKeepInCache\n * @returns {DocumentFragment}\n */\nexport const Match = function($condition, values, shouldKeepInCache = true) {\n\n if(!Validator.isObservable($condition)) {\n throw new NativeDocumentError(\"Toggle : condition must be an Observable\");\n }\n\n const anchor = new Anchor();\n const cache = new Map();\n\n const getItem = function(key) {\n if(shouldKeepInCache && cache.has(key)) {\n return cache.get(key);\n }\n let item = values[key];\n if(!item) {\n return null;\n }\n item = ElementCreator.getChild(item);\n shouldKeepInCache && cache.set(key, item);\n return item;\n }\n\n const defaultValue = $condition.val();\n const defaultContent = getItem(defaultValue);\n if(defaultContent) {\n anchor.appendChild(defaultContent);\n }\n\n $condition.subscribe(value => {\n const content = getItem(value);\n anchor.remove();\n if(content) {\n anchor.appendChild(content);\n }\n })\n\n return anchor;\n}\n\n\n/**\n *\n * @param {ObservableItem|ObservableChecker} $condition\n * @param {*} onTrue\n * @param {*} onFalse\n * @returns {DocumentFragment}\n */\nexport const Switch = function ($condition, onTrue, onFalse) {\n\n if(!Validator.isObservable($condition)) {\n throw new NativeDocumentError(\"Toggle : condition must be an Observable\");\n }\n\n return Match($condition, {\n true: onTrue,\n false: onFalse,\n });\n}\n\n/**\n *\n * @param {ObservableItem|ObservableChecker} $condition\n * @returns {{show: Function, otherwise: (((*) => {}):DocumentFragment)}\n */\nexport const When = function($condition) {\n if(!Validator.isObservable($condition)) {\n throw new NativeDocumentError(\"When : condition must be an Observable\");\n }\n\n let $onTrue = null;\n let $onFalse = null;\n\n return {\n show(onTrue) {\n $onTrue = onTrue;\n return this;\n },\n otherwise(onFalse) {\n $onFalse = onFalse;\n return Switch($condition, $onTrue, $onFalse);\n }\n }\n}","import HtmlElementWrapper from \"../wrappers/HtmlElementWrapper\";\n\nexport const Div = HtmlElementWrapper('div');\nexport const Span = HtmlElementWrapper('span');\nexport const Label = HtmlElementWrapper('label');\nexport const P = HtmlElementWrapper('p');\nexport const Paragraph = P;\nexport const Strong = HtmlElementWrapper('strong');\nexport const H1 = HtmlElementWrapper('h1');\nexport const H2 = HtmlElementWrapper('h2');\nexport const H3 = HtmlElementWrapper('h3');\nexport const H4 = HtmlElementWrapper('h4');\nexport const H5 = HtmlElementWrapper('h5');\nexport const H6 = HtmlElementWrapper('h6');\n\nexport const Br = HtmlElementWrapper('br');\n\nexport const Link = HtmlElementWrapper('a');\nexport const Pre = HtmlElementWrapper('pre');\nexport const Code = HtmlElementWrapper('code');\nexport const Blockquote = HtmlElementWrapper('blockquote');\nexport const Hr = HtmlElementWrapper('hr');\nexport const Em = HtmlElementWrapper('em');\nexport const Small = HtmlElementWrapper('small');\nexport const Mark = HtmlElementWrapper('mark');\nexport const Del = HtmlElementWrapper('del');\nexport const Ins = HtmlElementWrapper('ins');\nexport const Sub = HtmlElementWrapper('sub');\nexport const Sup = HtmlElementWrapper('sup');\nexport const Abbr = HtmlElementWrapper('abbr');\nexport const Cite = HtmlElementWrapper('cite');\nexport const Quote = HtmlElementWrapper('q');","import HtmlElementWrapper from \"../wrappers/HtmlElementWrapper\";\n\nexport const Dl = HtmlElementWrapper('dl');\nexport const Dt = HtmlElementWrapper('dt');\nexport const Dd = HtmlElementWrapper('dd');","import HtmlElementWrapper from \"../wrappers/HtmlElementWrapper\";\n\n\nexport const Form = HtmlElementWrapper('form', function(el) {\n\n el.submit = function(action) {\n if(typeof action === 'function') {\n el.onSubmit((e) => {\n e.preventDefault();\n action(e);\n });\n return el;\n }\n this.setAttribute('action', action);\n return el;\n };\n el.multipartFormData = function() {\n this.setAttribute('enctype', 'multipart/form-data');\n return el;\n }\n el.post = function(action) {\n this.setAttribute('method', 'post');\n this.setAttribute('action', action);\n return el;\n };\n el.get = function(action) {\n this.setAttribute('method', 'get');\n this.setAttribute('action', action);\n };\n return el;\n});\n\nexport const Input = HtmlElementWrapper('input');\n\nexport const TextArea = HtmlElementWrapper('textarea');\nexport const TextInput = TextArea;\n\nexport const Select = HtmlElementWrapper('select');\nexport const FieldSet = HtmlElementWrapper('fieldset', );\nexport const Option = HtmlElementWrapper('option');\nexport const Legend = HtmlElementWrapper('legend');\nexport const Datalist = HtmlElementWrapper('datalist');\nexport const Output = HtmlElementWrapper('output');\nexport const Progress = HtmlElementWrapper('progress');\nexport const Meter = HtmlElementWrapper('meter');\n\nexport const ReadonlyInput = (attributes) => Input({ readonly: true, ...attributes });\nexport const HiddenInput = (attributes) => Input({type: 'hidden', ...attributes });\nexport const FileInput = (attributes) => Input({ type: 'file', ...attributes });\nexport const PasswordInput = (attributes) => Input({ type: 'password', ...attributes });\nexport const Checkbox = (attributes) => Input({ type: 'checkbox', ...attributes });\nexport const Radio = (attributes) => Input({ type: 'radio', ...attributes });\n\nexport const RangeInput = (attributes) => Input({ type: 'range', ...attributes });\nexport const ColorInput = (attributes) => Input({ type: 'color', ...attributes });\nexport const DateInput = (attributes) => Input({ type: 'date', ...attributes });\nexport const TimeInput = (attributes) => Input({ type: 'time', ...attributes });\nexport const DateTimeInput = (attributes) => Input({ type: 'datetime-local', ...attributes });\nexport const WeekInput = (attributes) => Input({ type: 'week', ...attributes });\nexport const MonthInput = (attributes) => Input({ type: 'month', ...attributes });\nexport const SearchInput = (attributes) => Input({ type: 'search', ...attributes });\nexport const TelInput = (attributes) => Input({ type: 'tel', ...attributes });\nexport const UrlInput = (attributes) => Input({ type: 'url', ...attributes });\nexport const EmailInput = (attributes) => Input({ type: 'email', ...attributes });\nexport const NumberInput = (attributes) => Input({ type: 'number', ...attributes });\n\n\nexport const Button = HtmlElementWrapper('button');\nexport const SimpleButton = (child, attributes) => Button(child, { type: 'button', ...attributes });\nexport const SubmitButton = (child, attributes) => Button(child, { type: 'submit', ...attributes });\n\n","import HtmlElementWrapper from \"../wrappers/HtmlElementWrapper\";\n\nexport const Main = HtmlElementWrapper('main');\nexport const Section = HtmlElementWrapper('section');\nexport const Article = HtmlElementWrapper('article');\nexport const Aside = HtmlElementWrapper('aside');\nexport const Nav = HtmlElementWrapper('nav');\nexport const Figure = HtmlElementWrapper('figure');\nexport const FigCaption = HtmlElementWrapper('figcaption');\n\nexport const Header = HtmlElementWrapper('header');\nexport const Footer = HtmlElementWrapper('footer');\n","import HtmlElementWrapper from \"../wrappers/HtmlElementWrapper\"\nimport Validator from \"../utils/validator\";\nimport NativeDocumentError from \"../errors/NativeDocumentError\";\n\nexport const BaseImage = HtmlElementWrapper('img');\nexport const Img = function(src, attributes) {\n return BaseImage({ src, ...attributes });\n};\n\n/**\n *\n * @param {string} src\n * @param {string|null} defaultImage\n * @param {Object} attributes\n * @param {?Function} callback\n * @returns {Image}\n */\nexport const AsyncImg = function(src, defaultImage, attributes, callback) {\n const image = Img(defaultImage || src, attributes);\n const img = new Image();\n img.onload = () => {\n Validator.isFunction(callback) && callback(null, image);\n image.src = src;\n };\n img.onerror = () => {\n Validator.isFunction(callback) && callback(new NativeDocumentError('Image not found'));\n };\n if(Validator.isObservable(src)) {\n src.subscribe(newSrc => {\n img.src = newSrc;\n });\n }\n img.src = src;\n return image;\n};\n\n/**\n *\n * @param {string} src\n * @param {Object} attributes\n * @returns {Image}\n */\nexport const LazyImg = function(src, attributes) {\n return Img(src, { ...attributes, loading: 'lazy' });\n};","import HtmlElementWrapper from \"../wrappers/HtmlElementWrapper\";\n\n\nexport const Details = HtmlElementWrapper('details');\nexport const Summary = HtmlElementWrapper('summary');\nexport const Dialog = HtmlElementWrapper('dialog');\nexport const Menu = HtmlElementWrapper('menu');","import HtmlElementWrapper from \"../wrappers/HtmlElementWrapper\";\n\nexport const OrderedList = HtmlElementWrapper('ol');\nexport const UnorderedList = HtmlElementWrapper('ul');\nexport const ListItem = HtmlElementWrapper('li');\n\nexport const Li = ListItem;\nexport const Ol = OrderedList;\nexport const Ul = UnorderedList;\n\n","import HtmlElementWrapper from \"../wrappers/HtmlElementWrapper\";\n\nexport const Audio = HtmlElementWrapper('audio');\nexport const Video = HtmlElementWrapper('video');\nexport const Source = HtmlElementWrapper('source');\nexport const Track = HtmlElementWrapper('track');\nexport const Canvas = HtmlElementWrapper('canvas');\nexport const Svg = HtmlElementWrapper('svg');","import HtmlElementWrapper from \"../wrappers/HtmlElementWrapper\";\n\nexport const Time = HtmlElementWrapper('time');\nexport const Data = HtmlElementWrapper('data');\nexport const Address = HtmlElementWrapper('address');\nexport const Kbd = HtmlElementWrapper('kbd');\nexport const Samp = HtmlElementWrapper('samp');\nexport const Var = HtmlElementWrapper('var');\nexport const Wbr = HtmlElementWrapper('wbr');","import HtmlElementWrapper from \"../wrappers/HtmlElementWrapper\";\n\nexport const Caption = HtmlElementWrapper('caption');\nexport const Table = HtmlElementWrapper('table');\nexport const THead = HtmlElementWrapper('thead');\nexport const TFoot = HtmlElementWrapper('tfoot');\nexport const TBody = HtmlElementWrapper('tbody');\nexport const Tr = HtmlElementWrapper('tr');\nexport const TRow = Tr;\nexport const Th = HtmlElementWrapper('th');\nexport const THeadCell = Th;\nexport const TFootCell = Th;\nexport const Td = HtmlElementWrapper('td');\nexport const TBodyCell = Td;","import HtmlElementWrapper from \"../wrappers/HtmlElementWrapper\";\n\nexport * from './control/for-each';\nexport * from './control/for-each-array';\nexport * from './control/show-if';\nexport * from './control/switch';\nexport * from './content-formatter';\nexport * from './description-list';\nexport * from './form';\nexport * from './html5-semantics';\nexport * from './img';\nexport * from './interactive';\nexport * from './list';\nexport * from './medias';\nexport * from './meta-data';\nexport * from './table';\n\nexport const Fragment = HtmlElementWrapper('');\n\n\n\n\n","import {trim} from \"../utils/helpers.js\";\n\nexport const RouteParamPatterns = {\n\n};\n\n/**\n *\n * @param {string} $path\n * @param {Function} $component\n * @param {{name:?string, middlewares:Function[], shouldRebuild:Boolean, with: Object }}$options\n * @class\n */\nexport function Route($path, $component, $options = {}) {\n\n $path = '/'+trim($path, '/');\n\n let $pattern = null;\n let $name = $options.name || null;\n\n const $middlewares = $options.middlewares || [];\n const $shouldRebuild = $options.shouldRebuild || false;\n const $paramsValidators = $options.with || {};\n\n const $params = {};\n const $paramsNames = [];\n\n\n const paramsExtractor = (description) => {\n if(!description) return null;\n const [name, type] = description.split(':');\n\n let pattern = $paramsValidators[name];\n if(!pattern && type) {\n pattern = RouteParamPatterns[type];\n }\n if(!pattern) {\n pattern = '[^/]+';\n }\n\n pattern = pattern.replace('(', '(?:');\n\n return { name, pattern: `(${pattern})` };\n };\n\n const getPattern = () => {\n if($pattern) {\n return $pattern;\n }\n\n const patternDescription = $path.replace(/\\{(.*?)}/ig, (block, definition) => {\n const description = paramsExtractor(definition);\n if(!description || !description.pattern) return block;\n $params[description.name] = description.pattern;\n $paramsNames.push(description.name);\n return description.pattern;\n });\n\n $pattern = new RegExp('^'+patternDescription+'$');\n return $pattern;\n };\n\n this.name = () => $name;\n this.component = () => $component;\n this.middlewares = () => $middlewares;\n this.shouldRebuild = () => $shouldRebuild;\n this.path = () => $path;\n\n /**\n *\n * @param {string} path\n */\n this.match = function(path) {\n path = '/'+trim(path, '/');\n const match = getPattern().exec(path);\n if(!match) return false;\n const params = {};\n\n getPattern().exec(path).forEach((value, index) => {\n if(index < 1) return;\n const name = $paramsNames[index - 1];\n params[name] = value;\n });\n\n return params;\n };\n /**\n * @param {{params: ?Object, query: ?Object, basePath: ?string}} configs\n */\n this.url = function(configs) {\n const path = $path.replace(/\\{(.*?)}/ig, (block, definition) => {\n const description = paramsExtractor(definition);\n if(configs.params && configs.params[description.name]) {\n return configs.params[description.name];\n }\n throw new Error(`Missing parameter '${description.name}'`);\n });\n\n const queryString = (typeof configs.query === 'object') ? (new URLSearchParams(configs.query)).toString() : null;\n return (configs.basePath ? configs.basePath : '') + (queryString ? `${path}?${queryString}` : path);\n }\n}","\n\nexport default class RouterError extends Error {\n constructor(message, context) {\n super(message);\n this.context = context;\n }\n\n}","import {trim} from \"../utils/helpers.js\";\n\nexport const RouteGroupHelper = {\n /**\n *\n * @param {{suffix: string, options: {middlewares: Function[], name: string}}[]} $groupTree\n * @param {string} path\n * @returns {string}\n */\n fullPath: ($groupTree, path) => {\n const fullPath = [];\n $groupTree.forEach(group => {\n fullPath.push(trim(group.suffix, '/'));\n });\n fullPath.push(trim(path, '/'));\n return fullPath.join('/');\n },\n /**\n *\n * @param {{suffix: string, options: {middlewares: Function[], name: string}}[]} $groupTree\n * @param {Function[]} middlewares\n * @returns {Function[]}\n */\n fullMiddlewares: ($groupTree, middlewares) => {\n const fullMiddlewares = [];\n $groupTree.forEach(group => {\n if(group.options.middlewares) {\n fullMiddlewares.push(...group.options.middlewares);\n }\n });\n if(middlewares) {\n fullMiddlewares.push(...middlewares);\n }\n return fullMiddlewares;\n },\n /**\n *\n * @param {{suffix: string, options: {middlewares: Function[], name: string}}[]} $groupTree\n * @param {string} name\n * @returns {string}\n */\n fullName: ($groupTree, name) => {\n const fullName = [];\n $groupTree.forEach(group => {\n if(group.options?.name) {\n fullName.push(group.options.name);\n }\n });\n name && fullName.push(name);\n return fullName.join('.');\n }\n};","\n\nexport default function HashRouter() {\n\n const $history = [];\n let $currentIndex = 0;\n\n /**\n *\n * @param {number} delta\n */\n const go = (delta) => {\n const index = $currentIndex + delta;\n if(!$history[index]) {\n return;\n }\n $currentIndex = index;\n const { route, params, query, path } = $history[index];\n setHash(path);\n };\n\n const canGoBack = function() {\n return $currentIndex > 0;\n };\n const canGoForward = function() {\n return $currentIndex < $history.length - 1;\n };\n\n /**\n *\n * @param {string} path\n */\n const setHash = (path) => {\n window.location.replace(`${window.location.pathname}${window.location.search}#${path}`);\n }\n\n const getCurrentHash = () => window.location.hash.slice(1);\n\n /**\n * @param {string|{name:string,params?:Object, query?:Object }} target\n */\n this.push = function(target) {\n const { route, params, query, path } = this.resolve(target);\n if(path === getCurrentHash()) {\n return;\n }\n $history.splice($currentIndex + 1);\n $history.push({ route, params, query, path });\n $currentIndex++;\n setHash(path);\n };\n /**\n *\n * @param {string|{name:string,params?:Object, query?:Object }} target\n */\n this.replace = function(target) {\n const { route, params, query, path } = this.resolve(target);\n if(path === getCurrentHash()) {\n return;\n }\n $history[$currentIndex] = { route, params, query, path };\n };\n this.forward = function() {\n return canGoForward() && go(1);\n };\n this.back = function() {\n return canGoBack() && go(-1);\n };\n\n /**\n * @param {string} defaultPath\n */\n this.init = function(defaultPath) {\n window.addEventListener('hashchange', () => {\n const { route, params, query, path } = this.resolve(getCurrentHash());\n this.handleRouteChange(route, params, query, path);\n });\n const { route, params, query, path } = this.resolve(defaultPath || getCurrentHash());\n $history.push({ route, params, query, path });\n $currentIndex = 0;\n this.handleRouteChange(route, params, query, path);\n }\n};","import RouterError from '../../errors/RouterError';\nimport DebugManager from \"../../utils/debug-manager.js\";\n\nexport default function HistoryRouter() {\n\n /**\n *\n * @param {string|{name:string,params?:Object, query?:Object }} target\n */\n this.push = function(target) {\n try {\n const { route, path, params, query } = this.resolve(target);\n if(window.history.state && window.history.state.path === path) {\n return;\n }\n window.history.pushState({ name: route.name(), params, path}, route.name() || path , path);\n this.handleRouteChange(route, params, query, path);\n } catch (e) {\n DebugManager.error('HistoryRouter', 'Error in pushState', e);\n }\n };\n /**\n *\n * @param {string|{name:string,params?:Object, query?:Object }} target\n */\n this.replace = function(target) {\n const { route, path, params } = this.resolve(target);\n try {\n window.history.replaceState({ name: route.name(), params, path}, route.name() || path , path);\n this.handleRouteChange(route, params, {}, path);\n } catch(e) {\n DebugManager.error('HistoryRouter', 'Error in replaceState', e);\n }\n };\n this.forward = function() {\n window.history.forward();\n };\n\n this.back = function() {\n window.history.back();\n };\n\n /**\n * @param {string} defaultPath\n */\n this.init = function(defaultPath) {\n window.addEventListener('popstate', (event) => {\n try {\n if(!event.state || !event.state.path) {\n return;\n }\n const statePath = event.state.path;\n const {route, params, query, path} = this.resolve(statePath);\n if(!route) {\n return;\n }\n this.handleRouteChange(route, params, query, path);\n } catch(e) {\n DebugManager.error('HistoryRouter', 'Error in popstate event', e);\n }\n });\n const { route, params, query, path } = this.resolve(defaultPath || (window.location.pathname+window.location.search));\n this.handleRouteChange(route, params, query, path);\n }\n\n};","\nexport default function MemoryRouter() {\n const $history = [];\n let $currentIndex = 0;\n\n /**\n *\n * @param {number} delta\n */\n const go = (delta) => {\n const index = $currentIndex + delta;\n if(!$history[index]) {\n return;\n }\n $currentIndex = index;\n const { route, params, query, path } = $history[index];\n this.handleRouteChange(route, params, query, path);\n };\n\n const canGoBack = function() {\n return $currentIndex > 0;\n };\n const canGoForward = function() {\n return $currentIndex < $history.length - 1;\n };\n\n /**\n *\n * @param {string|{name:string,params?:Object, query?:Object }} target\n */\n this.push = function(target) {\n const { route, params, query, path} = this.resolve(target);\n if($history[$currentIndex] && $history[$currentIndex].path === path) {\n return;\n }\n $history.splice($currentIndex + 1);\n $history.push({ route, params, query, path });\n $currentIndex++;\n this.handleRouteChange(route, params, query, path);\n };\n\n /**\n *\n * @param {string|{name:string,params?:Object, query?:Object }} target\n */\n this.replace = function(target) {\n const { route, params, query, path} = this.resolve(target);\n $history[$currentIndex] = { route, params, query, path };\n this.handleRouteChange(route, params, query, path);\n };\n\n this.forward = function() {\n return canGoForward() && go(1);\n };\n\n this.back = function() {\n return canGoBack() && go(-1);\n };\n\n /**\n * @param {string} defaultPath\n */\n this.init = function(defaultPath) {\n const currentPath = defaultPath || (window.location.pathname + window.location.search);\n const { route, params, query, path } = this.resolve(currentPath);\n $history.push({ route, params, query, path });\n $currentIndex = 0;\n\n this.handleRouteChange(route, params, query, path);\n }\n};","/**\n *\n * @param {Router} router\n * @param {?HTMLElement} container\n */\nexport function RouterComponent(router, container) {\n\n const $cache = new Map();\n\n const updateContainer = function(node) {\n container.innerHTML = '';\n container.appendChild(node);\n };\n\n const handleCurrentRouterState = function(state) {\n if(!state.route) {\n return;\n }\n const { route, params, query, path } = state;\n if($cache.has(path)) {\n const cacheNode = $cache.get(path);\n updateContainer(cacheNode);\n return;\n }\n const Component = route.component();\n const node = Component({ params, query });\n $cache.set(path, node);\n updateContainer(node);\n };\n\n router.subscribe(handleCurrentRouterState);\n\n handleCurrentRouterState(router.currentState());\n return container;\n}","import {Route} from \"./Route.js\";\nimport Validator from \"../utils/validator.js\";\nimport RouterError from \"../errors/RouterError.js\";\nimport {RouteGroupHelper} from \"./RouteGroupHelper.js\";\nimport {trim} from \"../utils/helpers.js\";\nimport HashRouter from \"./modes/HashRouter.js\";\nimport HistoryRouter from \"./modes/HistoryRouter.js\";\nimport MemoryRouter from \"./modes/MemoryRouter.js\";\nimport DebugManager from \"../utils/debug-manager.js\";\nimport {RouterComponent} from \"./RouterComponent.js\";\n\nexport const DEFAULT_ROUTER_NAME = 'default';\n\n/**\n *\n * @param {{mode: 'memory'|'history'|'hash'}} $options\n * @constructor\n */\nexport default function Router($options = {}) {\n\n /** @type {Route[]} */\n const $routes = [];\n /** @type {{[string]: Route}} */\n const $routesByName = {};\n const $groupTree = [];\n const $listeners = [];\n const $currentState = { route: null, params: null, query: null, path: null, hash: null };\n\n if($options.mode === 'hash') {\n HashRouter.apply(this, []);\n } else if($options.mode === 'history') {\n HistoryRouter.apply(this, []);\n } else if($options.mode === 'memory') {\n MemoryRouter.apply(this, []);\n } else {\n throw new RouterError('Invalid router mode '+$options.mode);\n }\n\n const trigger = function(request, next) {\n for(const listener of $listeners) {\n try {\n listener(request);\n next && next(request);\n } catch (e) {\n DebugManager.warn('Route Listener', 'Error in listener:', e);\n }\n }\n }\n\n this.routes = () => [...$routes];\n this.currentState = () => ({ ...$currentState });\n\n /**\n *\n * @param {string} path\n * @param {Function} component\n * @param {{name:?string, middlewares:Function[], shouldRebuild:Boolean, with: Object }} options\n * @returns {this}\n */\n this.add = function(path, component, options) {\n const route = new Route(RouteGroupHelper.fullPath($groupTree, path), component, {\n ...options,\n middlewares: RouteGroupHelper.fullMiddlewares($groupTree, options?.middlewares || []),\n name: options?.name ? RouteGroupHelper.fullName($groupTree, options.name) : null,\n });\n $routes.push(route);\n if(route.name()) {\n $routesByName[route.name()] = route;\n }\n return this;\n };\n\n /**\n *\n * @param {string} suffix\n * @param {{ middlewares: Function[], name: string}} options\n * @param {Function} callback\n * @returns {this}\n */\n this.group = function(suffix, options, callback) {\n if(!Validator.isFunction(callback)) {\n throw new RouterError('Callback must be a function');\n }\n $groupTree.push({suffix, options});\n callback();\n $groupTree.pop();\n return this;\n };\n\n /**\n *\n * @param {string} name\n * @param {Object}params\n * @param {Object} query\n * @returns {*}\n */\n this.generateUrl = function(name, params = {}, query = {}) {\n const route = $routesByName[name];\n if(!route) {\n throw new RouterError(`Route not found for name: ${name}`);\n }\n return route.url({ params, query });\n };\n\n /**\n *\n * @param {string|{name:string,params?:Object, query?:Object }} target\n * @returns {{route:Route, params:Object, query:Object, path:string}}\n */\n this.resolve = function(target) {\n if(Validator.isJson(target)) {\n const route = $routesByName[target.name];\n if(!route) {\n throw new RouterError(`Route not found for name: ${target.name}`);\n }\n return {\n route,\n params: target.params,\n query: target.query,\n path: route.url({ ...target })\n };\n }\n\n const [urlPath, urlQuery] = target.split('?');\n const path = '/'+trim(urlPath, '/');\n let routeFound = null, params;\n\n for(const route of $routes) {\n params = route.match(path);\n if(params) {\n routeFound = route;\n break;\n }\n }\n if(!routeFound) {\n throw new RouterError(`Route not found for url: ${urlPath}`);\n }\n const queryParams = {};\n if(urlQuery) {\n const queries = new URLSearchParams(urlQuery).entries();\n for (const [key, value] of queries) {\n queryParams[key] = value;\n }\n }\n\n return { route: routeFound, params, query: queryParams, path: target };\n };\n\n /**\n *\n * @param {Function} listener\n * @returns {(function(): void)|*}\n */\n this.subscribe = function(listener) {\n if(!Validator.isFunction(listener)) {\n throw new RouterError('Listener must be a function');\n }\n $listeners.push(listener);\n return () => {\n $listeners.splice($listeners.indexOf(listener), 1);\n };\n };\n\n /**\n *\n * @param {Route} route\n * @param {Object} params\n * @param {Object} query\n * @param {string} path\n */\n this.handleRouteChange = function(route, params, query, path) {\n $currentState.route = route;\n $currentState.params = params;\n $currentState.query = query;\n $currentState.path = path;\n\n const middlewares = [...route.middlewares(), trigger];\n let currentIndex = 0;\n const request = { ...$currentState };\n\n const next = (editableRequest) => {\n currentIndex++;\n if(currentIndex >= middlewares.length) {\n return;\n }\n return middlewares[currentIndex](editableRequest || request, next);\n };\n return middlewares[currentIndex](request, next);\n };\n\n}\n\nRouter.routers = {};\n\n/**\n *\n * @param {{mode: 'memory'|'history'|'hash', name?:string, entry?: string}} options\n * @param {Function} callback\n * @param {Element} container\n */\nRouter.create = function(options, callback) {\n if(!Validator.isFunction(callback)) {\n DebugManager.error('Router', 'Callback must be a function', e);\n throw new RouterError('Callback must be a function');\n }\n const router = new Router(options);\n Router.routers[options.name || DEFAULT_ROUTER_NAME] = router;\n callback(router);\n\n router.init(options.entry);\n\n router.mount = function(container) {\n if(Validator.isString(container)) {\n const mountContainer = document.querySelector(container);\n if(!mountContainer) {\n throw new RouterError(`Container not found for selector: ${container}`);\n }\n container = mountContainer;\n } else if(!Validator.isElement(container)) {\n throw new RouterError('Container must be a string or an Element');\n }\n\n return RouterComponent(router, container);\n };\n\n return router;\n};\n\nRouter.get = function(name) {\n const router = Router.routers[name || DEFAULT_ROUTER_NAME];\n if(!router) {\n throw new RouterError(`Router not found for name: ${name}`);\n }\n return router;\n};\n\nRouter.push = function(target, name = null) {\n return Router.get(name).push(target);\n};\n\nRouter.replace = function(target, name = null) {\n return Router.get(name).replace(target);\n};\n\nRouter.forward = function(name = null) {\n return Router.get(name).forward();\n};\nRouter.back = function(name = null) {\n return Router.get(name).back();\n};\n","import Validator from \"../utils/validator.js\";\nimport {Link as NativeLink} from \"../../elements.js\";\nimport Router, {DEFAULT_ROUTER_NAME} from \"./Router.js\";\nimport RouterError from \"../errors/RouterError.js\";\n\n\nexport function Link(options, children){\n const { to, href, ...attributes } = options;\n const target = to || href;\n if(Validator.isString(target)) {\n const router = Router.get();\n return NativeLink({ ...attributes, href: target}, children).nd.onPreventClick(() => {\n router.push(target);\n });\n }\n const routerName = target.router || DEFAULT_ROUTER_NAME;\n const router = Router.get(routerName);\n if(!router) {\n throw new RouterError('Router not found \"'+routerName+'\" for link \"'+target.name+'\"');\n }\n const url = router.generateUrl(target.name, target.params, target.query);\n return NativeLink({ ...attributes, href: url }, children).nd.onPreventClick(() => {\n router.push(url);\n });\n}\n\nLink.blank = function(attributes, children){\n return NativeLink({ ...attributes, target: '_blank'}, children);\n};"],"names":["DebugManager","Link","NativeLink"],"mappings":"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"}